diff options
| author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
|---|---|---|
| committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
| commit | 8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8 (patch) | |
| tree | 925fa596210d1a1f01e00e0743a643f4552e7a7a /tools/Vulkan-Tools/CMakeLists.txt | |
| parent | 1f17b4df127bd280e50d93a46ae93df704adc2b0 (diff) | |
| parent | 90bf5bc4fd8bea0d300f6564af256a51a34124b8 (diff) | |
| download | usermoji-8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8.tar.xz | |
add tools/Vulkan-Tools
Diffstat (limited to 'tools/Vulkan-Tools/CMakeLists.txt')
| -rw-r--r-- | tools/Vulkan-Tools/CMakeLists.txt | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/CMakeLists.txt b/tools/Vulkan-Tools/CMakeLists.txt new file mode 100644 index 00000000..6800d4f8 --- /dev/null +++ b/tools/Vulkan-Tools/CMakeLists.txt @@ -0,0 +1,155 @@ +# ~~~ +# Copyright (c) 2014-2023 Valve Corporation +# Copyright (c) 2014-2023 LunarG, Inc. +# Copyright (c) 2023-2023 RasterGrid Kft. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ~~~ +cmake_minimum_required(VERSION 3.22.1) + +# The VERSION field is generated with the "--generated-version" flag in the generate_source.py script +project(Vulkan-Tools VERSION 1.4.347) + +# This variable enables downstream users to customize the target API +# variant (e.g. Vulkan SC) +set(API_TYPE "vulkan") + +add_subdirectory(scripts) + +set(CMAKE_CXX_VISIBILITY_PRESET "hidden") +set(CMAKE_C_VISIBILITY_PRESET "hidden") +set(CMAKE_VISIBILITY_INLINES_HIDDEN "YES") +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +option(BUILD_CUBE "Build cube" ON) +option(BUILD_VULKANINFO "Build vulkaninfo" ON) +option(BUILD_ICD "Build icd" ON) +option(BUILD_TESTS "Build the tests") +option(BUILD_WERROR "Treat compiler warnings as errors") +# NOTE: Our custom code generation target isn't desirable for system package managers or add_subdirectory users. +# So this target needs to be off by default to avoid obtuse build errors or patches. +option(TOOLS_CODEGEN "Enable helper codegen target") + +option(ENABLE_ADDRESS_SANITIZER "Use address sanitization") +if (ENABLE_ADDRESS_SANITIZER) + add_compile_options(-fsanitize=address) + if (NOT MSVC) + add_link_options(-fsanitize=address) + endif() +endif() + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +find_package(VulkanHeaders ${PROJECT_VERSION} QUIET REQUIRED CONFIG) +if ((APPLE OR BUILD_TESTS) AND NOT ANDROID) + find_package(VulkanLoader QUIET REQUIRED CONFIG) +endif() + +include(GNUInstallDirs) + +if (BUILD_WERROR) + add_compile_options("$<IF:$<CXX_COMPILER_ID:MSVC>,/WX,-Werror>") +endif() + +if (${CMAKE_CXX_COMPILER_ID} MATCHES "(GNU|Clang)") + add_compile_options( + -Wall + -Wextra + -Wno-unused-parameter + -Wno-missing-field-initializers + ) + + if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + add_compile_options(-Wno-stringop-truncation) + endif() + + if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + add_compile_options( + -Wno-sign-conversion + -Wno-shorten-64-to-32 + -Wno-string-conversion + -Wno-implicit-int-conversion + -Wno-enum-enum-conversion + ) + endif() +elseif(MSVC) + # TODO: Update to /W4 + add_compile_options("/W3") + # Warn about nested declarations + add_compile_options("/w34456") + # Warn about potentially uninitialized variables + add_compile_options("/w34701") + add_compile_options("/w34703") + # Warn about different indirection types. + add_compile_options("/w34057") + # Warn about signed/unsigned mismatch. + add_compile_options("/w34245") +endif() + + +if (TOOLS_CODEGEN) + find_package(Python3 REQUIRED QUIET) + add_custom_target(tools_codegen + COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/generate_source.py + "${VULKAN_HEADERS_INSTALL_DIR}/${CMAKE_INSTALL_DATADIR}/vulkan/registry" + --incremental --generated-version ${VulkanHeaders_VERSION} --api ${API_TYPE} + ) +endif() + +# Default to using the static CRT +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") + +# Find the Git branch & tag info for use in Mock ICD +find_package (Git) +if (GIT_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git/HEAD") + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --always + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_VARIABLE GIT_TAG_INFO) + string(REGEX REPLACE "\n$" "" GIT_TAG_INFO "${GIT_TAG_INFO}") + + file(READ "${CMAKE_CURRENT_LIST_DIR}/.git/HEAD" GIT_HEAD_REF_INFO) + if (GIT_HEAD_REF_INFO) + string(REGEX MATCH "ref: refs/heads/(.*)" _ ${GIT_HEAD_REF_INFO}) + if (CMAKE_MATCH_1) + set(GIT_BRANCH_NAME ${CMAKE_MATCH_1}) + else() + set(GIT_BRANCH_NAME ${GIT_HEAD_REF_INFO}) + endif() + string(REGEX REPLACE "\n$" "" GIT_BRANCH_NAME "${GIT_BRANCH_NAME}") + endif() +endif() + +if(BUILD_CUBE) + add_subdirectory(cube) +endif() + +if(BUILD_VULKANINFO) + add_subdirectory(vulkaninfo) +endif() + +if(BUILD_ICD) + add_subdirectory(icd) +endif() + + +if(BUILD_TESTS) + enable_testing() + add_subdirectory(tests) +endif() |
