From f6ea4bbff85e02574472f46de0286c579373545f Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 29 Mar 2024 15:32:06 -0400 Subject: [PATCH] LibCore: Turn LibCoreMinimal into a normal shared library We were able to keep LibCoreMinimal a bit smaller as an object library, but that is causing ODR violations in the fuzzer build (realistically, should be an issue in all builds, but only the fuzzer actively complains for some reason). To make it a shared library, we have to add a couple more symbols to it, and make LibCore publicly depend on it. --- Meta/gn/secondary/Ladybird/BUILD.gn | 1 + .../secondary/Userland/Libraries/LibCore/BUILD.gn | 15 +++++++++------ Userland/Libraries/LibCore/CMakeLists.txt | 9 +++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Meta/gn/secondary/Ladybird/BUILD.gn b/Meta/gn/secondary/Ladybird/BUILD.gn index b4ee331cbe..2b6ed89fd4 100644 --- a/Meta/gn/secondary/Ladybird/BUILD.gn +++ b/Meta/gn/secondary/Ladybird/BUILD.gn @@ -403,6 +403,7 @@ if (current_os != "mac") { "$root_out_dir/lib/liblagom-ak.dylib", "$root_out_dir/lib/liblagom-audio.dylib", "$root_out_dir/lib/liblagom-compress.dylib", + "$root_out_dir/lib/liblagom-core-minimal.dylib", "$root_out_dir/lib/liblagom-core.dylib", "$root_out_dir/lib/liblagom-crypto.dylib", "$root_out_dir/lib/liblagom-diff.dylib", diff --git a/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn index 9c8221b8e6..1abe163fd1 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn @@ -1,6 +1,8 @@ # These are the minimal set of sources needed to build the code generators. We separate them to allow # LibCore to depend on generated sources. -source_set("minimal") { +shared_library("minimal") { + output_name = "core-minimal" + include_dirs = [ "//Userland/Libraries" ] sources = [ @@ -14,9 +16,13 @@ source_set("minimal") { "Directory.h", "DirectoryEntry.cpp", "DirectoryEntry.h", + "Environment.cpp", + "Environment.h", "File.cpp", "File.h", "Forward.h", + "SessionManagement.cpp", + "SessionManagement.h", "StandardPaths.cpp", "StandardPaths.h", "System.cpp", @@ -45,8 +51,6 @@ source_set("sources") { "DeferredInvocationContext.h", "ElapsedTimer.cpp", "ElapsedTimer.h", - "Environment.cpp", - "Environment.h", "Event.cpp", "Event.h", "EventLoop.cpp", @@ -81,8 +85,6 @@ source_set("sources") { "SOCKSProxyClient.h", "SecretString.cpp", "SecretString.h", - "SessionManagement.cpp", - "SessionManagement.h", "SharedCircularQueue.h", "Socket.cpp", "Socket.h", @@ -151,7 +153,6 @@ shared_library("LibCore") { deps = [ ":filewatcher", - ":minimal", ":sources", "//Meta/gn/build/libs/crypt", "//Meta/gn/build/libs/pthread", @@ -159,4 +160,6 @@ shared_library("LibCore") { "//Userland/Libraries/LibTimeZone", "//Userland/Libraries/LibURL", ] + + public_deps = [ ":minimal" ] } diff --git a/Userland/Libraries/LibCore/CMakeLists.txt b/Userland/Libraries/LibCore/CMakeLists.txt index 88d5e38391..6b9305689f 100644 --- a/Userland/Libraries/LibCore/CMakeLists.txt +++ b/Userland/Libraries/LibCore/CMakeLists.txt @@ -6,13 +6,15 @@ set(SOURCES Directory.cpp DirectoryEntry.cpp DirIterator.cpp + Environment.cpp File.cpp + SessionManagement.cpp StandardPaths.cpp System.cpp Version.cpp ) -serenity_lib(LibCoreMinimal coreminimal TYPE OBJECT) +serenity_lib(LibCoreMinimal coreminimal) target_link_libraries(LibCoreMinimal PRIVATE LibSystem) set(SOURCES @@ -20,7 +22,6 @@ set(SOURCES Command.cpp DateTime.cpp ElapsedTimer.cpp - Environment.cpp Event.cpp EventLoop.cpp EventLoopImplementation.cpp @@ -37,7 +38,6 @@ set(SOURCES ResourceImplementation.cpp ResourceImplementationFile.cpp SecretString.cpp - SessionManagement.cpp Socket.cpp SOCKSProxyClient.cpp SystemServerTakeover.cpp @@ -70,7 +70,8 @@ else() endif() serenity_lib(LibCore core) -target_link_libraries(LibCore PRIVATE LibCoreMinimal LibCrypt LibSystem LibTimeZone LibURL) +target_link_libraries(LibCore PRIVATE LibCrypt LibSystem LibTimeZone LibURL) +target_link_libraries(LibCore PUBLIC LibCoreMinimal) if (APPLE) target_link_libraries(LibCore PUBLIC "-framework CoreFoundation")