summaryrefslogtreecommitdiff
path: root/plugins/warp/api/python
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2025-07-01 22:56:05 -0700
committerMark Rowe <mark@vector35.com>2025-07-30 17:05:10 -0700
commit3e2ace5e8d127d7995a94f1b296cad9152cb7274 (patch)
tree3fda150bff7944cc90323337818959467938be6d /plugins/warp/api/python
parent42878c46ace7ee6d267d26ee87b4d4015b4e4b2b (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 'plugins/warp/api/python')
-rw-r--r--plugins/warp/api/python/CMakeLists.txt29
1 files changed, 14 insertions, 15 deletions
diff --git a/plugins/warp/api/python/CMakeLists.txt b/plugins/warp/api/python/CMakeLists.txt
index 98337285..7c616bc3 100644
--- a/plugins/warp/api/python/CMakeLists.txt
+++ b/plugins/warp/api/python/CMakeLists.txt
@@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
project(warp-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}/_warpcore.py)
-list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/enums.py)
+list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/warp_enums.py)
add_executable(warp_generator
${PROJECT_SOURCE_DIR}/generator.cpp)
@@ -33,18 +35,15 @@ if(WIN32)
endif()
endif()
-add_custom_target(warp_generator_copy ALL
- BYPRODUCTS ${PROJECT_SOURCE_DIR}/_warpcore.py ${PROJECT_SOURCE_DIR}/enums.py
- DEPENDS ${PYTHON_SOURCES} ${PROJECT_SOURCE_DIR}/../warpcore.h $<TARGET_FILE:warp_generator>
- COMMAND ${CMAKE_COMMAND} -E echo "Copying WARP Python Sources"
- COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_OUTPUT_DIRECTORY}
- COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0 $<TARGET_FILE:warp_generator>
- ${PROJECT_SOURCE_DIR}/../warpcore.h
- ${PROJECT_SOURCE_DIR}/_warpcore.py
- ${PROJECT_SOURCE_DIR}/_warpcore_template.py
- ${PROJECT_SOURCE_DIR}/warp_enums.py
-
- COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${PYTHON_OUTPUT_DIRECTORY}
- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/_warpcore.py ${PYTHON_OUTPUT_DIRECTORY}
- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/warp_enums.py ${PYTHON_OUTPUT_DIRECTORY})
+generate_python_bindings(
+ TARGET_NAME warp_generator_copy
+ DISPLAY_NAME "WARP"
+ GENERATOR_TARGET warp_generator
+ HEADER_FILE ${PROJECT_SOURCE_DIR}/../warpcore.h
+ TEMPLATE_FILE ${PROJECT_SOURCE_DIR}/_warpcore_template.py
+ OUTPUT_DIRECTORY ${PYTHON_OUTPUT_DIRECTORY}
+ CORE_OUTPUT_FILE _warpcore.py
+ ENUMS_OUTPUT_FILE warp_enums.py
+ PYTHON_SOURCES ${PYTHON_SOURCES}
+)