瀏覽代碼

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.
Timothy Flynn 1 年之前
父節點
當前提交
f6ea4bbff8

+ 1 - 0
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-ak.dylib",
       "$root_out_dir/lib/liblagom-audio.dylib",
       "$root_out_dir/lib/liblagom-audio.dylib",
       "$root_out_dir/lib/liblagom-compress.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-core.dylib",
       "$root_out_dir/lib/liblagom-crypto.dylib",
       "$root_out_dir/lib/liblagom-crypto.dylib",
       "$root_out_dir/lib/liblagom-diff.dylib",
       "$root_out_dir/lib/liblagom-diff.dylib",

+ 9 - 6
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
 # These are the minimal set of sources needed to build the code generators. We separate them to allow
 # LibCore to depend on generated sources.
 # LibCore to depend on generated sources.
-source_set("minimal") {
+shared_library("minimal") {
+  output_name = "core-minimal"
+
   include_dirs = [ "//Userland/Libraries" ]
   include_dirs = [ "//Userland/Libraries" ]
 
 
   sources = [
   sources = [
@@ -14,9 +16,13 @@ source_set("minimal") {
     "Directory.h",
     "Directory.h",
     "DirectoryEntry.cpp",
     "DirectoryEntry.cpp",
     "DirectoryEntry.h",
     "DirectoryEntry.h",
+    "Environment.cpp",
+    "Environment.h",
     "File.cpp",
     "File.cpp",
     "File.h",
     "File.h",
     "Forward.h",
     "Forward.h",
+    "SessionManagement.cpp",
+    "SessionManagement.h",
     "StandardPaths.cpp",
     "StandardPaths.cpp",
     "StandardPaths.h",
     "StandardPaths.h",
     "System.cpp",
     "System.cpp",
@@ -45,8 +51,6 @@ source_set("sources") {
     "DeferredInvocationContext.h",
     "DeferredInvocationContext.h",
     "ElapsedTimer.cpp",
     "ElapsedTimer.cpp",
     "ElapsedTimer.h",
     "ElapsedTimer.h",
-    "Environment.cpp",
-    "Environment.h",
     "Event.cpp",
     "Event.cpp",
     "Event.h",
     "Event.h",
     "EventLoop.cpp",
     "EventLoop.cpp",
@@ -81,8 +85,6 @@ source_set("sources") {
     "SOCKSProxyClient.h",
     "SOCKSProxyClient.h",
     "SecretString.cpp",
     "SecretString.cpp",
     "SecretString.h",
     "SecretString.h",
-    "SessionManagement.cpp",
-    "SessionManagement.h",
     "SharedCircularQueue.h",
     "SharedCircularQueue.h",
     "Socket.cpp",
     "Socket.cpp",
     "Socket.h",
     "Socket.h",
@@ -151,7 +153,6 @@ shared_library("LibCore") {
 
 
   deps = [
   deps = [
     ":filewatcher",
     ":filewatcher",
-    ":minimal",
     ":sources",
     ":sources",
     "//Meta/gn/build/libs/crypt",
     "//Meta/gn/build/libs/crypt",
     "//Meta/gn/build/libs/pthread",
     "//Meta/gn/build/libs/pthread",
@@ -159,4 +160,6 @@ shared_library("LibCore") {
     "//Userland/Libraries/LibTimeZone",
     "//Userland/Libraries/LibTimeZone",
     "//Userland/Libraries/LibURL",
     "//Userland/Libraries/LibURL",
   ]
   ]
+
+  public_deps = [ ":minimal" ]
 }
 }

+ 5 - 4
Userland/Libraries/LibCore/CMakeLists.txt

@@ -6,13 +6,15 @@ set(SOURCES
     Directory.cpp
     Directory.cpp
     DirectoryEntry.cpp
     DirectoryEntry.cpp
     DirIterator.cpp
     DirIterator.cpp
+    Environment.cpp
     File.cpp
     File.cpp
+    SessionManagement.cpp
     StandardPaths.cpp
     StandardPaths.cpp
     System.cpp
     System.cpp
     Version.cpp
     Version.cpp
 )
 )
 
 
-serenity_lib(LibCoreMinimal coreminimal TYPE OBJECT)
+serenity_lib(LibCoreMinimal coreminimal)
 target_link_libraries(LibCoreMinimal PRIVATE LibSystem)
 target_link_libraries(LibCoreMinimal PRIVATE LibSystem)
 
 
 set(SOURCES
 set(SOURCES
@@ -20,7 +22,6 @@ set(SOURCES
     Command.cpp
     Command.cpp
     DateTime.cpp
     DateTime.cpp
     ElapsedTimer.cpp
     ElapsedTimer.cpp
-    Environment.cpp
     Event.cpp
     Event.cpp
     EventLoop.cpp
     EventLoop.cpp
     EventLoopImplementation.cpp
     EventLoopImplementation.cpp
@@ -37,7 +38,6 @@ set(SOURCES
     ResourceImplementation.cpp
     ResourceImplementation.cpp
     ResourceImplementationFile.cpp
     ResourceImplementationFile.cpp
     SecretString.cpp
     SecretString.cpp
-    SessionManagement.cpp
     Socket.cpp
     Socket.cpp
     SOCKSProxyClient.cpp
     SOCKSProxyClient.cpp
     SystemServerTakeover.cpp
     SystemServerTakeover.cpp
@@ -70,7 +70,8 @@ else()
 endif()
 endif()
 
 
 serenity_lib(LibCore core)
 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)
 if (APPLE)
     target_link_libraries(LibCore PUBLIC "-framework CoreFoundation")
     target_link_libraries(LibCore PUBLIC "-framework CoreFoundation")