Optimizing RPM Package Build Speed

This commit is contained in:
LesinLi 2024-11-19 08:44:55 +00:00 committed by ob-robot
parent c9d7d26d57
commit b2bd2d6f7a
5 changed files with 29 additions and 2 deletions

View File

@ -23,7 +23,9 @@ ob_define(OB_CMAKE_RULES_CHECK ON)
ob_define(OB_STATIC_LINK_LGPL_DEPS ON)
ob_define(HOTFUNC_PATH "${CMAKE_SOURCE_DIR}/hotfuncs.txt")
ob_define(OB_BUILD_CCLS OFF)
ob_define(LTO_JOBS 16)
ob_define(LTO_JOBS all)
ob_define(LTO_CACHE_DIR "${CMAKE_BINARY_DIR}/cache")
ob_define(LTO_CACHE_POLICY cache_size=100%:cache_size_bytes=0k:cache_size_files=0:prune_after=0s:prune_interval=72h)
# get compiler from build.sh
ob_define(OB_CC "")
ob_define(OB_CXX "")
@ -46,6 +48,8 @@ ob_define(OB_DISABLE_PIE OFF)
ob_define(OB_ENABLE_MCMODEL OFF)
ob_define(USE_LTO_CACHE OFF)
if(WITH_COVERAGE)
# -ftest-coverage to generate .gcno file
# -fprofile-arcs to generate .gcda file
@ -69,6 +73,9 @@ ob_define(THIN_LTO_CONCURRENCY_LINK "")
if(ENABLE_THIN_LTO)
set(THIN_LTO_OPT "-flto=thin")
set(THIN_LTO_CONCURRENCY_LINK "-Wl,--thinlto-jobs=${LTO_JOBS}")
if(USE_LTO_CACHE)
set(THIN_LTO_CONCURRENCY_LINK "${THIN_LTO_CONCURRENCY_LINK},--thinlto-cache-dir=${LTO_CACHE_DIR},--thinlto-cache-policy=${LTO_CACHE_POLICY}")
endif()
endif()
set(HOTFUNC_OPT "")
@ -246,7 +253,7 @@ if (OB_USE_CLANG)
endif()
set(CMAKE_CXX_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG} -std=gnu++11")
set(CMAKE_C_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG}")
set(CMAKE_CXX_LINK_FLAGS "${LD_OPT} ${THIN_LTO_CONCURRENCY_LINK} --gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT}")
set(CMAKE_CXX_LINK_FLAGS "${LD_OPT} --gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT}")
set(CMAKE_SHARED_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT}")
set(CMAKE_EXE_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${PIE_OPT} ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT} ${CMAKE_COVERAGE_EXE_LINKER_OPTIONS}")
else() # not clang, use gcc

View File

@ -25,8 +25,16 @@ target_link_libraries(obtable
-Wl,--allow-multiple-definition)
set_target_properties(obtable PROPERTIES SOVERSION 1 VERSION 1.0.0)
if(ENABLE_THIN_LTO AND USE_LTO_CACHE)
add_dependencies(obtable observer)
endif()
add_library(obtable_static
STATIC
EXCLUDE_FROM_ALL
${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp)
target_link_libraries(obtable_static PUBLIC ${obtable_base} ${ob_objects} ${oblib_object_libraries})
if(ENABLE_THIN_LTO AND USE_LTO_CACHE)
add_dependencies(obtable_static observer)
endif()

View File

@ -10,6 +10,10 @@ ob_add_new_object_target(obcdc_tailf_objects obcdc_tailf_object_list)
target_link_libraries(obcdc_tailf_objects PRIVATE obcdc)
target_link_libraries(obcdc_tailf PRIVATE obcdc_tailf_objects)
if(ENABLE_THIN_LTO AND USE_LTO_CACHE)
add_dependencies(obcdc_tailf observer)
endif()
# obcdc_tailf_static
add_executable(obcdc_tailf_static EXCLUDE_FROM_ALL)
ob_add_new_object_target(obcdc_tailf_objects_static obcdc_tailf_object_list)

View File

@ -146,6 +146,10 @@ target_link_libraries(ob_sql_proxy_parser_static
PUBLIC
ob_sql_proxy_parser_objects)
if(ENABLE_THIN_LTO AND USE_LTO_CACHE)
add_dependencies(ob_sql_proxy_parser_static observer)
endif()
target_link_libraries(ob_sql_server_parser_static
PUBLIC
ob_sql_server_parser_objects)

View File

@ -167,3 +167,7 @@ target_link_libraries(ob_admin
-Wl,--end-group
-static-libgcc
-static-libstdc++)
if(ENABLE_THIN_LTO AND USE_LTO_CACHE)
add_dependencies(ob_admin observer)
endif()