def get_extensions(): # 'numpy' will be replaced with the proper path to the numpy includes cfg = setup_helpers.DistutilsExtensionArgs() cfg['include_dirs'].append('numpy') cfg['sources'].extend( os.path.relpath(fname) for fname in glob( os.path.join(os.path.dirname(__file__), 'src', '*.c'))) if not setup_helpers.use_system_library('cfitsio'): if setup_helpers.get_compiler_option() == 'msvc': # These come from the CFITSIO vcc makefile cfg['extra_compile_args'].extend([ '/D', '"WIN32"', '/D', '"_WINDOWS"', '/D', '"_MBCS"', '/D', '"_USRDLL"', '/D', '"_CRT_SECURE_NO_DEPRECATE"' ]) else: # All of these switches are to silence warnings from compiling CFITSIO cfg['extra_compile_args'].extend([ '-Wno-unused-variable', '-Wno-parentheses', '-Wno-uninitialized', '-Wno-format', '-Wno-strict-prototypes', '-Wno-unused', '-Wno-comments', '-Wno-switch' ]) cfitsio_path = os.path.join('cextern', 'cfitsio') cfitsio_files = glob(os.path.join(cfitsio_path, '*.c')) cfg['include_dirs'].append(cfitsio_path) cfg['sources'].extend(cfitsio_files) else: cfg.update(setup_helpers.pkg_config(['cfitsio'], ['cfitsio'])) return [Extension('astropy.io.fits.compression', **cfg)]
def get_extensions(build_type='release'): XML_DIR = 'astropy/utils/xml/src' cfg = setup_helpers.DistutilsExtensionArgs( {'sources': [join(XML_DIR, "iterparse.c")]}) if setup_helpers.use_system_library('expat'): cfg.update(setup_helpers.pkg_config(['expat'], ['expat'])) else: EXPAT_DIR = 'cextern/expat/lib' cfg['sources'].extend([ join(EXPAT_DIR, fn) for fn in ["xmlparse.c", "xmlrole.c", "xmltok.c", "xmltok_impl.c"] ]) cfg['include_dirs'].extend([XML_DIR, EXPAT_DIR]) if sys.platform.startswith('linux'): # This is to ensure we only export the Python entry point # symbols and the linker won't try to use the system expat in # place of ours. cfg['extra_link_args'].extend([ '-Wl,--version-script={0}'.format( join(XML_DIR, 'iterparse.map')) ]) cfg['define_macros'].append(("HAVE_EXPAT_CONFIG_H", 1)) if sys.byteorder == 'big': cfg['define_macros'].append(('BYTEORDER', '4321')) else: cfg['define_macros'].append(('BYTEORDER', '1234')) if sys.platform != 'win32': cfg['define_macros'].append(('HAVE_UNISTD_H', None)) return [Extension("astropy.utils.xml._iterparser", **cfg)]
def get_extensions(): from astropy.version import debug generate_c_docstrings() ###################################################################### # DISTUTILS SETUP cfg = setup_helpers.DistutilsExtensionArgs() cfg['include_dirs'].extend(['numpy', join(WCSROOT, "include")]) cfg['define_macros'].extend([('ECHO', None), ('WCSTRIG_MACRO', None), ('ASTROPY_WCS_BUILD', None), ('_GNU_SOURCE', None), ('WCSVERSION', WCSVERSION)]) if (not setup_helpers.use_system_library('wcslib') or sys.platform == 'win32'): write_wcsconfig_h() wcslib_path = join("cextern", "wcslib") # Path to wcslib wcslib_cpath = join(wcslib_path, "C") # Path to wcslib source files wcslib_files = [ # List of wcslib files to compile 'flexed/wcsbth.c', 'flexed/wcspih.c', 'flexed/wcsulex.c', 'flexed/wcsutrn.c', 'cel.c', 'lin.c', 'log.c', 'prj.c', 'spc.c', 'sph.c', 'spx.c', 'tab.c', 'wcs.c', 'wcserr.c', 'wcsfix.c', 'wcshdr.c', 'wcsprintf.c', 'wcsunits.c', 'wcsutil.c' ] cfg['sources'].extend(join(wcslib_cpath, x) for x in wcslib_files) cfg['include_dirs'].append(wcslib_cpath) else: cfg.update(setup_helpers.pkg_config(['wcslib'], ['wcs'])) astropy_wcs_files = [ # List of astropy.wcs files to compile 'distortion.c', 'distortion_wrap.c', 'docstrings.c', 'pipeline.c', 'pyutil.c', 'astropy_wcs.c', 'astropy_wcs_api.c', 'sip.c', 'sip_wrap.c', 'str_list_proxy.c', 'unit_list_proxy.c', 'util.c', 'wcslib_wrap.c', 'wcslib_tabprm_wrap.c', 'wcslib_units_wrap.c', 'wcslib_wtbarr_wrap.c' ] cfg['sources'].extend(join(WCSROOT, 'src', x) for x in astropy_wcs_files) if debug: cfg['define_macros'].append(('DEBUG', None)) cfg['undef_macros'].append('NDEBUG') if (not sys.platform.startswith('sun') and not sys.platform == 'win32'): cfg['extra_compile_args'].extend(["-fno-inline", "-O0", "-g"]) else: # Define ECHO as nothing to prevent spurious newlines from # printing within the libwcs parser cfg['define_macros'].append(('NDEBUG', None)) cfg['undef_macros'].append('DEBUG') if sys.platform == 'win32': # These are written into wcsconfig.h, but that file is not # used by all parts of wcslib. cfg['define_macros'].extend([ ('YY_NO_UNISTD_H', None), ('_CRT_SECURE_NO_WARNINGS', None), ('_NO_OLDNAMES', None), # for mingw32 ('NO_OLDNAMES', None), # for mingw64 ('__STDC__', None) # for MSVC ]) if sys.platform.startswith('linux'): cfg['define_macros'].append(('HAVE_SINCOS', None)) return [Extension('astropy.wcs._wcs', **cfg)]