2016-03-27 12:56:54 +03:00
from setuptools import setup #, Extension
2019-02-18 14:42:44 +02:00
from Cython . Build import cythonize , build_ext
2016-03-27 12:56:54 +03:00
from distutils . extension import Extension
# setuptools DWIM monkey-patch madness
# http://mail.python.org/pipermail/distutils-sig/2007-September/thread.html#8204
#import sys
#if 'setuptools.extension' in sys.modules:
# m = sys.modules['setuptools.extension']
# m.Extension.__dict__ = m._Extension.__dict__
2017-04-19 17:43:24 +03:00
# TODO CHECK THIS OUT http://stackoverflow.com/questions/4056657/what-is-the-easiest-way-to-make-an-optional-c-extension-for-a-python-package
# also this: https://docs.python.org/2/extending/building.html
import os
print ( " You might want to add additional library path to LD_LIBRARY_PATH (especially if you are not using "
" GNU GSL in your system library path) and if import fails. " )
2017-05-03 08:32:06 +03:00
if ( " LD_LIBRARY_PATH " in os . environ ) :
2017-05-03 08:30:05 +03:00
print ( os . environ [ ' LD_LIBRARY_PATH ' ] . split ( ' : ' ) )
2017-04-19 17:43:24 +03:00
2016-03-27 12:56:54 +03:00
qpms_c = Extension ( ' qpms_c ' ,
2017-05-11 04:38:46 +03:00
sources = [ ' qpms/qpms_c.pyx ' , #'qpms/hexpoints_c.pyx',
' qpms/gaunt.c ' , #'qpms/gaunt.h','qpms/vectors.h','qpms/translations.h',
2017-04-19 17:43:24 +03:00
# FIXME http://stackoverflow.com/questions/4259170/python-setup-script-extensions-how-do-you-include-a-h-file
2019-02-22 08:22:56 +02:00
' qpms/translations.c ' ,
2019-02-26 00:40:41 +02:00
' qpms/symmetries.c ' ,
2019-03-03 02:30:12 +02:00
' qpms/wigner.c ' ,
' qpms/scatsystem.c ' ,
' qpms/vswf.c ' , # FIXME many things from vswf.c are not required by this module, but they have many dependencies (following in this list); maybe I want to move all the "basespec stuff"
2019-03-06 23:05:52 +02:00
' qpms/legendre.c ' ,
' qpms/tmatrix_io.c ' ,
' qpms/error.c ' ] ,
2018-05-15 14:37:05 +03:00
extra_compile_args = [ ' -std=c99 ' , ' -ggdb ' , ' -O0 ' ,
2017-05-03 08:30:05 +03:00
' -DQPMS_COMPILE_PYTHON_EXTENSIONS ' , # this is required
#'-DQPMS_USE_OMP',
2017-04-26 14:12:29 +03:00
' -DDISABLE_NDEBUG ' , # uncomment to enable assertions in the modules
2017-05-03 08:30:05 +03:00
#'-fopenmp',
2017-04-26 14:12:29 +03:00
] ,
2019-03-13 16:23:23 +02:00
libraries = [ ' gsl ' , ' lapacke ' , ' blas ' , ' gslcblas ' , #'omp'
2018-01-15 15:14:15 +02:00
# TODO resolve the problem with openblas (missing gotoblas symbol) and preferable use other blas library
2017-05-03 08:43:29 +03:00
] ,
2017-05-03 08:32:06 +03:00
runtime_library_dirs = os . environ [ ' LD_LIBRARY_PATH ' ] . split ( ' : ' ) if ' LD_LIBRARY_PATH ' in os . environ else [ ]
2017-04-19 17:43:24 +03:00
)
2016-03-27 12:56:54 +03:00
setup ( name = ' qpms ' ,
2019-03-13 16:23:23 +02:00
version = " 0.2.995 " ,
2016-03-27 12:56:54 +03:00
packages = [ ' qpms ' ] ,
2019-02-27 10:44:58 +02:00
setup_requires = [ ' cython>=0.28 ' , ] ,
2019-03-02 21:59:00 +02:00
install_requires = [ ' cython>=0.28 ' , ' quaternion ' , ' spherical_functions ' , ' scipy>=0.18.0 ' , ' sympy>=1.2 ' ] ,
2019-02-27 09:45:45 +02:00
dependency_links = [ ' https://github.com/moble/quaternion/archive/v2.0.tar.gz ' , ' https://github.com/moble/spherical_functions/archive/master.zip ' ] ,
2019-03-02 21:59:00 +02:00
ext_modules = cythonize ( [ qpms_c ] , include_path = [ ' qpms ' ] , gdb_debug = True ) ,
2016-03-27 12:56:54 +03:00
cmdclass = { ' build_ext ' : build_ext } ,
)