mirror of https://github.com/pybind/pybind11
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
63 lines
2.1 KiB
#!/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, |
|
)
|
|
|