aboutsummaryrefslogtreecommitdiff
path: root/tools/Vulkan-Tools/scripts/CMakeLists.txt
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2026-03-31 01:30:36 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2026-03-31 01:30:36 +0200
commit8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8 (patch)
tree925fa596210d1a1f01e00e0743a643f4552e7a7a /tools/Vulkan-Tools/scripts/CMakeLists.txt
parent1f17b4df127bd280e50d93a46ae93df704adc2b0 (diff)
parent90bf5bc4fd8bea0d300f6564af256a51a34124b8 (diff)
downloadusermoji-8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8.tar.xz
add tools/Vulkan-Tools
Diffstat (limited to 'tools/Vulkan-Tools/scripts/CMakeLists.txt')
-rw-r--r--tools/Vulkan-Tools/scripts/CMakeLists.txt135
1 files changed, 135 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/scripts/CMakeLists.txt b/tools/Vulkan-Tools/scripts/CMakeLists.txt
new file mode 100644
index 00000000..65c8bade
--- /dev/null
+++ b/tools/Vulkan-Tools/scripts/CMakeLists.txt
@@ -0,0 +1,135 @@
+# ~~~
+# Copyright (c) 2023 LunarG, Inc.
+#
+# 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.
+# ~~~
+
+option(UPDATE_DEPS "Run update_deps.py for user")
+if (UPDATE_DEPS)
+ find_package(Python3 REQUIRED QUIET)
+
+ set(update_dep_py "${CMAKE_CURRENT_LIST_DIR}/update_deps.py")
+ set(known_good_json "${CMAKE_CURRENT_LIST_DIR}/known_good.json")
+
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${update_dep_py} ${known_good_json})
+
+ list(APPEND update_dep_command "${update_dep_py}")
+ list(APPEND update_dep_command "--generator")
+ list(APPEND update_dep_command "${CMAKE_GENERATOR}")
+
+ if (CMAKE_GENERATOR_PLATFORM)
+ list(APPEND update_dep_command "--arch")
+ list(APPEND update_dep_command "${CMAKE_GENERATOR_PLATFORM}")
+ endif()
+
+ if (NOT CMAKE_BUILD_TYPE)
+ message(WARNING "CMAKE_BUILD_TYPE not set. Using Debug for dependency build type")
+ set(_build_type Debug)
+ else()
+ set(_build_type ${CMAKE_BUILD_TYPE})
+ endif()
+ list(APPEND update_dep_command "--config")
+ list(APPEND update_dep_command "${_build_type}")
+ list(APPEND update_dep_command "--api")
+ list(APPEND update_dep_command "${API_TYPE}")
+
+ set(UPDATE_DEPS_DIR_SUFFIX "${_build_type}")
+ if (CMAKE_CROSSCOMPILING)
+ set(UPDATE_DEPS_DIR_SUFFIX "${CMAKE_SYSTEM_NAME}/${UPDATE_DEPS_DIR_SUFFIX}/${CMAKE_SYSTEM_PROCESSOR}")
+ else()
+ math(EXPR bitness "8 * ${CMAKE_SIZEOF_VOID_P}")
+ set(UPDATE_DEPS_DIR_SUFFIX "${UPDATE_DEPS_DIR_SUFFIX}/${bitness}")
+ endif()
+ set(UPDATE_DEPS_DIR "${PROJECT_SOURCE_DIR}/external/${UPDATE_DEPS_DIR_SUFFIX}" CACHE PATH "Location where update_deps.py installs packages")
+ list(APPEND update_dep_command "--dir" )
+ list(APPEND update_dep_command "${UPDATE_DEPS_DIR}")
+
+ if (NOT BUILD_TESTS)
+ list(APPEND update_dep_command "--optional=tests")
+ endif()
+
+ if (UPDATE_DEPS_SKIP_EXISTING_INSTALL)
+ list(APPEND update_dep_command "--skip-existing-install")
+ endif()
+
+ list(APPEND cmake_vars "CMAKE_TOOLCHAIN_FILE")
+
+ # Avoids manually setting CMAKE_SYSTEM_NAME unless it's needed:
+ # https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING.html
+ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "${CMAKE_HOST_SYSTEM_NAME}")
+ list(APPEND cmake_vars "CMAKE_SYSTEM_NAME")
+ endif()
+ if (APPLE)
+ list(APPEND cmake_vars "CMAKE_OSX_ARCHITECTURES" "CMAKE_OSX_DEPLOYMENT_TARGET")
+ endif()
+ if (NOT MSVC_IDE)
+ list(APPEND cmake_vars "CMAKE_CXX_COMPILER" "CMAKE_C_COMPILER" "CMAKE_ASM_COMPILER")
+ endif()
+ if (ANDROID)
+ list(APPEND cmake_vars "ANDROID_PLATFORM" "CMAKE_ANDROID_ARCH_ABI" "CMAKE_ANDROID_STL_TYPE" "CMAKE_ANDROID_RTTI" "CMAKE_ANDROID_EXCEPTIONS" "ANDROID_USE_LEGACY_TOOLCHAIN_FILE")
+ endif()
+
+ set(cmake_var)
+ foreach(var IN LISTS cmake_vars)
+ if (DEFINED ${var})
+ list(APPEND update_dep_command "--cmake_var")
+ list(APPEND update_dep_command "${var}=${${var}}")
+ endif()
+ endforeach()
+
+ if (cmake_var)
+ list(APPEND update_dep_command "${cmake_var}")
+ endif()
+
+ file(TIMESTAMP ${update_dep_py} timestamp_1)
+ file(TIMESTAMP ${known_good_json} timestamp_2)
+
+ string("MD5" md5_hash "${timestamp_1}-${timestamp_2}-${update_dep_command}")
+
+ set(UPDATE_DEPS_HASH "0" CACHE STRING "Default value until we run update_deps.py")
+ mark_as_advanced(UPDATE_DEPS_HASH)
+
+ if ("${UPDATE_DEPS_HASH}" STREQUAL "0")
+ list(APPEND update_dep_command "--clean-build")
+ list(APPEND update_dep_command "--clean-install")
+ endif()
+
+ if ("${md5_hash}" STREQUAL $CACHE{UPDATE_DEPS_HASH})
+ message(DEBUG "update_deps.py: no work to do.")
+ else()
+ execute_process(
+ COMMAND ${Python3_EXECUTABLE} ${update_dep_command}
+ RESULT_VARIABLE _update_deps_result
+ )
+ if (NOT (${_update_deps_result} EQUAL 0))
+ message(FATAL_ERROR "Could not run update_deps.py which is necessary to download dependencies.")
+ endif()
+ set(UPDATE_DEPS_HASH ${md5_hash} CACHE STRING "Ensure we only run update_deps.py when we need to." FORCE)
+ include("${UPDATE_DEPS_DIR}/helper.cmake")
+ endif()
+endif()
+if (VULKAN_HEADERS_INSTALL_DIR)
+ list(APPEND CMAKE_PREFIX_PATH ${VULKAN_HEADERS_INSTALL_DIR})
+endif()
+if (GOOGLETEST_INSTALL_DIR)
+ list(APPEND CMAKE_PREFIX_PATH ${GOOGLETEST_INSTALL_DIR})
+endif()
+if (VULKAN_LOADER_INSTALL_DIR)
+ list(APPEND CMAKE_PREFIX_PATH ${VULKAN_LOADER_INSTALL_DIR})
+endif()
+
+if (CMAKE_CROSSCOMPILING)
+ set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
+else()
+ set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
+endif()