1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-01 08:28:11 +00:00

Meta: Add an option to precompile some very common AK headers

Until we get the goodness that C++ modules are supposed to be, let's try
to shave off some parse time using precompiled headers.
This commit only adds some very common AK headers, only to binaries,
libraries and the kernel (tests are not covered due to incompatibility
with AK/TestSuite.h).
This option is on by default, but can be disabled by passing
`-DPRECOMPILE_COMMON_HEADERS=OFF` to cmake, which will disable all
header precompilations.
This makes the build about 30 seconds faster on my machine (about 7%).
This commit is contained in:
Ali Mohammad Pur 2021-04-21 15:45:52 +04:30 committed by Linus Groh
parent c4f682606a
commit 468ac11f29
5 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,9 @@
function(serenity_add_precompiled_header_to_target target header)
if (PRECOMPILE_COMMON_HEADERS AND COMMAND target_precompile_headers)
target_precompile_headers(${target} PRIVATE ${header})
endif ()
endfunction()
function(serenity_add_ak_precompiled_headers_to_target target)
serenity_add_precompiled_header_to_target(${target} ${CMAKE_SOURCE_DIR}/Meta/Precompile/AK.h)
endfunction()

View file

@ -1,3 +1,5 @@
include(${CMAKE_SOURCE_DIR}/Meta/CMake/precompile-headers.cmake)
function(serenity_install_headers target_name)
file(GLOB_RECURSE headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h")
foreach(header ${headers})
@ -31,6 +33,7 @@ function(serenity_lib target_name fs_name)
add_library(${target_name} SHARED ${SOURCES} ${GENERATED_SOURCES})
install(TARGETS ${target_name} DESTINATION usr/lib)
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name})
serenity_add_ak_precompiled_headers_to_target(${target_name})
serenity_generated_sources(${target_name})
endfunction()
@ -67,6 +70,7 @@ endfunction()
function(serenity_bin target_name)
add_executable(${target_name} ${SOURCES})
install(TARGETS ${target_name} RUNTIME DESTINATION bin)
serenity_add_ak_precompiled_headers_to_target(${target_name})
serenity_generated_sources(${target_name})
endfunction()