| | |
| | from __future__ import annotations |
| |
|
| | import argparse |
| | import re |
| | import sys |
| | import sysconfig |
| |
|
| | from ._version import __version__ |
| | from .commands import get_cmake_dir, get_include, get_pkgconfig_dir |
| |
|
| | |
| | if "posix" in sys.builtin_module_names: |
| | from shlex import quote |
| | elif "nt" in sys.builtin_module_names: |
| | |
| | |
| | |
| | |
| | UNSAFE = re.compile("[ \t\n\r]") |
| |
|
| | def quote(s: str) -> str: |
| | if s and not UNSAFE.search(s): |
| | return s |
| |
|
| | |
| | |
| | return f'"{s}\\"' if s.endswith("\\") else f'"{s}"' |
| | else: |
| |
|
| | def quote(s: str) -> str: |
| | return s |
| |
|
| |
|
| | def print_includes() -> None: |
| | dirs = [ |
| | sysconfig.get_path("include"), |
| | sysconfig.get_path("platinclude"), |
| | get_include(), |
| | ] |
| |
|
| | |
| | unique_dirs = [] |
| | for d in dirs: |
| | if d and d not in unique_dirs: |
| | unique_dirs.append(d) |
| |
|
| | print(" ".join(quote(f"-I{d}") for d in unique_dirs)) |
| |
|
| |
|
| | def main() -> None: |
| | parser = argparse.ArgumentParser() |
| | parser.add_argument( |
| | "--version", |
| | action="version", |
| | version=__version__, |
| | help="Print the version and exit.", |
| | ) |
| | parser.add_argument( |
| | "--includes", |
| | action="store_true", |
| | help="Include flags for both pybind11 and Python headers.", |
| | ) |
| | parser.add_argument( |
| | "--cmakedir", |
| | action="store_true", |
| | help="Print the CMake module directory, ideal for setting -Dpybind11_ROOT in CMake.", |
| | ) |
| | parser.add_argument( |
| | "--pkgconfigdir", |
| | action="store_true", |
| | help="Print the pkgconfig directory, ideal for setting $PKG_CONFIG_PATH.", |
| | ) |
| | args = parser.parse_args() |
| | if not sys.argv[1:]: |
| | parser.print_help() |
| | if args.includes: |
| | print_includes() |
| | if args.cmakedir: |
| | print(quote(get_cmake_dir())) |
| | if args.pkgconfigdir: |
| | print(quote(get_pkgconfig_dir())) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|