From 121c1f42025a82dca7922a503ca77df51c37b394 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Mon, 29 May 2023 11:06:04 -0600 Subject: [PATCH] cmake: Add LOADER_CODEGEN --- CMakeLists.txt | 18 +++++++----------- loader/CMakeLists.txt | 12 ++++++------ scripts/generate_source.py | 2 +- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eda21b8..47e67c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,6 @@ project(VULKAN_LOADER VERSION 1.3.250) add_subdirectory(scripts) -find_package(PythonInterp 3 QUIET) - set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) @@ -229,15 +227,13 @@ if(NOT MSVC AND NOT (HAVE_SECURE_GETENV OR HAVE___SECURE_GETENV)) message(WARNING "Using non-secure environmental lookups. This loader will not properly disable environent variables when run with elevated permissions.") endif() -# Optional codegen target -if(PYTHONINTERP_FOUND) - add_custom_target(VulkanLoader_generated_source - COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/generate_source.py - ${VULKAN_HEADERS_REGISTRY_DIRECTORY} - --generated-version ${VulkanHeaders_VERSION} - --incremental) -else() - message(WARNING "VulkanLoader_generated_source target requires python 3") +option(LOADER_CODEGEN "Enable vulkan loader code generation") +if(LOADER_CODEGEN) + find_package(Python3 REQUIRED) + add_custom_target(loader_codegen + COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/generate_source.py ${VULKAN_HEADERS_REGISTRY_DIRECTORY} + --generated-version ${VulkanHeaders_VERSION} --incremental + ) endif() if(UNIX) diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt index 5ec5322..98661dd 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt @@ -161,13 +161,13 @@ if(WIN32) # Force off optimization so that the output assembly includes all the necessary info - optimizer would get rid of it otherwise. target_compile_options(asm_offset PRIVATE /Od) - find_package(PythonInterp REQUIRED) + find_package(Python3 REQUIRED QUIET) # Run parse_asm_values.py on asm_offset's assembly file to generate the gen_defines.asm, which the asm code depends on add_custom_command(TARGET asm_offset POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/parse_asm_values.py "${CMAKE_CURRENT_BINARY_DIR}/gen_defines.asm" + COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/parse_asm_values.py "${CMAKE_CURRENT_BINARY_DIR}/gen_defines.asm" "$/asm_offset.asm" "MASM" "${CMAKE_CXX_COMPILER_ID}" "${CMAKE_SYSTEM_PROCESSOR}" BYPRODUCTS gen_defines.asm - ) + ) endif() add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm) set_target_properties(loader_asm_gen_files PROPERTIES FOLDER ${LOADER_HELPER_FOLDER}) @@ -238,13 +238,13 @@ else() # i.e.: Linux set(ASM_OFFSET_INTERMEDIATE_LOCATION "$/CMakeFiles/asm_offset.dir/asm_offset.s") endif() - find_package(PythonInterp REQUIRED) + find_package(Python3 REQUIRED QUIET) # Run parse_asm_values.py on asm_offset's assembly file to generate the gen_defines.asm, which the asm code depends on add_custom_command(TARGET asm_offset POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/parse_asm_values.py "$/gen_defines.asm" + COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/parse_asm_values.py "$/gen_defines.asm" "${ASM_OFFSET_INTERMEDIATE_LOCATION}" "GAS" "${CMAKE_CXX_COMPILER_ID}" "${ASM_OFFSET_SYSTEM_PROCESSOR}" BYPRODUCTS gen_defines.asm - ) + ) endif() add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm) else() diff --git a/scripts/generate_source.py b/scripts/generate_source.py index e614764..16a2b47 100755 --- a/scripts/generate_source.py +++ b/scripts/generate_source.py @@ -54,7 +54,7 @@ def main(argv): # get directory where generators will run if args.verify or args.incremental: # generate in temp directory so we can compare or copy later - temp_obj = tempfile.TemporaryDirectory(prefix='VulkanLoader_generated_source_') + temp_obj = tempfile.TemporaryDirectory(prefix='loader_codegen_') temp_dir = temp_obj.name gen_dir = temp_dir else: -- 2.7.4