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.
		
		
		
		
		
			
		
			
				
					
					
						
							145 lines
						
					
					
						
							4.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							145 lines
						
					
					
						
							4.7 KiB
						
					
					
				| #!/usr/bin/env python | |
| from setuptools import setup | |
| from distutils.core import Extension | |
| from distutils.command.build_ext import 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')) | |
| 
 | |
| # Configuration shared between external modules follows | |
| 
 | |
| # To help along, if storm and/or pybind is not system installed, retrieve from storm distribution | |
| include_dirs = ['.', 'src', 'resources/pybind11/include/'] | |
| # Add more include dirs | |
| # TODO handle by cmake | |
| include_dirs.extend(['../build/include/', '../resources/3rdparty/sylvan/src/', '../resources/3rdparty/exprtk/', '../resources/3rdparty/gmm-5.0/include/']) | |
| carl_dir = "/Users/mvolk/develop/carl/src/" | |
| include_dirs.append(carl_dir) | |
| boost_dir = '/usr/local/include/' | |
| include_dirs.append(boost_dir) | |
| cudd_dirs = ['../resources/3rdparty/cudd-3.0.0/cplusplus/', '../resources/3rdparty/cudd-3.0.0/mtr/', '../resources/3rdparty/cudd-3.0.0/cudd/'] | |
| include_dirs.extend(cudd_dirs) | |
| log4cplus_dirs = ['../resources/3rdparty/log4cplus-1.1.3-rc1/include/', '../build/resources/3rdparty/log4cplus-1.1.3-rc1/include/'] | |
| include_dirs.extend(log4cplus_dirs) | |
| 
 | |
| local_storm_path = os.path.join(PROJECT_DIR, '..') | |
| if os.path.exists(local_storm_path): | |
|     include_dirs.append(local_storm_path) | |
| 
 | |
| # Like includes, also add local path for library, assuming made in 'build' | |
| library_dirs = [] | |
| local_storm_lib_path = os.path.join(PROJECT_DIR, '..', 'build/src') | |
| if os.path.exists(local_storm_lib_path): | |
|     library_dirs.append(local_storm_lib_path) | |
| 
 | |
| libraries = ['storm'] | |
| extra_compile_args = ['-std=c++11'] | |
| define_macros = [] | |
| 
 | |
| extra_link_args = [] | |
| if platform.system() == 'Darwin': | |
|     extra_link_args.append('-Wl,-rpath,'+library_dirs[0]) | |
| 
 | |
| 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 | |
| ) | |
| 
 | |
| class stormpy_build_ext(build_ext): | |
|     """Extend build_ext to provide CLN toggle option | |
|     """ | |
|     user_options = build_ext.user_options + [ | |
|         ('use-cln', None, | |
|          "use cln numbers instead of gmpxx") | |
|         ] | |
| 
 | |
|     def __init__(self, *args, **kwargs): | |
|         build_ext.__init__(self, *args, **kwargs) | |
| 
 | |
|     def initialize_options (self): | |
|         build_ext.initialize_options(self) | |
|         self.use_cln = None | |
| 
 | |
|     def finalize_options(self): | |
|         build_ext.finalize_options(self) | |
| 
 | |
|         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 library_dirs: | |
|             # Makes local storm library lookup that much easier | |
|             self.rpath += library_dirs | |
| 
 | |
| 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'], | |
|       package_dir={'':'lib'}, | |
|       ext_package='stormpy', | |
|       ext_modules=[ext_core, ext_info, ext_expressions, ext_logic | |
|                    ], | |
|       cmdclass={ | |
|         'build_ext': stormpy_build_ext, | |
|       } | |
| )
 |