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.
142 lines
4.4 KiB
142 lines
4.4 KiB
#!/usr/bin/env python
|
|
from setuptools import setup
|
|
from distutils.core import Extension
|
|
from distutils.command.build_ext import build_ext as orig_build_ext
|
|
import os.path
|
|
import platform
|
|
from glob import glob
|
|
|
|
PROJECT_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
|
|
|
|
# Glob source files for modules
|
|
core_sources = glob(os.path.join('src', 'core', '*.cpp'))
|
|
expressions_sources = glob(os.path.join('src', 'expressions', '*.cpp'))
|
|
logic_sources = glob(os.path.join('src', 'logic', '*.cpp'))
|
|
storage_sources = glob(os.path.join('src', 'storage', '*.cpp'))
|
|
|
|
# Configuration shared between external modules follows
|
|
include_dirs = [PROJECT_DIR, os.path.join(PROJECT_DIR, 'src'),
|
|
os.path.join(PROJECT_DIR, 'resources', 'pybind11', 'include')]
|
|
libraries = ['storm']
|
|
library_dirs = []
|
|
extra_compile_args = []
|
|
define_macros = []
|
|
extra_link_args = []
|
|
|
|
ext_core = Extension(
|
|
name='core',
|
|
sources=['src/mod_core.cpp'] + core_sources,
|
|
include_dirs=include_dirs,
|
|
libraries=libraries,
|
|
library_dirs=library_dirs,
|
|
extra_compile_args=extra_compile_args,
|
|
define_macros=define_macros,
|
|
extra_link_args=extra_link_args
|
|
)
|
|
|
|
ext_info = Extension(
|
|
name='info.info',
|
|
sources=['src/mod_info.cpp'],
|
|
include_dirs=include_dirs,
|
|
libraries=libraries,
|
|
library_dirs=library_dirs,
|
|
extra_compile_args=extra_compile_args,
|
|
define_macros=define_macros,
|
|
extra_link_args=extra_link_args
|
|
)
|
|
|
|
ext_expressions = Extension(
|
|
name='expressions.expressions',
|
|
sources=['src/mod_expressions.cpp'] + expressions_sources,
|
|
include_dirs=include_dirs,
|
|
libraries=libraries,
|
|
library_dirs=library_dirs,
|
|
extra_compile_args=extra_compile_args,
|
|
define_macros=define_macros,
|
|
extra_link_args=extra_link_args
|
|
)
|
|
|
|
ext_logic = Extension(
|
|
name='logic.logic',
|
|
sources=['src/mod_logic.cpp'] + logic_sources,
|
|
include_dirs=include_dirs,
|
|
libraries=libraries,
|
|
library_dirs=library_dirs,
|
|
extra_compile_args=extra_compile_args,
|
|
define_macros=define_macros,
|
|
extra_link_args=extra_link_args
|
|
)
|
|
|
|
ext_storage = Extension(
|
|
name='storage.storage',
|
|
sources=['src/mod_storage.cpp'] + storage_sources,
|
|
include_dirs=include_dirs,
|
|
libraries=libraries,
|
|
library_dirs=library_dirs,
|
|
extra_compile_args=extra_compile_args,
|
|
define_macros=define_macros,
|
|
extra_link_args=extra_link_args
|
|
)
|
|
|
|
class build_ext(orig_build_ext):
|
|
"""Extend build_ext to provide CLN toggle option
|
|
"""
|
|
user_options = orig_build_ext.user_options + [
|
|
('use-cln', None,
|
|
"use cln numbers instead of gmpxx"),
|
|
('compile-flags', None,
|
|
"compile flags for C++"),
|
|
]
|
|
|
|
boolean_options = orig_build_ext.boolean_options + ['use-cln']
|
|
|
|
def initialize_options (self):
|
|
super(build_ext, self).initialize_options()
|
|
self.use_cln = None
|
|
self.compile_flags = None
|
|
|
|
def finalize_options(self):
|
|
super(build_ext, self).finalize_options()
|
|
|
|
if self.use_cln:
|
|
self.libraries += ['cln']
|
|
if not self.define:
|
|
self.define = []
|
|
else:
|
|
self.define = list(self.define)
|
|
self.define += [('STORMPY_USE_CLN', 1)]
|
|
else:
|
|
self.libraries += ['gmp', 'gmpxx']
|
|
if not self.undef:
|
|
self.undef = []
|
|
self.undef += ['STORMPY_USE_CLN']
|
|
|
|
if self.library_dirs:
|
|
# Makes local storm library lookup that much easier
|
|
self.rpath += self.library_dirs
|
|
|
|
if platform.system() == 'Darwin' and len(self.rpath) > 0:
|
|
for e in self.extensions:
|
|
# If rpath is used on OS X, set this option
|
|
e.extra_link_args.append('-Wl,-rpath,'+self.rpath[0])
|
|
|
|
for e in self.extensions:
|
|
e.extra_compile_args += self.compile_flags.split()
|
|
|
|
setup(name="stormpy",
|
|
version="0.9",
|
|
author="M. Volk",
|
|
author_email="matthias.volk@cs.rwth-aachen.de",
|
|
maintainer="S. Junges",
|
|
maintainer_email="sebastian.junges@cs.rwth-aachen.de",
|
|
url="http://moves.rwth-aachen.de",
|
|
description="stormpy - Python Bindings for Storm",
|
|
packages=['stormpy', 'stormpy.info', 'stormpy.expressions', 'stormpy.logic', 'stormpy.storage'],
|
|
package_dir={'':'lib'},
|
|
ext_package='stormpy',
|
|
ext_modules=[ext_core, ext_info, ext_expressions, ext_logic, ext_storage
|
|
],
|
|
cmdclass={
|
|
'build_ext': build_ext,
|
|
}
|
|
)
|