diff options
| author | Mark Rowe <mark@vector35.com> | 2025-07-01 22:56:05 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-07-30 17:05:10 -0700 |
| commit | 3e2ace5e8d127d7995a94f1b296cad9152cb7274 (patch) | |
| tree | 3fda150bff7944cc90323337818959467938be6d /view/sharedcache/api/python | |
| parent | 42878c46ace7ee6d267d26ee87b4d4015b4e4b2b (diff) | |
Add dependency tracking to the Python code generation
This ensures that the Python source files are only generated and copied
into the output directory if inputs have changed, rather than being done
unconditionally.
Diffstat (limited to 'view/sharedcache/api/python')
| -rw-r--r-- | view/sharedcache/api/python/CMakeLists.txt | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/view/sharedcache/api/python/CMakeLists.txt b/view/sharedcache/api/python/CMakeLists.txt index 8e091eea..b6f6f875 100644 --- a/view/sharedcache/api/python/CMakeLists.txt +++ b/view/sharedcache/api/python/CMakeLists.txt @@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.15 FATAL_ERROR) project(sharedcache-python-api) +include(${PROJECT_SOURCE_DIR}/../../../../cmake/PythonBindings.cmake) + file(GLOB PYTHON_SOURCES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/*.py) list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/_sharedcachecore.py) -list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/enums.py) +list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/sharedcache_enums.py) add_executable(sharedcache_generator ${PROJECT_SOURCE_DIR}/generator.cpp) @@ -33,18 +35,14 @@ if(WIN32) endif() endif() -add_custom_target(sharedcache_generator_copy ALL - BYPRODUCTS ${PROJECT_SOURCE_DIR}/_sharedcachecore.py ${PROJECT_SOURCE_DIR}/enums.py - DEPENDS ${PYTHON_SOURCES} ${PROJECT_SOURCE_DIR}/../sharedcachecore.h $<TARGET_FILE:sharedcache_generator> - COMMAND ${CMAKE_COMMAND} -E echo "Copying Shared Cache Python Sources" - COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0 $<TARGET_FILE:sharedcache_generator> - ${PROJECT_SOURCE_DIR}/../sharedcachecore.h - ${PROJECT_SOURCE_DIR}/_sharedcachecore.py - ${PROJECT_SOURCE_DIR}/_sharedcachecore_template.py - ${PROJECT_SOURCE_DIR}/sharedcache_enums.py - - COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/_sharedcachecore.py ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/sharedcache_enums.py ${PYTHON_OUTPUT_DIRECTORY}) - +generate_python_bindings( + TARGET_NAME sharedcache_generator_copy + DISPLAY_NAME "Shared Cache" + GENERATOR_TARGET sharedcache_generator + HEADER_FILE ${PROJECT_SOURCE_DIR}/../sharedcachecore.h + TEMPLATE_FILE ${PROJECT_SOURCE_DIR}/_sharedcachecore_template.py + OUTPUT_DIRECTORY ${PYTHON_OUTPUT_DIRECTORY} + CORE_OUTPUT_FILE _sharedcachecore.py + ENUMS_OUTPUT_FILE sharedcache_enums.py + PYTHON_SOURCES ${PYTHON_SOURCES} +) |
