From 3d3eecb736796e0c192a9ae038da837ff5fd29a7 Mon Sep 17 00:00:00 2001 From: Marcin Wojdyr Date: Thu, 3 Oct 2024 17:26:24 +0200 Subject: [PATCH] cmake: adjust for multi-config generators --- CMakeLists.txt | 23 ++++++++++++----------- pyproject.toml | 2 +- python/gemmi/__init__.py | 1 + 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 361edb1f..a7babd6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -493,8 +493,9 @@ if (USE_PYTHON) target_link_libraries(gemmi_py PRIVATE gemmi_cpp) endif() set_property(TARGET gemmi_py PROPERTY OUTPUT_NAME gemmi_ext) - set_property(TARGET gemmi_py PROPERTY LIBRARY_OUTPUT_DIRECTORY py/gemmi) - configure_file(python/gemmi/__init__.py py/gemmi/__init__.py COPYONLY) + set(py_dir $,>,py,$/py>) + set_property(TARGET gemmi_py PROPERTY LIBRARY_OUTPUT_DIRECTORY ${py_dir}/gemmi) + file(GENERATE OUTPUT ${py_dir}/gemmi/__init__.py INPUT python/gemmi/__init__.py) # nanobind gives warnings with -Wpedantic and -Wshadow if(CMAKE_CXX_FLAGS MATCHES "-Wshadow") @@ -528,17 +529,17 @@ if (USE_PYTHON) nanobind_add_stub( gemmi_stub MODULE gemmi - OUTPUT py/gemmi/__init__.pyi - PYTHON_PATH py + OUTPUT ${py_dir}/gemmi/__init__.pyi + PYTHON_PATH ${py_dir} DEPENDS gemmi_py PATTERN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/python/stubs.pat" - MARKER_FILE py/gemmi/py.typed + MARKER_FILE ${py_dir}/gemmi/py.typed ) nanobind_add_stub( gemmi_cif_stub MODULE gemmi.cif - OUTPUT py/gemmi/cif.pyi - PYTHON_PATH py + OUTPUT ${py_dir}/gemmi/cif.pyi + PYTHON_PATH ${py_dir} DEPENDS gemmi_py ) endif() @@ -603,10 +604,10 @@ if (USE_PYTHON) PATTERN "[._]*" EXCLUDE) if (GENERATE_STUBS AND NOT CMAKE_CROSSCOMPILING) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/py/gemmi/__init__.py" - "${CMAKE_CURRENT_BINARY_DIR}/py/gemmi/py.typed" - "${CMAKE_CURRENT_BINARY_DIR}/py/gemmi/__init__.pyi" - "${CMAKE_CURRENT_BINARY_DIR}/py/gemmi/cif.pyi" + "${CMAKE_CURRENT_BINARY_DIR}/${py_dir}/gemmi/__init__.py" + "${CMAKE_CURRENT_BINARY_DIR}/${py_dir}/gemmi/py.typed" + "${CMAKE_CURRENT_BINARY_DIR}/${py_dir}/gemmi/__init__.pyi" + "${CMAKE_CURRENT_BINARY_DIR}/${py_dir}/gemmi/cif.pyi" DESTINATION "${Python_SITEARCH}/gemmi" COMPONENT py) endif() endif() diff --git a/pyproject.toml b/pyproject.toml index 71152187..0b3fea44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ classifiers = [ [tool.scikit-build] #build-dir = "/tmp/gemmi_build2/{wheel_tag}" -experimental = true # needed for install-dir +experimental = true # needed for install-dir starting with '/' wheel.install-dir = "/data" wheel.expand-macos-universal-tags = true # not sure if this is useful wheel.packages = [] diff --git a/python/gemmi/__init__.py b/python/gemmi/__init__.py index b2a44aac..00b9547d 100644 --- a/python/gemmi/__init__.py +++ b/python/gemmi/__init__.py @@ -1,2 +1,3 @@ # Importing C++ extension populates this module. from . import gemmi_ext +del gemmi_ext