Fix per-platform defines in test framework not showing up
authorCharles Giessen <charles@lunarg.com>
Wed, 1 Dec 2021 20:41:28 +0000 (13:41 -0700)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Wed, 1 Dec 2021 21:02:09 +0000 (14:02 -0700)
Need to use target_compile_definitions instead of target_compile_options.
Also appears that generator expressions do not play nicely, so best to revert
to classic if-else chains.

tests/framework/CMakeLists.txt
tests/framework/test_util.cpp

index 7b135c3be15379bf636f628c35d21a3c60a1d78c..aefbd3adf4066c533c54d051221b70433d2266d6 100644 (file)
@@ -21,15 +21,32 @@ if(UNIX OR APPLE)
     target_link_libraries(testing_framework_util PUBLIC ${CMAKE_DL_LIBS})
 endif()
 
-target_compile_options(testing_framework_util INTERFACE
-    $<$<PLATFORM_ID:WIN32>:-DVK_USE_PLATFORM_WIN32_KHR>
-    $<$<PLATFORM_ID:ANDROID>:-DVK_USE_PLATFORM_ANDROID_KHR>
-    $<$<PLATFORM_ID:APPLE>:-DVK_USE_PLATFORM_MACOS_MVK>
-    $<$<AND:$<PLATFORM_ID:UNIX>,$<NOT:$<PLATFORM_ID:APPLE>>>:
-        $<$<BUILD_WSI_XCB_SUPPORT>:-DVK_USE_PLATFORM_XCB_KHR>
-        $<$<BUILD_WSI_XLIB_SUPPORT>:-DVK_USE_PLATFORM_XLIB_KHR>
-        $<$<BUILD_WSI_WAYLAND_SUPPORT>:-DVK_USE_PLATFORM_WAYLAND_KHR>>
-    )
+if(WIN32)
+    target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_WIN32_KHR)
+elseif(ANDROID)
+    target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_ANDROID_KHR)
+elseif(APPLE)
+    target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_MACOS_MVK VK_USE_PLATFORM_METAL_EXT)
+elseif(UNIX AND NOT APPLE) # i.e.: Linux
+    if(BUILD_WSI_XCB_SUPPORT)
+        target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_XCB_KHR)
+    endif()
+    if(BUILD_WSI_XLIB_SUPPORT)
+        target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_XLIB_KHR VK_USE_PLATFORM_XLIB_XRANDR_EXT)
+    endif()
+    if(BUILD_WSI_WAYLAND_SUPPORT)
+        target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_WAYLAND_KHR)
+    endif()
+    if(BUILD_WSI_DIRECTFB_SUPPORT)
+        target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_DIRECTFB_EXT)
+    endif()
+    if(BUILD_WSI_SCREEN_QNX_SUPPORT)
+        target_compile_definitions(testing_framework_util PUBLIC VK_USE_PLATFORM_SCREEN_QNX)
+    endif()
+else()
+    message(FATAL_ERROR "Unsupported Platform!")
+endif()
+
 if(UNIX)
     target_compile_options(testing_framework_util PUBLIC -fPIC)
 endif()
index 2dad219a860184bb12712b479c6fe5d9c1aff9d4..79c663f2cc0a5dec9fb5c859424d490393daa5f7 100644 (file)
@@ -566,7 +566,7 @@ VulkanFunctions::VulkanFunctions() : loader(FRAMEWORK_VULKAN_LIBRARY_PATH) {
     vkCreateMacOSSurfaceMVK = loader.get_symbol<PFN_vkCreateMacOSSurfaceMVK>("vkCreateMacOSSurfaceMVK");
 #endif  // VK_USE_PLATFORM_MACOS_MVK
 #ifdef VK_USE_PLATFORM_METAL_EXT
-    vkCreateMetalSurfaceEXT = loader.get_symbol<PFN_vkCreateMetalSurfaceEXT>("vkCreateMetalSurfaceEXT")
+    vkCreateMetalSurfaceEXT = loader.get_symbol<PFN_vkCreateMetalSurfaceEXT>("vkCreateMetalSurfaceEXT");
 #endif  // VK_USE_PLATFORM_METAL_EXT
 #ifdef VK_USE_PLATFORM_SCREEN_QNX
     vkCreateScreenSurfaceQNX = loader.get_symbol<PFN_vkCreateScreenSurfaceQNX>("vkCreateScreenSurfaceQNX");