64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
|  | #!/usr/bin/env python3 | ||
|  | 
 | ||
|  | # Setup script for pybind11-global (in the sdist or in tools/setup_global.py in the repository) | ||
|  | # This package is targeted for easy use from CMake. | ||
|  | 
 | ||
|  | import glob | ||
|  | import os | ||
|  | import re | ||
|  | 
 | ||
|  | # Setuptools has to be before distutils | ||
|  | from setuptools import setup | ||
|  | 
 | ||
|  | from distutils.command.install_headers import install_headers | ||
|  | 
 | ||
|  | class InstallHeadersNested(install_headers): | ||
|  |     def run(self): | ||
|  |         headers = self.distribution.headers or [] | ||
|  |         for header in headers: | ||
|  |             # Remove pybind11/include/ | ||
|  |             short_header = header.split("/", 2)[-1] | ||
|  | 
 | ||
|  |             dst = os.path.join(self.install_dir, os.path.dirname(short_header)) | ||
|  |             self.mkpath(dst) | ||
|  |             (out, _) = self.copy_file(header, dst) | ||
|  |             self.outfiles.append(out) | ||
|  | 
 | ||
|  | 
 | ||
|  | main_headers = glob.glob("pybind11/include/pybind11/*.h") | ||
|  | detail_headers = glob.glob("pybind11/include/pybind11/detail/*.h") | ||
|  | eigen_headers = glob.glob("pybind11/include/pybind11/eigen/*.h") | ||
|  | stl_headers = glob.glob("pybind11/include/pybind11/stl/*.h") | ||
|  | cmake_files = glob.glob("pybind11/share/cmake/pybind11/*.cmake") | ||
|  | pkgconfig_files = glob.glob("pybind11/share/pkgconfig/*.pc") | ||
|  | headers = main_headers + detail_headers + stl_headers + eigen_headers | ||
|  | 
 | ||
|  | cmdclass = {"install_headers": InstallHeadersNested} | ||
|  | $extra_cmd | ||
|  | 
 | ||
|  | # This will _not_ affect installing from wheels, | ||
|  | # only building wheels or installing from SDist. | ||
|  | # Primarily intended on Windows, where this is sometimes | ||
|  | # customized (for example, conda-forge uses Library/) | ||
|  | base = os.environ.get("PYBIND11_GLOBAL_PREFIX", "") | ||
|  | 
 | ||
|  | # Must have a separator | ||
|  | if base and not base.endswith("/"): | ||
|  |     base += "/" | ||
|  | 
 | ||
|  | setup( | ||
|  |     name="pybind11_global", | ||
|  |     version="$version", | ||
|  |     packages=[], | ||
|  |     headers=headers, | ||
|  |     data_files=[ | ||
|  |         (base + "share/cmake/pybind11", cmake_files), | ||
|  |         (base + "share/pkgconfig", pkgconfig_files), | ||
|  |         (base + "include/pybind11", main_headers), | ||
|  |         (base + "include/pybind11/detail", detail_headers), | ||
|  |         (base + "include/pybind11/eigen", eigen_headers), | ||
|  |         (base + "include/pybind11/stl", stl_headers), | ||
|  |     ], | ||
|  |     cmdclass=cmdclass, | ||
|  | ) |