diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index 0f8c712d6f..4ce5d31ca2 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -154,6 +154,12 @@ rule StaticLibrary InheritPlatform $(objects) : $(lib) ; + if $(TARGET_CC_IS_LEGACY_GCC_$(TARGET_PACKAGING_ARCH)) = 0 + && [ on $(lib) return $(NO_HIDDEN_VISIBILITY) ] != 1 { + CCFLAGS on $(objects) += -fvisibility=hidden ; + C++FLAGS on $(objects) += -fvisibility=hidden ; + } + StaticLibraryFromObjects $(lib) : $(objects) $(otherObjects) ; Objects $(2) ; } diff --git a/src/build/libroot/Jamfile b/src/build/libroot/Jamfile index b665621d61..11f335159a 100644 --- a/src/build/libroot/Jamfile +++ b/src/build/libroot/Jamfile @@ -92,6 +92,7 @@ BuildPlatformStaticLibrary libroot_build.a : USES_BE_API on [ FGristFiles function_remapper$(SUFOBJ) ] = true ; +NO_HIDDEN_VISIBILITY on libroot_build_function_remapper.a = 1 ; BuildPlatformStaticLibraryPIC libroot_build_function_remapper.a : function_remapper.cpp ; diff --git a/src/kits/network/libnetservices/JamCommon b/src/kits/network/libnetservices/JamCommon index f58bbf7a0f..b3a419ef16 100644 --- a/src/kits/network/libnetservices/JamCommon +++ b/src/kits/network/libnetservices/JamCommon @@ -54,13 +54,6 @@ for architectureObject in [ MultiArchSubDirSetup ] { : <$(architecture)>libshared.a ; } else { - if $(HAIKU_CC_IS_LEGACY_GCC_$(architecture)) = 0 { - # In order to not have conflicts between libraries built against - # different versions of libnetservices.a, prevent symbols from - # being re-exported from the static library. - SubDirC++Flags -fvisibility=hidden ; - } - StaticLibrary [ MultiArchDefaultGristFiles libnetservices.a ] : $(sources) Geolocation.cpp diff --git a/src/kits/shared/Jamfile b/src/kits/shared/Jamfile index f3babfc1d4..5e98940629 100644 --- a/src/kits/shared/Jamfile +++ b/src/kits/shared/Jamfile @@ -24,6 +24,10 @@ for architectureObject in [ MultiArchSubDirSetup ] { # for BKeymap UsePrivateHeaders interface ; + # FIXME: These symbols should be hidden, but too many applications depend + # on them at present for that. + NO_HIDDEN_VISIBILITY on <$(architecture)>libshared.a = 1 ; + StaticLibrary <$(architecture)>libshared.a : AboutMenuItem.cpp ArgumentVector.cpp diff --git a/src/libs/icon/Jamfile b/src/libs/icon/Jamfile index c8d580fe01..a27db9ebd6 100644 --- a/src/libs/icon/Jamfile +++ b/src/libs/icon/Jamfile @@ -20,12 +20,18 @@ UsePrivateHeaders shared ; local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { + local architecture = $(TARGET_PACKAGING_ARCH) ; + local sourceDir ; for sourceDir in $(sourceDirs) { SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src libs icon $(sourceDir) ] ; } + # Too many applications depend on libicon APIs being visible in libbe; + # so for now, prevent -fvisiblity=hidden from being set. + NO_HIDDEN_VISIBILITY on [ MultiArchDefaultGristFiles libicon.a ] = 1 ; + StaticLibrary [ MultiArchDefaultGristFiles libicon.a ] : # flat_icon FlatIconFormat.cpp diff --git a/src/servers/app/drawing/Jamfile b/src/servers/app/drawing/Jamfile index 2253c84fb3..186835699f 100644 --- a/src/servers/app/drawing/Jamfile +++ b/src/servers/app/drawing/Jamfile @@ -15,6 +15,8 @@ UseBuildFeatureHeaders freetype ; Includes [ FGristFiles AlphaMask.cpp AlphaMaskCache.cpp DrawingEngine.cpp ] : [ BuildFeatureAttribute freetype : headers ] ; +NO_HIDDEN_VISIBILITY on libasdrawing.a = 1 ; + StaticLibrary libasdrawing.a : AlphaMask.cpp AlphaMaskCache.cpp diff --git a/src/servers/app/stackandtile/Jamfile b/src/servers/app/stackandtile/Jamfile index 1af46144a9..060a86d399 100644 --- a/src/servers/app/stackandtile/Jamfile +++ b/src/servers/app/stackandtile/Jamfile @@ -23,6 +23,8 @@ local sources = Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute freetype : headers ] ; +NO_HIDDEN_VISIBILITY on libstackandtile.a = 1 ; + StaticLibrary libstackandtile.a : $(sources) ;