From 291785f88f68d0a3127d15b056236626a8ce8cb8 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Wed, 27 Jan 2010 23:13:49 +0000 Subject: [PATCH] * added support for library (API-)versioning and private system libraries to build system * declared ICU-libs as private system libraries, which causes them to no longer be available for building software (they no longer are linked from the development lib folder, so the linker won't find them) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35323 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- build/jam/HaikuImage | 8 ++++++-- build/jam/ImageRules | 22 ++++++++++++++++++++++ build/jam/MainBuildRules | 6 ++++++ 3 files changed, 34 insertions(+), 2 deletions(-) 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) ;