1515# limitations under the License.
1616# ~~~
1717
18+ add_executable (vulkaninfo)
19+
20+ target_sources (vulkaninfo PRIVATE vulkaninfo.cpp)
21+
22+ # Setup the vulkaninfo.rc file to contain the correct info
23+ # Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
24+ # When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version strings
1825if (WIN32 )
19- # ~~~
20- # Setup the vulkaninfo.rc file to contain the correct info
21- # Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
22- # When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version strings
23- # ~~~
26+ set (VULKANINFO_BUILD_DLL_VERSIONINFO "default" CACHE STRING "Set the version to be used in the vulkaninfo.rc file" )
27+
2428 string (TIMESTAMP CURRENT_YEAR "%Y" )
2529 set (VULKANINFO_CUR_COPYRIGHT_STR "${CURRENT_YEAR} " )
26- if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO} " STREQUAL "" )
30+ if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO} " STREQUAL "default" )
31+ message (DEBUG "Setting RC version based on VulkanHeaders Version" )
2732 set (VULKANINFO_RC_VERSION "${VulkanHeaders_VERSION} " )
2833 set (VULKANINFO_VER_FILE_VERSION_STR "\" ${VULKANINFO_RC_VERSION} .Dev Build\" " )
2934 set (VULKANINFO_VER_FILE_DESCRIPTION_STR "\" Vulkaninfo - Dev Build\" " )
3035 else ()
36+ message (DEBUG "Setting RC version based on VULKANINFO_BUILD_DLL_VERSIONINFO" )
3137 set (VULKANINFO_RC_VERSION "$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO} " )
3238 set (VULKANINFO_VER_FILE_VERSION_STR "\" ${VULKANINFO_RC_VERSION} \" " )
3339 set (VULKANINFO_VER_FILE_DESCRIPTION_STR "\" vulkaninfo\" " )
@@ -39,27 +45,15 @@ if(WIN32)
3945 # Configure the file to include the versioning info
4046 configure_file (vulkaninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR} /vulkaninfo.rc)
4147
42- add_executable (vulkaninfo vulkaninfo.cpp ${CMAKE_CURRENT_BINARY_DIR} /vulkaninfo.rc)
43- if (MINGW)
44- target_link_libraries (vulkaninfo ucrt)
45- endif ()
46- elseif (APPLE )
47- add_executable (vulkaninfo
48- vulkaninfo.cpp
49- ${CMAKE_CURRENT_SOURCE_DIR} /macOS/vulkaninfo/metal_view.mm
50- ${CMAKE_CURRENT_SOURCE_DIR} /macOS/vulkaninfo/metal_view.h)
51- else ()
52- add_executable (vulkaninfo vulkaninfo.cpp)
48+ target_sources (vulkaninfo PRIVATE ${CMAKE_CURRENT_BINARY_DIR} /vulkaninfo.rc)
5349endif ()
5450
55- target_include_directories (vulkaninfo PRIVATE ${CMAKE_SOURCE_DIR} /vulkaninfo)
56- target_include_directories (vulkaninfo PRIVATE ${CMAKE_SOURCE_DIR} /vulkaninfo/generated )
57-
58- if (NOT WIN32 )
59- target_link_libraries (vulkaninfo ${CMAKE_DL_LIBS} )
60- endif ()
51+ target_include_directories (vulkaninfo PRIVATE
52+ generated
53+ .
54+ )
6155
62- target_compile_definitions (vulkaninfo PRIVATE -DVK_ENABLE_BETA_EXTENSIONS )
56+ target_compile_definitions (vulkaninfo PRIVATE VK_ENABLE_BETA_EXTENSIONS )
6357
6458if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD" )
6559 option (BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON )
@@ -71,28 +65,26 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD")
7165
7266 if (BUILD_WSI_XCB_SUPPORT)
7367 pkg_check_modules(XCB REQUIRED QUIET IMPORTED_TARGET xcb)
74- target_link_libraries (vulkaninfo PkgConfig::XCB )
75- target_compile_definitions (vulkaninfo PRIVATE -DVK_USE_PLATFORM_XCB_KHR -DVK_NO_PROTOTYPES )
68+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_XCB_KHR VK_NO_PROTOTYPES )
69+ target_link_libraries (vulkaninfo PRIVATE PkgConfig::XCB )
7670 endif ()
7771
7872 if (BUILD_WSI_XLIB_SUPPORT)
7973 pkg_check_modules(X11 REQUIRED QUIET IMPORTED_TARGET x11)
80- target_link_libraries (vulkaninfo PkgConfig::X11 )
81- target_compile_definitions (vulkaninfo PRIVATE -DVK_USE_PLATFORM_XLIB_KHR -DVK_NO_PROTOTYPES )
74+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_XLIB_KHR VK_NO_PROTOTYPES )
75+ target_link_libraries (vulkaninfo PRIVATE PkgConfig::X11 )
8276 endif ()
8377
8478 if (BUILD_WSI_WAYLAND_SUPPORT)
8579 pkg_check_modules(WAYLAND_CLIENT REQUIRED IMPORTED_TARGET wayland-client)
86- add_compile_definitions (VK_USE_PLATFORM_WAYLAND_KHR)
87-
88- target_link_libraries (vulkaninfo PkgConfig::WAYLAND_CLIENT)
89- target_compile_definitions (vulkaninfo PRIVATE -DVK_USE_PLATFORM_WAYLAND_KHR -DVK_NO_PROTOTYPES)
80+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_WAYLAND_KHR VK_NO_PROTOTYPES)
81+ target_link_libraries (vulkaninfo PRIVATE PkgConfig::WAYLAND_CLIENT)
9082 endif ()
9183
9284 if (BUILD_WSI_DIRECTFB_SUPPORT)
9385 pkg_check_modules(DirectFB REQUIRED QUIET IMPORTED_TARGET directfb)
94- target_link_libraries (vulkaninfo PkgConfig::DirectFB )
95- target_compile_definitions (vulkaninfo PRIVATE -DVK_USE_PLATFORM_DIRECTFB_EXT -DVK_NO_PROTOTYPES )
86+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_DIRECTFB_EXT VK_NO_PROTOTYPES )
87+ target_link_libraries (vulkaninfo PRIVATE PkgConfig::DirectFB )
9688 endif ()
9789
9890 if (ENABLE_ADDRESS_SANITIZER)
@@ -103,11 +95,24 @@ endif()
10395
10496if (APPLE )
10597 # We do this so vulkaninfo is linked to an individual library and NOT a framework.
106- target_link_libraries (vulkaninfo Vulkan::Loader "-framework AppKit -framework QuartzCore" )
107- target_include_directories (vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /macOS/vulkaninfo)
98+ target_link_libraries (vulkaninfo PRIVATE Vulkan::Loader "-framework AppKit -framework QuartzCore" )
99+ target_include_directories (vulkaninfo PRIVATE macOS/vulkaninfo)
100+
101+ target_sources (vulkaninfo PRIVATE
102+ macOS/vulkaninfo/metal_view.mm
103+ macOS/vulkaninfo/metal_view.h
104+ )
108105endif ()
109106
110- target_link_libraries (vulkaninfo Vulkan::Headers)
107+ target_link_libraries (vulkaninfo PRIVATE
108+ Vulkan::Headers
109+ ${CMAKE_DL_LIBS}
110+ )
111+
112+ # TODO: Add MinGW CI and verify this is needed.
113+ if (MINGW)
114+ target_link_libraries (vulkaninfo PRIVATE ucrt)
115+ endif ()
111116
112117if (WIN32 )
113118 target_compile_definitions (vulkaninfo PRIVATE
@@ -122,10 +127,12 @@ if(WIN32)
122127 target_link_options (vulkaninfo PRIVATE /guard:cf)
123128
124129elseif (APPLE )
125- target_compile_definitions (vulkaninfo PRIVATE
126- VK_USE_PLATFORM_MACOS_MVK
127- VK_USE_PLATFORM_METAL_EXT
128- )
130+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_METAL_EXT)
131+ if (IOS)
132+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_IOS_MVK)
133+ else ()
134+ target_compile_definitions (vulkaninfo PRIVATE VK_USE_PLATFORM_MACOS_MVK)
135+ endif ()
129136endif ()
130137
131138install (TARGETS vulkaninfo)
0 commit comments