1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import contextlib
- import glob
- import os
- import re
- import shutil
- import subprocess
- import sys
- import tempfile
- 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:
-
- 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")
- stl_headers = glob.glob("pybind11/include/pybind11/stl/*.h")
- cmake_files = glob.glob("pybind11/share/cmake/pybind11/*.cmake")
- headers = main_headers + detail_headers + stl_headers
- cmdclass = {"install_headers": InstallHeadersNested}
- $extra_cmd
- base = os.environ.get("PYBIND11_GLOBAL_PREFIX", "")
- 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 + "include/pybind11", main_headers),
- (base + "include/pybind11/detail", detail_headers),
- (base + "include/pybind11/stl", stl_headers),
- ],
- cmdclass=cmdclass,
- )
|