diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index af521eb1da..1fcda5a3d1 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -84,14 +84,12 @@ SYSTEM_DEMOS = BSnow Chart Clock Cortex FontDemo ICU_LIBS = libicu-common.so libicu-data.so libicu-i18n.so ; SYSTEM_LIBS = - libalm.so libbe.so libbsd.so libbnetapi.so libdebug.so libdevice.so - libfluidsynth.so libfreetype.so + libfreetype.so libgame.so libGL.so libgnu.so - libilmimf.so libjpeg.so - liblinprog.so liblocale.so liblpsolve55.so + liblocale.so libmail.so libmedia.so libmidi.so libmidi2.so libnetwork.so libpng.so @@ -102,6 +100,10 @@ SYSTEM_LIBS = $(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++) ; PRIVATE_SYSTEM_LIBS = + libalm.so + libfluidsynth.so + libilmimf.so + liblinprog.so liblpsolve55.so $(ICU_LIBS) ; SYSTEM_SERVERS = app_server cddb_daemon debug_server input_server mail_daemon diff --git a/build/jam/ImageRules b/build/jam/ImageRules index f360d64af6..be9fe63e6a 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -1136,13 +1136,24 @@ rule AddLibrariesToHaikuHybridImage directory : libs 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 ; + local abiMajor = [ on $(lib) return $(HAIKU_LIB_ABI_MAJOR) ] ; + if $(abiMajor) { + local abiMajorLib = $(lib).$(abiMajor) ; + local abiMinor = [ on $(lib) return $(HAIKU_LIB_ABI_MINOR) ] ; + if $(abiMinor) { + local abiMinorLib = $(abiMajorLib).$(abiMinor) ; + AddFilesToHaikuHybridImage $(directory) + : $(lib) : $(abiMinorLib) : true ; + AddSymlinkToHaikuHybridImage $(directory) + : $(abiMinorLib) : $(abiMajorLib) : : true ; + AddSymlinkToHaikuHybridImage $(directory) + : $(abiMinorLib) : $(lib) : : true ; + } else { + AddFilesToHaikuHybridImage $(directory) + : $(lib) : $(abiMajorLib) : true ; + AddSymlinkToHaikuHybridImage $(directory) + : $(abiMajorLib) : $(lib) : : true ; + } } else { AddFilesToHaikuHybridImage $(directory) : $(lib) : : true ; } diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index 1367d59dba..b3d6546290 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -424,20 +424,24 @@ rule SharedLibraryFromObjects rule SharedLibrary { - # SharedLibrary : : ; + # SharedLibrary : : : : ; local lib = $(1) ; local sources = [ FGristFiles $(2) ] ; local objects = $(sources:S=$(SUFOBJ)) ; local libs = $(3) ; - local apiVersion = $(4) ; + local abiMajor = $(4) ; # major ABI (soname) version for lib (if any) + local abiMinor = $(5) ; # additional minor suffix (optional) if ! [ IsPlatformSupportedForTarget $(1) ] { return ; } - if $(apiVersion) { - HAIKU_SONAME on $(lib) = $(lib:BS).$(apiVersion) ; - HAIKU_LIB_API_VERSION on $(lib) = $(apiVersion) ; + if $(abiMajor) { + HAIKU_SONAME on $(lib) = $(lib:BS).$(abiMajor) ; + HAIKU_LIB_ABI_MAJOR on $(lib) = $(abiMajor) ; + if $(abiMinor) { + HAIKU_LIB_ABI_MINOR on $(lib) = $(abiMinor) ; + } } InheritPlatform $(objects) : $(lib) ; diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index bba640372a..9dfce496cf 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -403,6 +403,18 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] && $(TARGET_ARCH) = x86 { for lib in $(SYSTEM_LIBS) $(SYSTEM_LIBS_LIBGL_ALIASES) $(developmentLibs) { AddSymlinkToHaikuHybridImage $(abiDirTokens) lib : /system/lib $(lib:BS) : : true ; + local abiMajor = [ on $(lib) return $(HAIKU_LIB_ABI_MAJOR) ] ; + local abiMajorLib = $(lib:BS).$(abiMajor) ; + if $(abiMajor) { + local abiMinor = [ on $(lib) return $(HAIKU_LIB_ABI_MINOR) ] ; + if $(abiMinor) { + local abiMinorLib = $(abiMinorLib).$(abiMinor) ; + AddSymlinkToHaikuHybridImage $(abiDirTokens) lib + : /system/lib $(abiMinorLib) : : true ; + } + AddSymlinkToHaikuHybridImage $(abiDirTokens) lib + : /system/lib $(abiMajorLib) : : true ; + } } # static libraries