From 3e2ace5e8d127d7995a94f1b296cad9152cb7274 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Tue, 1 Jul 2025 22:56:05 -0700 Subject: 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. --- view/kernelcache/api/python/CMakeLists.txt | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'view/kernelcache/api/python') diff --git a/view/kernelcache/api/python/CMakeLists.txt b/view/kernelcache/api/python/CMakeLists.txt index 55dfa308..938bbf38 100644 --- a/view/kernelcache/api/python/CMakeLists.txt +++ b/view/kernelcache/api/python/CMakeLists.txt @@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.15 FATAL_ERROR) project(kernelcache-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}/_kernelcachecore.py) -list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/enums.py) +list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/kernelcache_enums.py) add_executable(kernelcache_generator ${PROJECT_SOURCE_DIR}/generator.cpp) @@ -33,18 +35,14 @@ if(WIN32) endif() endif() -add_custom_target(kernelcache_generator_copy ALL - BYPRODUCTS ${PROJECT_SOURCE_DIR}/_kernelcachecore.py ${PROJECT_SOURCE_DIR}/enums.py - DEPENDS ${PYTHON_SOURCES} ${PROJECT_SOURCE_DIR}/../kernelcachecore.h $ - COMMAND ${CMAKE_COMMAND} -E echo "Copying Kernel Cache Python Sources" - COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0 $ - ${PROJECT_SOURCE_DIR}/../kernelcachecore.h - ${PROJECT_SOURCE_DIR}/_kernelcachecore.py - ${PROJECT_SOURCE_DIR}/_kernelcachecore_template.py - ${PROJECT_SOURCE_DIR}/kernelcache_enums.py - - COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/_kernelcachecore.py ${PYTHON_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/kernelcache_enums.py ${PYTHON_OUTPUT_DIRECTORY}) - +generate_python_bindings( + TARGET_NAME kernelcache_generator_copy + DISPLAY_NAME "Kernel Cache" + GENERATOR_TARGET kernelcache_generator + HEADER_FILE ${PROJECT_SOURCE_DIR}/../kernelcachecore.h + TEMPLATE_FILE ${PROJECT_SOURCE_DIR}/_kernelcachecore_template.py + OUTPUT_DIRECTORY ${PYTHON_OUTPUT_DIRECTORY} + CORE_OUTPUT_FILE _kernelcachecore.py + ENUMS_OUTPUT_FILE kernelcache_enums.py + PYTHON_SOURCES ${PYTHON_SOURCES} +) -- cgit v1.3.1