EVOLUTION-MANAGER
Edit File: setupscons.py
import os import sys import glob from os.path import join, basename from numpy.distutils import log from numscons import get_scons_build_dir def configuration(parent_package='',top_path=None): from numpy.distutils.misc_util import Configuration,dot_join from numpy.distutils.command.scons import get_scons_pkg_build_dir from numpy.distutils.system_info import get_info, default_lib_dirs config = Configuration('core',parent_package,top_path) local_dir = config.local_path header_dir = 'include/numpy' # this is relative to config.path_in_package config.add_subpackage('code_generators') # List of files to register to numpy.distutils dot_blas_src = [join('blasdot', '_dotblas.c'), join('blasdot', 'cblas.h')] api_definition = [join('code_generators', 'numpy_api_order.txt'), join('code_generators', 'ufunc_api_order.txt')] core_src = [join('src', basename(i)) for i in glob.glob(join(local_dir, 'src', '*.c'))] core_src += [join('src', basename(i)) for i in glob.glob(join(local_dir, 'src', '*.src'))] source_files = dot_blas_src + api_definition + core_src + \ [join(header_dir, 'numpyconfig.h.in')] # Add generated files to distutils... def add_config_header(): scons_build_dir = get_scons_build_dir() # XXX: I really have to think about how to communicate path info # between scons and distutils, and set the options at one single # location. target = join(get_scons_pkg_build_dir(config.name), 'config.h') incl_dir = os.path.dirname(target) if incl_dir not in config.numpy_include_dirs: config.numpy_include_dirs.append(incl_dir) def add_numpyconfig_header(): scons_build_dir = get_scons_build_dir() # XXX: I really have to think about how to communicate path info # between scons and distutils, and set the options at one single # location. target = join(get_scons_pkg_build_dir(config.name), 'include/numpy/numpyconfig.h') incl_dir = os.path.dirname(target) if incl_dir not in config.numpy_include_dirs: config.numpy_include_dirs.append(incl_dir) config.add_data_files((header_dir, target)) def add_array_api(): scons_build_dir = get_scons_build_dir() # XXX: I really have to think about how to communicate path info # between scons and distutils, and set the options at one single # location. h_file = join(get_scons_pkg_build_dir(config.name), 'include/numpy/__multiarray_api.h') t_file = join(get_scons_pkg_build_dir(config.name), 'include/numpy/multiarray_api.txt') config.add_data_files((header_dir, h_file), (header_dir, t_file)) def add_ufunc_api(): scons_build_dir = get_scons_build_dir() # XXX: I really have to think about how to communicate path info # between scons and distutils, and set the options at one single # location. h_file = join(get_scons_pkg_build_dir(config.name), 'include/numpy/__ufunc_api.h') t_file = join(get_scons_pkg_build_dir(config.name), 'include/numpy/ufunc_api.txt') config.add_data_files((header_dir, h_file), (header_dir, t_file)) def add_generated_files(*args, **kw): add_config_header() add_numpyconfig_header() add_array_api() add_ufunc_api() config.add_sconscript('SConstruct', post_hook = add_generated_files, source_files = source_files) config.add_scons_installed_library('npymath', 'lib') config.add_data_files('include/numpy/*.h') config.add_include_dirs('src') config.numpy_include_dirs.extend(config.paths('include')) # Don't install fenv unless we need them. if sys.platform == 'cygwin': config.add_data_dir('include/numpy/fenv') config.add_data_dir('tests') config.make_svn_version_py() return config if __name__=='__main__': from numpy.distutils.core import setup setup(configuration=configuration)