from distutils.core import setup, Extension import os import subprocess import re import sys # binary_c must be installed. binary_c_config = os.environ['BINARY_C']+'/binary_c-config' binary_c_incdirs = subprocess.run([binary_c_config,'incdirs_list'],stdout=subprocess.PIPE).stdout.decode('utf-8').split() binary_c_libdirs = subprocess.run([binary_c_config,'libdirs_list'],stdout=subprocess.PIPE).stdout.decode('utf-8').split() binary_c_cflags = subprocess.run([binary_c_config,'cflags'],stdout=subprocess.PIPE).stdout.decode('utf-8').split() # binary_c_cflags.remove('-fvisibility=hidden') binary_c_libs = subprocess.run([binary_c_config,'libs_list'],stdout=subprocess.PIPE).stdout.decode('utf-8').split() # create list of tuples of defined macros binary_c_define_macros = [] defines = subprocess.run([binary_c_config,'define_macros'],stdout=subprocess.PIPE).stdout.decode('utf-8').split() lone = re.compile('^-D(.+)$') partner = re.compile('^-D(.+)=(.+)$') for x in defines: y = partner.match(x) if(y): binary_c_define_macros.extend([(y.group(1),y.group(2))]) else: y = lone.match(x) if(y): binary_c_define_macros.extend([(y.group(1),None)]) # add API header file API_h = os.environ['BINARY_C'] + '/src/API/binary_c_API.h' binary_c_define_macros.extend([('BINARY_C_API_H',API_h)]) setup( name='binary_c', version='1.0', description='This is a python API for binary_c by Rob Izzard and collaborators', author='Jeff Andrews and Robert Izzard', author_email='andrews@physics.uoc.gr and r.izzard@surrey.ac.uk and rob.izzard@gmail.com', license='', ext_modules=[Extension("binary_c", ["binary_c_python.c"], libraries = ['binary_c']+binary_c_libs+['binary_c_api'], include_dirs = [os.environ['BINARY_C']+'/src',os.environ['BINARY_C']+'/src/API']+binary_c_incdirs, library_dirs = [os.environ['BINARY_C']+'/src', './'] + binary_c_libdirs, runtime_library_dirs = [os.environ['BINARY_C']+'/src', './']+binary_c_libdirs, define_macros = [] + binary_c_define_macros, extra_objects = [], extra_compile_args = [], )] # binary_c must be loaded )