54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								# -*- coding: utf-8 -*-
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 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 contextlib
							 | 
						||
| 
								 | 
							
								import glob
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import re
							 | 
						||
| 
								 | 
							
								import shutil
							 | 
						||
| 
								 | 
							
								import subprocess
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								import tempfile
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 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")
							 | 
						||
| 
								 | 
							
								cmake_files = glob.glob("pybind11/share/cmake/pybind11/*.cmake")
							 | 
						||
| 
								 | 
							
								headers = main_headers + detail_headers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cmdclass = {"install_headers": InstallHeadersNested}
							 | 
						||
| 
								 | 
							
								$extra_cmd
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								setup(
							 | 
						||
| 
								 | 
							
								    name="pybind11_global",
							 | 
						||
| 
								 | 
							
								    version="$version",
							 | 
						||
| 
								 | 
							
								    packages=[],
							 | 
						||
| 
								 | 
							
								    headers=headers,
							 | 
						||
| 
								 | 
							
								    data_files=[
							 | 
						||
| 
								 | 
							
								        ("share/cmake/pybind11", cmake_files),
							 | 
						||
| 
								 | 
							
								        ("include/pybind11", main_headers),
							 | 
						||
| 
								 | 
							
								        ("include/pybind11/detail", detail_headers),
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    cmdclass=cmdclass,
							 | 
						||
| 
								 | 
							
								)
							 |