diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index f858fc15d4..af521eb1da 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -99,7 +99,10 @@ SYSTEM_LIBS = libscreensaver.so libtextencoding.so libtracker.so libtranslation.so libz.so - $(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++) $(ICU_LIBS) + $(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++) +; +PRIVATE_SYSTEM_LIBS = + $(ICU_LIBS) ; SYSTEM_SERVERS = app_server cddb_daemon debug_server input_server mail_daemon media_addon_server media_server midi_server mount_server net_server @@ -251,7 +254,8 @@ AddDriversToHaikuImage net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ; AddFilesToHaikuImage system : kernel_$(TARGET_ARCH) ; # libs -AddFilesToHaikuHybridImage system lib : $(SYSTEM_LIBS) : : true ; +AddLibrariesToHaikuHybridImage system lib + : $(SYSTEM_LIBS) $(PRIVATE_SYSTEM_LIBS) ; # libnetwork.so replaces quite a few libraries SYSTEM_LIBS_LIBNETWORK_ALIASES diff --git a/build/jam/ImageRules b/build/jam/ImageRules index 14c6fe1c97..f360d64af6 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -1127,6 +1127,28 @@ rule AddSymlinkToHaikuHybridImage directoryTokens : linkTarget : linkName : $(alternativeLinkTarget) : $(linkName) ; } +rule AddLibrariesToHaikuHybridImage directory : libs +{ + # AddLibraryToHaikuHybridImage : + # + # Installs libraries with the appropriate links onto the image. + # + + local lib ; + for lib in $(libs) { + local apiVersion = [ on $(lib) return $(HAIKU_LIB_API_VERSION) ] ; + if $(apiVersion) { + local apiLib = $(lib).$(apiVersion) ; + AddFilesToHaikuHybridImage $(directory) + : $(lib) : $(apiLib) : true ; + AddSymlinkToHaikuHybridImage $(directory) + : $(apiLib) : $(lib) : : true ; + } else { + AddFilesToHaikuHybridImage $(directory) : $(lib) : : true ; + } + } +} + #pragma mark - Floppy Boot Archive rules diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index 91c8c6039c..1367d59dba 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -429,11 +429,17 @@ rule SharedLibrary local sources = [ FGristFiles $(2) ] ; local objects = $(sources:S=$(SUFOBJ)) ; local libs = $(3) ; + local apiVersion = $(4) ; if ! [ IsPlatformSupportedForTarget $(1) ] { return ; } + if $(apiVersion) { + HAIKU_SONAME on $(lib) = $(lib:BS).$(apiVersion) ; + HAIKU_LIB_API_VERSION on $(lib) = $(apiVersion) ; + } + InheritPlatform $(objects) : $(lib) ; Objects $(sources) ; SharedLibraryFromObjects $(lib) : $(objects) : $(libs) ;