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()
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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(.+)=(.+)$')
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
)