77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import shutil
 | |
| import sys
 | |
| import warnings
 | |
| 
 | |
| from numpy.distutils.core import Extension, setup
 | |
| from numpy.distutils.misc_util import dict_append
 | |
| from numpy.distutils.system_info import get_info
 | |
| from numpy.exceptions import VisibleDeprecationWarning
 | |
| 
 | |
| from ._backend import Backend
 | |
| 
 | |
| 
 | |
| class DistutilsBackend(Backend):
 | |
|     def __init__(sef, *args, **kwargs):
 | |
|         warnings.warn(
 | |
|             "\ndistutils has been deprecated since NumPy 1.26.x\n"
 | |
|             "Use the Meson backend instead, or generate wrappers"
 | |
|             " without -c and use a custom build script",
 | |
|             VisibleDeprecationWarning,
 | |
|             stacklevel=2,
 | |
|         )
 | |
|         super().__init__(*args, **kwargs)
 | |
| 
 | |
|     def compile(self):
 | |
|         num_info = {}
 | |
|         if num_info:
 | |
|             self.include_dirs.extend(num_info.get("include_dirs", []))
 | |
|         ext_args = {
 | |
|             "name": self.modulename,
 | |
|             "sources": self.sources,
 | |
|             "include_dirs": self.include_dirs,
 | |
|             "library_dirs": self.library_dirs,
 | |
|             "libraries": self.libraries,
 | |
|             "define_macros": self.define_macros,
 | |
|             "undef_macros": self.undef_macros,
 | |
|             "extra_objects": self.extra_objects,
 | |
|             "f2py_options": self.f2py_flags,
 | |
|         }
 | |
| 
 | |
|         if self.sysinfo_flags:
 | |
|             for n in self.sysinfo_flags:
 | |
|                 i = get_info(n)
 | |
|                 if not i:
 | |
|                     print(
 | |
|                         f"No {n!r} resources found"
 | |
|                         "in system (try `f2py --help-link`)"
 | |
|                     )
 | |
|                 dict_append(ext_args, **i)
 | |
| 
 | |
|         ext = Extension(**ext_args)
 | |
| 
 | |
|         sys.argv = [sys.argv[0]] + self.setup_flags
 | |
|         sys.argv.extend(
 | |
|             [
 | |
|                 "build",
 | |
|                 "--build-temp",
 | |
|                 self.build_dir,
 | |
|                 "--build-base",
 | |
|                 self.build_dir,
 | |
|                 "--build-platlib",
 | |
|                 ".",
 | |
|                 "--disable-optimization",
 | |
|             ]
 | |
|         )
 | |
| 
 | |
|         if self.fc_flags:
 | |
|             sys.argv.extend(["config_fc"] + self.fc_flags)
 | |
|         if self.flib_flags:
 | |
|             sys.argv.extend(["build_ext"] + self.flib_flags)
 | |
| 
 | |
|         setup(ext_modules=[ext])
 | |
| 
 | |
|         if self.remove_build_dir and os.path.exists(self.build_dir):
 | |
|             print(f"Removing build directory {self.build_dir}")
 | |
|             shutil.rmtree(self.build_dir)
 |