Refactor Windows specific loader CMake code
authorCharles Giessen <charles@lunarg.com>
Wed, 3 Nov 2021 20:38:54 +0000 (14:38 -0600)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Wed, 9 Mar 2022 22:06:30 +0000 (15:06 -0700)
Merged the loader-norm and vulkan libraries and moved the dirent_on_windows.c
into the same block that adds loader_windows.c to the list of sources. This
commit is a part of a series of commits and not intended to work standalone.

loader/CMakeLists.txt

index f867a9a13cdfd1f99872e9705ab01bfa7509ed47..66872f587a99ebf1979243f2049b8cd8ff2d5cca 100644 (file)
@@ -134,10 +134,10 @@ set(NORMAL_LOADER_SRCS
     )
 
 if(WIN32)
-    set(NORMAL_LOADER_SRCS ${NORMAL_LOADER_SRCS} loader_windows.c)
+    list(APPEND NORMAL_LOADER_SRCS loader_windows.c dirent_on_windows.c)
 elseif(UNIX AND NOT APPLE) # i.e.: Linux
-    set(NORMAL_LOADER_SRCS ${NORMAL_LOADER_SRCS} loader_linux.c)
-    set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS LOADER_ENABLE_LINUX_SORT)
+    list(APPEND NORMAL_LOADER_SRCS loader_linux.c)
+    target_compile_definitions(loader_specific_options INTERFACE LOADER_ENABLE_LINUX_SORT)
 endif()
 
 set(OPT_LOADER_SRCS dev_ext_trampoline.c phys_dev_ext.c)
@@ -237,12 +237,8 @@ else() # i.e.: Linux
 endif()
 
 if(WIN32)
-    add_library(loader-norm OBJECT ${NORMAL_LOADER_SRCS} dirent_on_windows.c)
-    # target_compile_options(loader-norm PUBLIC "$<$<CONFIG:DEBUG>:${LOCAL_C_FLAGS_DBG}>")
-    target_compile_options(loader-norm PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
-    target_include_directories(loader-norm PRIVATE "$<TARGET_PROPERTY:Vulkan::Headers,INTERFACE_INCLUDE_DIRECTORIES>")
-
-    add_library(loader-opt OBJECT ${OPT_LOADER_SRCS})
+    add_library(loader-opt STATIC ${OPT_LOADER_SRCS})
+    target_link_libraries(loader-opt PUBLIC loader_specific_options)
     add_dependencies(loader-opt loader_asm_gen_files)
     set_target_properties(loader-opt PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}")
     target_compile_options(loader-opt PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
@@ -250,12 +246,15 @@ if(WIN32)
 
     add_library(vulkan
                 SHARED
-                $<TARGET_OBJECTS:loader-opt>
-                $<TARGET_OBJECTS:loader-norm>
+                ${NORMAL_LOADER_SRCS}
                 $<TARGET_OBJECTS:loader-unknown-chain>
                 ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-1.def
                 ${CMAKE_CURRENT_LIST_DIR}/loader.rc)
 
+    target_link_libraries(vulkan loader_specific_options loader-opt)
+    target_compile_options(vulkan PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
+    target_include_directories(vulkan PRIVATE "$<TARGET_PROPERTY:Vulkan::Headers,INTERFACE_INCLUDE_DIRECTORIES>")
+
     if (UPDATE_DEPS)
         add_dependencies(vulkan vl_update_deps)
     endif()