def configuration(parent_package='', top_path=None): """Configure all packages that need to be built.""" config = Configuration('', parent_package, top_path) F95FLAGS = get_compiler_flags() kwargs = {} kwargs['extra_compile_args'] = F95FLAGS kwargs['f2py_options'] = ['--quiet'] # numpy.distutils.fcompiler.FCompiler doesn't support .F95 extension compiler = FCompiler(get_default_fcompiler()) compiler.src_extensions.append('.F95') compiler.language_map['.F95'] = 'f90' # collect all Fortran sources files = os.listdir('src') exclude_sources = ['PlanetsConstants.f95', 'PythonWrapper.f95'] sources = [ os.path.join('src', file) for file in files if file.lower().endswith('.f95') and file not in exclude_sources ] # (from http://stackoverflow.com/questions/14320220/ # testing-python-c-libraries-get-build-path)): build_lib_dir = "{dirname}.{platform}-{version[0]}.{version[1]}" dirparams = { 'dirname': 'temp', 'platform': sysconfig.get_platform(), 'version': sys.version_info } libdir = os.path.join('build', build_lib_dir.format(**dirparams)) print('searching SHTOOLS in:', libdir) # Fortran compilation config.add_library('SHTOOLS', sources=sources, **kwargs) # SHTOOLS config.add_extension( 'pyshtools._SHTOOLS', include_dirs=[libdir], library_dirs=[libdir], libraries=['SHTOOLS', 'fftw3', 'm', 'lapack', 'blas'], sources=['src/pyshtools.pyf', 'src/PythonWrapper.f95'], **kwargs) # constants config.add_extension('pyshtools._constant', sources=['src/PlanetsConstants.f95'], **kwargs) return config
def configuration(parent_package='', top_path=None): """Configure all packages that need to be built.""" config = Configuration('', parent_package, top_path) kwargs = {'libraries': [], 'include_dirs': [], 'library_dirs': []} # numpy.distutils.fcompiler.FCompiler doesn't support .F95 extension compiler = FCompiler(get_default_fcompiler()) compiler.src_extensions.append('.F95') compiler.language_map['.F95'] = 'f90' # collect all Fortran sources files = os.listdir('src') exclude_sources = ['PlanetsConstants.f95', 'PythonWrapper.f95'] sources = [ os.path.join('src', file) for file in files if file.lower().endswith(('.f95', '.c')) and file not in exclude_sources ] # (from http://stackoverflow.com/questions/14320220/ # testing-python-c-libraries-get-build-path)): build_lib_dir = "{dirname}.{platform}-{version[0]}.{version[1]}" dirparams = { 'dirname': 'temp', 'platform': sysconfig.get_platform(), 'version': sys.version_info } libdir = os.path.join('build', build_lib_dir.format(**dirparams)) print('searching SHTOOLS in:', libdir) # Fortran compilation config.add_library('SHTOOLS', sources=sources) # SHTOOLS kwargs['libraries'].extend(['SHTOOLS']) kwargs['include_dirs'].extend([libdir]) kwargs['library_dirs'].extend([libdir]) kwargs['f2py_options'] = ['--quiet'] # FFTW info fftw_info = get_info('fftw', notfound_action=2) dict_append(kwargs, **fftw_info) if sys.platform != 'win32': kwargs['libraries'].extend(['m']) # BLAS / Lapack info lapack_info = get_info('lapack_opt', notfound_action=2) blas_info = get_info('blas_opt', notfound_action=2) dict_append(kwargs, **blas_info) dict_append(kwargs, **lapack_info) if sys.platform == 'win32': kwargs['runtime_library_dirs'] = [] config.add_extension( 'pyshtools._SHTOOLS', sources=['src/pyshtools.pyf', 'src/PythonWrapper.f95'], **kwargs) return config