67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 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")
 | |
| conduit_headers = sum([glob.glob(f"pybind11/include/pybind11/conduit/*.{ext}")
 | |
|                        for ext in ("h", "txt")], [])
 | |
| 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 + conduit_headers + detail_headers + eigen_headers + stl_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/conduit", conduit_headers),
 | |
|         (base + "include/pybind11/detail", detail_headers),
 | |
|         (base + "include/pybind11/eigen", eigen_headers),
 | |
|         (base + "include/pybind11/stl", stl_headers),
 | |
|     ],
 | |
|     cmdclass=cmdclass,
 | |
| )
 |