Skip to content
Snippets Groups Projects
setup.py 5.11 KiB
Newer Older
from distutils.core import setup, Extension
# from setuptools import find_packages
# from setuptools import setup, find_packages, Extension
GSL_DIR = os.getenv("GSL_DIR", None)
David Hendriks's avatar
David Hendriks committed
if not GSL_DIR:
        "Warning: GSL_DIR is not set, this might lead to errors along the installation if\
        there is no other version of GSL in the include dirs"
David Hendriks's avatar
David Hendriks committed

# TODO: write code to know exact parent directory of this file.
CWD = os.getcwd()
David Hendriks's avatar
David Hendriks committed
############################################################
# Getting information from binary_c
############################################################

BINARY_C_CONFIG = os.environ["BINARY_C"] + "/binary_c-config"
BINARY_C_INCDIRS = (
    subprocess.run([BINARY_C_CONFIG, "incdirs_list"], stdout=subprocess.PIPE, check=True)
    .stdout.decode("utf-8")
    .split()
)
BINARY_C_LIBDIRS = (
    subprocess.run([BINARY_C_CONFIG, "libdirs_list"], stdout=subprocess.PIPE, check=True)
    .stdout.decode("utf-8")
    .split()
)
BINARY_C_CFLAGS = (
    subprocess.run([BINARY_C_CONFIG, "cflags"], stdout=subprocess.PIPE, check=True)
    .stdout.decode("utf-8")
    .split()
)
# BINARY_C_CFLAGS.remove('-fvisibility=hidden')
BINARY_C_LIBS = (
    subprocess.run([BINARY_C_CONFIG, "libs_list"], stdout=subprocess.PIPE, check=True)
    .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, check=True)
    .stdout.decode("utf-8")
    .split()
)
LONE = re.compile("^-D(.+)$")
PARTNER = re.compile("^-D(.+)=(.+)$")
        BINARY_C_DEFINE_MACROS.extend([(y.group(1), y.group(2))])
            BINARY_C_DEFINE_MACROS.extend([(y.group(1), None)])
API_h = os.environ["BINARY_C"] + "/src/API/binary_c_API.h"
BINARY_C_DEFINE_MACROS.extend([("BINARY_C_API_H", API_h)])
David Hendriks's avatar
David Hendriks committed
############################################################
# Setting all directories and LIBRARIES to their final values
David Hendriks's avatar
David Hendriks committed
############################################################
    [os.environ["BINARY_C"] + "/src", os.environ["BINARY_C"] + "/src/API", "include",]
    + [os.path.join(GSL_DIR, "include")]
    if GSL_DIR
    else []
)
David Hendriks's avatar
David Hendriks committed

LIBRARIES = ["binary_c"] + BINARY_C_LIBS + ["binary_c_api"]
David Hendriks's avatar
David Hendriks committed

    os.environ["BINARY_C"] + "/src",
    "./",
    os.path.join(CWD, "lib/"),
    # os.path.join(CWD, "binarycpython/core/"),
David Hendriks's avatar
David Hendriks committed

    os.environ["BINARY_C"] + "/src",
    "./",
    os.path.join(CWD, "lib/"),
    # os.path.join(CWD, "binarycpython/core/"),
David Hendriks's avatar
David Hendriks committed

David Hendriks's avatar
David Hendriks committed
# print('\n')
# print("BINARY_C_CONFIG: ", str(BINARY_C_CONFIG) + "\n")
# print("incdirs: ", str(INCLUDE_DIRS) + "\n")
# print("BINARY_C_LIBS: ", str(BINARY_C_LIBS) + "\n")
# print("LIBRARIES: ", str(LIBRARIES) + "\n")
# print("LIBRARY_DIRS: ", str(LIBRARY_DIRS) + "\n")
# print("RUNTIME_LIBRARY_DIRS: ", str(RUNTIME_LIBRARY_DIRS) + "\n")
# print("BINARY_C_CFLAGS: ", str(BINARY_C_CFLAGS) + "\n")
David Hendriks's avatar
David Hendriks committed
# print("API_h: ", str(API_h) + "\n")
# print("macros: ", str(BINARY_C_DEFINE_MACROS) + "\n")
David Hendriks's avatar
David Hendriks committed
# print('\n')
David Hendriks's avatar
David Hendriks committed

David Hendriks's avatar
David Hendriks committed
############################################################
# Making the extension function
############################################################
# TODO: fix that this one also compiles the code itself

David Hendriks's avatar
David Hendriks committed
    # name="binarycpython.core.binary_c",
    name="binary_c_python_api",
    sources=["src/binary_c_python.c"],
David Hendriks's avatar
David Hendriks committed
    include_dirs=INCLUDE_DIRS,
    libraries=LIBRARIES,
    library_dirs=LIBRARY_DIRS,
    runtime_library_dirs=RUNTIME_LIBRARY_DIRS, 
    define_macros=[] + BINARY_C_DEFINE_MACROS,
    extra_objects=[],
    extra_compile_args=[],
def readme():
    """Opens readme file and returns content"""
    with open("README.md") as file:
        return file.read()
David Hendriks's avatar
David Hendriks committed
############################################################
# Making the extension function
############################################################
David Hendriks's avatar
David Hendriks committed
    version="0.2",
    description="This is a python API for binary_c by David Hendriks, Rob Izzard and collaborators.\
        Based on the initial set up by Jeff andrews",
David Hendriks's avatar
David Hendriks committed
    author=" David Hendriks, Robert Izzard and Jeff Andrews",
    author_email="davidhendriks93@gmail.com/d.hendriks@surrey.ac.uk,\
        r.izzard@surrey.ac.uk/rob.izzard@gmail.com andrews@physics.uoc.gr",
    long_description=readme(),
    url="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python",
    package_dir={
        "binarycpython": "binarycpython",
        "binarycpython.utils": "binarycpython/utils",
        "binarycpython",
        "binarycpython.utils",
    # package_data={
    #     'binarycpython.core': ['libbinary_c_api.so'],
    # },
    ext_modules=[BINARY_C_PYTHON_API_MODULE],  # binary_c must be loaded