Lagom: Link LibMain statically

This matches how LibMain is used within Serenity. This commit makes it
possible to build Lagom with LTO. Previously, `serenity_main` functions
would be dead-stripped away, as the linker could prove that nothing from
the executable ever called them.
This commit is contained in:
Daniel Bertalan 2022-10-01 16:08:26 +02:00 committed by Andreas Kling
parent add7dd66f6
commit 41a8f3f40f
Notes: sideshowbarker 2024-07-17 07:06:47 +09:00

View file

@ -171,9 +171,13 @@ install(
) )
function(lagom_lib library fs_name) function(lagom_lib library fs_name)
cmake_parse_arguments(LAGOM_LIBRARY "" "" "SOURCES;LIBS" ${ARGN}) cmake_parse_arguments(LAGOM_LIBRARY "STATIC" "" "SOURCES;LIBS" ${ARGN})
set(target_name "Lib${library}") set(target_name "Lib${library}")
if (LAGOM_LIBRARY_STATIC)
add_library(${target_name} STATIC ${LAGOM_LIBRARY_SOURCES})
else()
add_library(${target_name} ${LAGOM_LIBRARY_SOURCES}) add_library(${target_name} ${LAGOM_LIBRARY_SOURCES})
endif()
# Don't make alias when we're going to import a previous build for Tools # Don't make alias when we're going to import a previous build for Tools
# FIXME: Is there a better way to write this? # FIXME: Is there a better way to write this?
@ -283,11 +287,8 @@ endif()
file(GLOB LIBMAIN_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibMain/*.cpp") file(GLOB LIBMAIN_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibMain/*.cpp")
lagom_lib(Main main lagom_lib(Main main
SOURCES ${LIBMAIN_SOURCES} SOURCES ${LIBMAIN_SOURCES}
STATIC
) )
# The macOS linker is not happy about LibMain's main() calling an undefined symbol (serenity_main()).
if (APPLE)
target_link_options(LibMain PRIVATE -undefined dynamic_lookup)
endif()
# LibTimeZone # LibTimeZone
# This is needed even if Lagom is not enabled because it is depended upon by code generators. # This is needed even if Lagom is not enabled because it is depended upon by code generators.