From 70a87472dfe6cf4954692bcf2b76c0d563acd7b6 Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Tue, 23 Jul 2019 11:12:29 -0700 Subject: [PATCH] build: CMake/GN changes for pre-generated source --- BUILD.gn | 125 +++-------------------------------------------------- CMakeLists.txt | 2 +- icd/CMakeLists.txt | 31 +------------ 3 files changed, 8 insertions(+), 150 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index c6cc155..46bb075 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -15,15 +15,6 @@ import("//build_overrides/vulkan_tools.gni") -vulkan_registry_script_files = [ - "$vulkan_headers_dir/registry/cgenerator.py", - "$vulkan_headers_dir/registry/conventions.py", - "$vulkan_headers_dir/registry/generator.py", - "$vulkan_headers_dir/registry/reg.py", - "$vulkan_headers_dir/registry/vkconventions.py", - "$vulkan_headers_dir/registry/vk.xml", -] - # Vulkan-tools isn't ported to Fuchsia yet. # TODO(spang): Port mock ICD to Fuchsia. assert(!is_fuchsia) @@ -37,93 +28,10 @@ if (is_win) { } raw_vulkan_icd_dir = rebase_path("icd", root_build_dir) -raw_vulkan_headers_dir = rebase_path("$vulkan_headers_dir", root_build_dir) - -vulkan_gen_dir = "$target_gen_dir/$vulkan_gen_subdir" -raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir) vulkan_data_dir = "$root_out_dir/$vulkan_data_subdir" raw_vulkan_data_dir = rebase_path(vulkan_data_dir, root_build_dir) -# Vulkan helper scripts -# --------------------- - -helper_script_and_deps = [ - [ - "vulkan_gen_typemap_helper", - "vk_typemap_helper.h", - "vulkan_tools_helper_file_generator.py", - ], - [ - "vulkan_mock_icd_cpp", - "mock_icd.cpp", - "mock_icd_generator.py", - ], - [ - "vulkan_mock_icd_h", - "mock_icd.h", - "mock_icd_generator.py", - ], -] - -# Python scripts needed for codegen, copy them to a temp dir -# so that all dependencies are together -copy("python_gen_deps") { - sources = vulkan_registry_script_files + [ - "scripts/common_codegen.py", - "scripts/kvt_genvk.py", - "scripts/mock_icd_generator.py", - "scripts/vulkan_tools_helper_file_generator.py", - ] - outputs = [ - "$vulkan_gen_dir/{{source_file_part}}", - ] -} - -foreach(script_and_dep, helper_script_and_deps) { - target_name = script_and_dep[0] - file = script_and_dep[1] - dep = script_and_dep[2] - target("action", target_name) { - public_deps = [ - ":python_gen_deps", - ] - script = "$vulkan_gen_dir/kvt_genvk.py" - inputs = [ - "$vulkan_gen_dir/$dep", - "$vulkan_gen_dir/common_codegen.py", - ] - outputs = [ - "$vulkan_gen_dir/$file", - ] - args = [ - "-o", - raw_vulkan_gen_dir, - "-registry", - "$raw_vulkan_headers_dir/registry/vk.xml", - "-scripts", - "$raw_vulkan_headers_dir/registry", - "$file", - "-quiet", - ] - } -} - -config("vulkan_generated_files_config") { - include_dirs = [ vulkan_gen_dir ] -} - -group("vulkan_generate_helper_files") { - public_deps = [ - "$vulkan_headers_dir:vulkan_headers", - ] - public_configs = [ ":vulkan_generated_files_config" ] - foreach(script_and_dep, helper_script_and_deps) { - target_name = script_and_dep[0] - public_deps += [ ":$target_name" ] - } -} - config("vulkan_internal_config") { defines = [ "VULKAN_NON_CMAKE_BUILD" ] if (is_clang || !is_win) { @@ -138,42 +46,21 @@ config("vulkan_internal_config") { } } -# Copy icd header to gen dir -copy("icd_header_dep") { - sources = [ - "$vulkan_headers_dir/include/vulkan/vk_icd.h", - ] - outputs = [ - "$vulkan_gen_dir/vk_icd.h", - ] -} - if (!is_android) { # Vulkan Mock ICD # --------------- - group("vulkan_generate_mock_icd_files") { - public_deps = [ - ":icd_header_dep", - ":vulkan_generate_helper_files", - ":vulkan_mock_icd_cpp", - ":vulkan_mock_icd_h", - ] - } - - mock_icd_sources = [ - "$vulkan_gen_dir/mock_icd.cpp", - "$vulkan_gen_dir/mock_icd.h", - ] - shared_library("VkICD_mock_icd") { configs -= vulkan_undefine_configs - deps = [ - ":vulkan_generate_mock_icd_files", + public_deps = [ + "$vulkan_headers_dir:vulkan_headers", ] data_deps = [ ":vulkan_gen_icd_json_file", ] - sources = mock_icd_sources + sources = [ + "icd/generated/mock_icd.cpp", + "icd/generated/mock_icd.h", + ] if (is_win) { sources += [ "icd/VkICD_mock_icd.def" ] } diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c921b8..8aaa869 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ project(Vulkan-Tools) # find_package(), include() and global project settings -------------------------------------------------------------------------- -find_package(PythonInterp 3 REQUIRED) +find_package(PythonInterp 3 QUIET) # User-interface declarations ---------------------------------------------------------------------------------------------------- # This section contains variables that affect development GUIs (e.g. CMake GUI and IDEs), such as option(), folders, and variables diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt index b569ab3..278536b 100644 --- a/icd/CMakeLists.txt +++ b/icd/CMakeLists.txt @@ -15,20 +15,6 @@ # limitations under the License. # ~~~ -set(SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/scripts") - -# Define macro used for building vk.xml generated files -macro(run_vk_xml_generate dependency output) - add_custom_command(OUTPUT ${output} - COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/kvt_genvk.py -registry ${VulkanRegistry_DIR}/vk.xml -scripts - ${VulkanRegistry_DIR} ${output} - DEPENDS ${VulkanRegistry_DIR}/vk.xml - ${VulkanRegistry_DIR}/generator.py - ${SCRIPTS_DIR}/${dependency} - ${SCRIPTS_DIR}/kvt_genvk.py - ${VulkanRegistry_DIR}/reg.py) -endmacro() - if(WIN32) add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DVK_USE_PLATFORM_WIN32_KHX -DWIN32_LEAN_AND_MEAN) elseif(ANDROID) @@ -105,12 +91,6 @@ else() endif() endif() -# Custom target for generated vulkan helper file dependencies -set(icd_generate_helper_files_DEPENDS) -add_custom_target(icd_generate_helper_files DEPENDS vk_typemap_helper.h) -set_target_properties(icd_generate_helper_files PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER}) -run_vk_xml_generate(vulkan_tools_helper_file_generator.py vk_typemap_helper.h) - # For ICD with a direct dependency on a project with the same name, use it. if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) foreach(config_file ${ICD_JSON_FILES}) @@ -128,8 +108,6 @@ if(WIN32) VERBATIM) set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER}) add_library(VkICD_${target} SHARED ${ARGN} VkICD_${target}.def) - add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files) - # target_link_Libraries(VkICD_${target} VkICD_utils) if(INSTALL_ICD) install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() @@ -137,8 +115,6 @@ if(WIN32) elseif(APPLE) macro(add_vk_icd target) add_library(VkICD_${target} SHARED ${ARGN}) - # target_link_Libraries(VkICD_${target} VkICD_utils) - add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files) set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl") if(INSTALL_ICD) install(TARGETS VkICD_${target} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -147,8 +123,6 @@ elseif(APPLE) else() macro(add_vk_icd target) add_library(VkICD_${target} SHARED ${ARGN}) - # target_link_Libraries(VkICD_${target} VkICD_utils) - add_dependencies(VkICD_${target} icd_generate_helper_files generate_icd_files) set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl,-export-dynamic,-Bsymbolic,--exclude-libs,ALL") if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR}) @@ -178,10 +152,7 @@ else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare") endif() -run_vk_xml_generate(mock_icd_generator.py mock_icd.h) -run_vk_xml_generate(mock_icd_generator.py mock_icd.cpp) - -add_vk_icd(mock_icd mock_icd.cpp mock_icd.h) +add_vk_icd(mock_icd generated/mock_icd.cpp generated/mock_icd.h) # JSON file(s) install targets. For Linux, need to remove the "./" from the library path before installing to system directories. if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux -- 2.7.4