aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2023-08-25 10:53:04 -0600
committerJuan Ramos <114601453+juan-lunarg@users.noreply.github.com>2023-09-20 08:31:22 -0600
commit54f0d66861b0586e49c0b6b2e301d44cdfe86a30 (patch)
tree2e7bb229cf571950df91eefe731a9f92c12117d7
parent1ecbed6db368efc5dab956974d660e79faf28a0f (diff)
downloadusermoji-54f0d66861b0586e49c0b6b2e301d44cdfe86a30.tar.xz
build: Use Vulkan-Loader find_package support
The Vulkan-Loader now supports find_package properly, allowing this repo to drop the ad-hoc creation of the Vulkan::Vulkan target.
-rw-r--r--CMakeLists.txt8
-rw-r--r--cube/CMakeLists.txt10
-rw-r--r--cube/macOS/cube/cube.cmake2
-rw-r--r--cube/macOS/cubepp/cubepp.cmake2
-rw-r--r--scripts/known_good.json2
-rw-r--r--tests/CMakeLists.txt19
-rw-r--r--vulkaninfo/CMakeLists.txt2
7 files changed, 12 insertions, 33 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 57d05a39..efc3f1e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,13 +66,7 @@ if(APPLE)
endif()
find_package(VulkanHeaders REQUIRED CONFIG)
-
-# Find and create the Vulkan::Vulkan library
-find_library(Vulkan_LIBRARY NAMES vulkan vulkan-1)
-add_library(Vulkan::Vulkan UNKNOWN IMPORTED)
-set_target_properties(Vulkan::Vulkan PROPERTIES
- IMPORTED_LOCATION ${Vulkan_LIBRARY})
-target_link_libraries(Vulkan::Vulkan INTERFACE Vulkan::Headers)
+find_package(VulkanLoader REQUIRED CONFIG)
include(GNUInstallDirs)
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
index 02674f75..1fa75d7f 100644
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -186,7 +186,7 @@ elseif(NOT WIN32)
cube.vert.inc
cube.frag.inc
${OPTIONAL_WAYLAND_DATA_FILES})
- target_link_libraries(vkcube Vulkan::Vulkan)
+ target_link_libraries(vkcube Vulkan::Headers Vulkan::Loader)
target_compile_definitions(vkcube PUBLIC ${CUBE_PLATFORM})
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT)
@@ -212,7 +212,7 @@ else()
${PROJECT_SOURCE_DIR}/cube/cube.frag
cube.vert.inc
cube.frag.inc)
- target_link_libraries(vkcube Vulkan::Vulkan)
+ target_link_libraries(vkcube Vulkan::Headers Vulkan::Loader)
endif()
if(APPLE)
@@ -241,7 +241,7 @@ elseif(NOT WIN32)
cube.vert.inc
cube.frag.inc
${OPTIONAL_WAYLAND_DATA_FILES})
- target_link_libraries(vkcubepp Vulkan::Vulkan)
+ target_link_libraries(vkcubepp Vulkan::Headers Vulkan::Loader)
target_compile_definitions(vkcubepp PUBLIC ${CUBE_PLATFORM})
if (ENABLE_ADDRESS_SANITIZER)
@@ -262,7 +262,7 @@ else()
${PROJECT_SOURCE_DIR}/cube/cube.frag
cube.vert.inc
cube.frag.inc)
- target_link_libraries(vkcubepp Vulkan::Vulkan)
+ target_link_libraries(vkcubepp Vulkan::Headers Vulkan::Loader)
endif()
if(APPLE)
@@ -298,7 +298,7 @@ if(UNIX AND NOT APPLE) # i.e. Linux
cube.vert.inc
cube.frag.inc
${OPTIONAL_WAYLAND_DATA_FILES})
- target_link_libraries(vkcube-wayland Vulkan::Vulkan)
+ target_link_libraries(vkcube-wayland Vulkan::Headers Vulkan::Loader)
target_compile_definitions(vkcube-wayland PUBLIC VK_USE_PLATFORM_WAYLAND_KHR)
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT)
diff --git a/cube/macOS/cube/cube.cmake b/cube/macOS/cube/cube.cmake
index 9b823f95..ee98135d 100644
--- a/cube/macOS/cube/cube.cmake
+++ b/cube/macOS/cube/cube.cmake
@@ -55,7 +55,7 @@ add_dependencies(vkcube MoltenVK_icd-staging-json)
target_include_directories(vkcube PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${MOLTENVK_DIR}/MoltenVK/include)
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
-target_link_libraries(vkcube ${Vulkan_LIBRARY} "-framework Cocoa -framework QuartzCore")
+target_link_libraries(vkcube Vulkan::Loader "-framework Cocoa -framework QuartzCore")
set_target_properties(vkcube PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cube/Info.plist)
diff --git a/cube/macOS/cubepp/cubepp.cmake b/cube/macOS/cubepp/cubepp.cmake
index eae4de3c..4ff82b6b 100644
--- a/cube/macOS/cubepp/cubepp.cmake
+++ b/cube/macOS/cubepp/cubepp.cmake
@@ -57,7 +57,7 @@ add_dependencies(vkcubepp MoltenVK_icd-staging-json)
target_include_directories(vkcubepp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${MOLTENVK_DIR}/MoltenVK/include)
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
-target_link_libraries(vkcubepp ${Vulkan_LIBRARY} "-framework Cocoa -framework QuartzCore")
+target_link_libraries(vkcubepp Vulkan::Loader "-framework Cocoa -framework QuartzCore")
set_target_properties(vkcubepp PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Info.plist)
diff --git a/scripts/known_good.json b/scripts/known_good.json
index 6eed5f45..239693ff 100644
--- a/scripts/known_good.json
+++ b/scripts/known_good.json
@@ -32,7 +32,7 @@
"sub_dir": "Vulkan-Loader",
"build_dir": "Vulkan-Loader/build",
"install_dir": "Vulkan-Loader/build/install",
- "commit": "v1.3.264",
+ "commit": "d40385b1748ae5270fcab18c5aae1a2e5a301465",
"deps": [
{
"var_name": "VULKAN_HEADERS_INSTALL_DIR",
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d95b00a9..a543e86c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -15,21 +15,6 @@
# limitations under the License.
# ~~~
-# On Windows, We only need the .lib to build the repo, but to run tests we need the .dll.
-# Thus, we have to fixup the Vulkan::Vulkan target to contain the correct details.
-if (WIN32)
- list(APPEND CMAKE_PROGRAM_PATH ${VULKAN_LOADER_INSTALL_DIR})
-
- find_program(Vulkan_LIBRARY_DLL NAMES vulkan-1.dll)
- find_library(Vulkan_LIBRARY_IMPLIB NAMES vulkan-1)
-
- # Change Vulkan::Vulkan's location to vulkan-1.dll and set the IMPLIB to vulkan-1.lib
- set_target_properties(Vulkan::Vulkan PROPERTIES
- IMPORTED_LOCATION ${Vulkan_LIBRARY_DLL})
- set_target_properties(Vulkan::Vulkan PROPERTIES
- IMPORTED_IMPLIB ${Vulkan_LIBRARY_IMPLIB})
-endif()
-
# setup binary_locations_$<CONFIG>.h.in using binary_locations.h.in as a source
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/binary_locations_$<CONFIG>.h" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/binary_locations.h.in")
@@ -57,7 +42,7 @@ get_target_property(TEST_SOURCES vulkan_tools_tests SOURCES)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${TEST_SOURCES})
target_include_directories(vulkan_tools_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
-target_link_libraries(vulkan_tools_tests GTest::gtest Vulkan::Vulkan)
+target_link_libraries(vulkan_tools_tests GTest::gtest Vulkan::Headers Vulkan::Loader)
add_dependencies(vulkan_tools_tests generate_binary_locations)
if (WIN32)
target_compile_definitions(vulkan_tools_tests PUBLIC -DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN -DNOMINMAX)
@@ -72,7 +57,7 @@ endif ()
if (WIN32)
# Copy the loader shared lib (if built) to the test application directory so the test app finds it.
add_custom_command(TARGET vulkan_tools_tests POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:Vulkan::Vulkan> $<TARGET_FILE_DIR:vulkan_tools_tests>)
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:Vulkan::Loader> $<TARGET_FILE_DIR:vulkan_tools_tests>)
endif()
include(GoogleTest)
diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt
index 68900286..6ac7ef21 100644
--- a/vulkaninfo/CMakeLists.txt
+++ b/vulkaninfo/CMakeLists.txt
@@ -104,7 +104,7 @@ endif()
if(APPLE)
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
- target_link_libraries(vulkaninfo ${Vulkan_LIBRARY} "-framework AppKit -framework QuartzCore")
+ target_link_libraries(vulkaninfo Vulkan::Loader "-framework AppKit -framework QuartzCore")
target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
endif()