Newer
Older
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_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(.+)=(.+)$')
David Hendriks
committed
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',
David Hendriks
committed
author='Jeff Andrews and Robert Izzard and David Hendriks',
author_email='andrews@physics.uoc.gr and r.izzard@surrey.ac.uk and rob.izzard@gmail.com and dhendriks93@gmail.com',
license='',
ext_modules=[Extension("binary_c",
["binary_c_python.c"],
David Hendriks
committed
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
)