From de2bf3f333eb85ffe49afcdd0321e03c1d1f7cb6 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Tue, 27 Jul 2021 00:19:08 -0600 Subject: [PATCH] Meta/LibTest: Build object libraries for test main files By using the power of object libraries and $ we can make sure to only build TestMain.cpp and JavaScriptTestRunnerMain.cpp once. Previously we built these cpp files into object files once for every single test executable. This change reduces the number of total compile jobs in a Serenity target build by around 100. --- Meta/CMake/utils.cmake | 6 ++---- Userland/Libraries/LibTest/CMakeLists.txt | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Meta/CMake/utils.cmake b/Meta/CMake/utils.cmake index dd4e51869b..942f327ddc 100644 --- a/Meta/CMake/utils.cmake +++ b/Meta/CMake/utils.cmake @@ -77,8 +77,7 @@ function(serenity_test test_src sub_dir) cmake_parse_arguments(SERENITY_TEST "MAIN_ALREADY_DEFINED" "CUSTOM_MAIN" "LIBS" ${ARGN}) set(TEST_SOURCES ${test_src}) if ("${SERENITY_TEST_CUSTOM_MAIN}" STREQUAL "") - set(SERENITY_TEST_CUSTOM_MAIN - "${CMAKE_SOURCE_DIR}/Userland/Libraries/LibTest/TestMain.cpp") + set(SERENITY_TEST_CUSTOM_MAIN "$") endif() if (NOT ${SERENITY_TEST_MAIN_ALREADY_DEFINED}) list(PREPEND TEST_SOURCES "${SERENITY_TEST_CUSTOM_MAIN}") @@ -98,8 +97,7 @@ endfunction() function(serenity_testjs_test test_src sub_dir) cmake_parse_arguments(SERENITY_TEST "" "CUSTOM_MAIN" "LIBS" ${ARGN}) if ("${SERENITY_TEST_CUSTOM_MAIN}" STREQUAL "") - set(SERENITY_TEST_CUSTOM_MAIN - "${CMAKE_SOURCE_DIR}/Userland/Libraries/LibTest/JavaScriptTestRunnerMain.cpp") + set(SERENITY_TEST_CUSTOM_MAIN "$") endif() list(APPEND SERENITY_TEST_LIBS LibJS LibCore) serenity_test(${test_src} ${sub_dir} diff --git a/Userland/Libraries/LibTest/CMakeLists.txt b/Userland/Libraries/LibTest/CMakeLists.txt index ad5f2bb251..c5ba722218 100644 --- a/Userland/Libraries/LibTest/CMakeLists.txt +++ b/Userland/Libraries/LibTest/CMakeLists.txt @@ -7,3 +7,6 @@ set(SOURCES serenity_lib(LibTest test) target_link_libraries(LibTest LibC) + +add_library(LibTestMain OBJECT TestMain.cpp) +add_library(JavaScriptTestRunnerMain OBJECT JavaScriptTestRunnerMain.cpp)