You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bddisasm/bindings/pybddisasm/setup.py

100 lines
3.3 KiB

#!/usr/bin/env python
#
# Copyright (c) 2020 Bitdefender
# SPDX-License-Identifier: Apache-2.0
#
import os
import sys
import re
from setuptools import find_packages, setup, Command, Extension, Distribution
from codecs import open
VERSION = (0, 1, 3)
LIBRARY_VERSION = (1, 34, 7)
LIBRARY_INSTRUX_SIZE = 864
packages = ['pybddisasm']
requires = ['setuptools']
here = os.path.abspath(os.path.dirname(__file__))
def _check_library_version():
version_header = '../../inc/version.h'
with open(version_header, 'r') as file:
data = file.read()
major = re.search(r'(?<=\bDISASM_VERSION_MAJOR).*(\d+)', data)
if not major:
print('error: Major version not found!')
sys.exit(1)
minor = re.search(r'(?<=\bDISASM_VERSION_MINOR).*(\d+)', data)
if not minor:
print('error: Minor version not found!')
sys.exit(1)
revision = re.search(r'(?<=\bDISASM_VERSION_REVISION).*(\d+)', data)
if not revision:
print('error: Revision version not found!')
sys.exit(1)
major = major.group(0).strip()
minor = minor.group(0).strip()
revision = revision.group(0).strip()
if int(major) != LIBRARY_VERSION[0] or int(minor) != LIBRARY_VERSION[1] or int(revision) != LIBRARY_VERSION[2]:
print('error: The version of the library is not compatible with the pybddisasm!')
print('error: Library : %s.%s.%s - pybddisasm : %d.%d.%d' % (major, minor, revision, LIBRARY_VERSION[0],
LIBRARY_VERSION[1], LIBRARY_VERSION[2]))
sys.exit(1)
_check_library_version()
with open('README.md', 'r', 'utf-8') as f:
readme = f.read()
class BinaryDistribution(Distribution):
def has_ext_modules(arg):
return True
def is_pure(self):
return False
setup(
name="pybddisasm",
version='.'.join(map(str, VERSION)),
author="Bitdefender",
description="The Bitdefender disassembler Python wrapper",
long_description = readme,
long_description_content_type = "text/markdown",
url = "https://github.com/bitdefender/bddisasm",
packages=packages,
license="Apache Software License",
package_data={'': ['LICENSE', 'NOTICE'], 'pybddisasm': ['*.pem']},
package_dir={'pybddisasm': 'pybddisasm'},
platforms = ["Windows", "Linux"],
include_package_data=True,
python_requires=">=3.5",
setup_requires=['wheel'],
install_requires=requires,
zip_safe=False,
classifiers=[
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'License :: OSI Approved :: Apache Software License',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux'
],
ext_modules = [Extension("_pybddisasm",
extra_compile_args = ["-march=westmere"],
sources = ["_pybddisasm/_pybddisasm.c", "_pybddisasm/pybddisasm.c"],
define_macros = [('AMD64', None), ('LIBRARY_INSTRUX_SIZE', LIBRARY_INSTRUX_SIZE)],
include_dirs = ['../../inc'],
libraries = ['bddisasm'],
library_dirs = ['/usr/local/lib', '../../build', '../../bin/x64/Release'])],
distclass=BinaryDistribution
)