cmake: Add LOADER_CODEGEN
authorjuan-lunarg <juan@lunarg.com>
Mon, 29 May 2023 17:06:04 +0000 (11:06 -0600)
committerJuan Ramos <114601453+juan-lunarg@users.noreply.github.com>
Mon, 29 May 2023 18:18:40 +0000 (12:18 -0600)
CMakeLists.txt
loader/CMakeLists.txt
scripts/generate_source.py

index eda21b882c6eb4a672fbc733247b2b0bcb1ac7fd..47e67c352503147eb1f80d76fa3964fe7d59ad50 100644 (file)
@@ -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)
index 5ec5322e19fdfaf2397b0c50842fde79ff2608fa..98661ddd48f8f2b9d867568acffdaaf0f47ce63c 100644 (file)
@@ -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"
                     "$<TARGET_FILE_DIR:asm_offset>/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 "$<TARGET_FILE_DIR:asm_offset>/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 "$<TARGET_FILE_DIR:asm_offset>/gen_defines.asm"
+                COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/parse_asm_values.py "$<TARGET_FILE_DIR:asm_offset>/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()
index e614764cf0aa5de4771b54f8b73c549c89b840fd..16a2b470021145ea94ef53f04bb441a5420aea13 100755 (executable)
@@ -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: