diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c5e96fba..5ecca369a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,12 +47,12 @@ jobs: name: Configure and build shell: pwsh run: | - cmake -B"build/${{ matrix.platform }}" -G"Ninja" -DVKB_BUILD_TESTS=ON -DVKB_BUILD_SAMPLES=ON -DCMAKE_C_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache -DCMAKE_CXX_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache + cmake -B"build/${{ matrix.platform }}" -G"Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DVKB_BUILD_TESTS=ON -DVKB_BUILD_SAMPLES=ON -DCMAKE_C_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache -DCMAKE_CXX_COMPILER_LAUNCHER=C:\\Users\\runneradmin\\.cargo\\bin\\sccache cmake --build "build/${{ matrix.platform }}" --target vulkan_samples --config ${{ matrix.build_type }} -j 1 - if: ${{ matrix.platform != 'windows' }} name: Configure and build run: | - cmake -B"build/${{ matrix.platform }}" -DVKB_BUILD_TESTS=ON -DVKB_BUILD_SAMPLES=ON -DGLFW_BUILD_WAYLAND=OFF + cmake -B"build/${{ matrix.platform }}" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DVKB_BUILD_TESTS=ON -DVKB_BUILD_SAMPLES=ON -DGLFW_BUILD_WAYLAND=OFF cmake --build "build/${{ matrix.platform }}" --target vulkan_samples --config ${{ matrix.build_type }} ${{ env.PARALLEL }} build_v2: diff --git a/CMakeLists.txt b/CMakeLists.txt index de2026ae9..b3d81ec36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,6 +125,9 @@ if(MSVC AND (DEFINED CMAKE_C_COMPILER_LAUNCHER)) string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") message(DEBUG "New flags: ${CMAKE_CXX_FLAGS_DEBUG}") + add_link_options( + $<$,$>:/DEBUG:FASTLINK> + $<$,$>:/INCREMENTAL:NO>) endif() # create output folder diff --git a/bldsys/cmake/sample_helper.cmake b/bldsys/cmake/sample_helper.cmake index ef263853d..47907f358 100644 --- a/bldsys/cmake/sample_helper.cmake +++ b/bldsys/cmake/sample_helper.cmake @@ -159,6 +159,7 @@ if(${TARGET_TYPE} STREQUAL "Sample") elseif(${TARGET_TYPE} STREQUAL "Test") add_library(${PROJECT_NAME} STATIC ${TARGET_FILES} ${SHADERS_GLSL} ${SHADERS_HLSL} ${SHADERS_SLANG} ${SHADERS_SPVASM}) endif() + vkb__trim_static_lib_objects(${PROJECT_NAME}) set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) # # inherit include directories from framework target diff --git a/bldsys/cmake/utils.cmake b/bldsys/cmake/utils.cmake index d16cfe8a1..4c57a6f44 100644 --- a/bldsys/cmake/utils.cmake +++ b/bldsys/cmake/utils.cmake @@ -1,5 +1,5 @@ #[[ - Copyright (c) 2019-2021, Arm Limited and Contributors + Copyright (c) 2019-2026, Arm Limited and Contributors SPDX-License-Identifier: Apache-2.0 @@ -39,4 +39,13 @@ function(scan_dirs) endforeach() set(${TARGET_LIST} ${DIR_LIST} PARENT_SCOPE) +endfunction() + +function(vkb__trim_static_lib_objects TARGET_NAME) + if(MSVC) + add_custom_command(TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E rm -rf "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET_NAME}.dir" + COMMENT "Trimming intermediate objects for ${TARGET_NAME} (already embedded in its .lib)" + VERBATIM) + endif() endfunction() \ No newline at end of file diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt index ae14c317c..ef51fdb29 100644 --- a/framework/CMakeLists.txt +++ b/framework/CMakeLists.txt @@ -404,7 +404,8 @@ if(WIN32) endif() #NB: switch this to shared library and things stop working. (there is likely two copies of volk somewhere. -add_library(${PROJECT_NAME} OBJECT ${PROJECT_FILES}) +add_library(${PROJECT_NAME} STATIC ${PROJECT_FILES}) +vkb__trim_static_lib_objects(${PROJECT_NAME}) set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) # compiler flags based on compiler type