diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index d168fdb08c..0f8c712d6f 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -508,6 +508,9 @@ rule LinkAgainst local libs = $(2) ; local mapLibs = $(3:E=true) ; + local linkLibs ; + local needLibs ; + on $(target) { local i ; @@ -525,11 +528,7 @@ rule LinkAgainst libs = $(mappedLibs) ; } - local linkLibs ; - local needLibs ; - - for i in $(libs) - { + for i in $(libs) { local isfile = ; if $(i:D) || $(i:G) { isfile = true ; @@ -556,7 +555,18 @@ rule LinkAgainst linkLibs += $(i) ; } } + } + # Copy in the library dependencies from any static libraries first. + # (We have to do the [ on ... ] outside the on { } block. ) + for i in $(needLibs) { + if $(i:S) = .a { + needLibs += [ on $(i) return $(NEEDLIBS) ] ; + linkLibs += [ on $(i) return $(LINKLIBS) ] ; + } + } + + on $(target) { NEEDLIBS on $(1) = $(NEEDLIBS) $(needLibs) ; LINKLIBS on $(1) = $(LINKLIBS) -l$(linkLibs) ; diff --git a/src/kits/network/libnetservices/JamCommon b/src/kits/network/libnetservices/JamCommon index 366dea90c2..f58bbf7a0f 100644 --- a/src/kits/network/libnetservices/JamCommon +++ b/src/kits/network/libnetservices/JamCommon @@ -66,6 +66,8 @@ for architectureObject in [ MultiArchSubDirSetup ] { Geolocation.cpp UrlResult.cpp ; + LinkAgainst [ MultiArchDefaultGristFiles libnetservices.a ] : + <$(architecture)>libshared.a ; } SEARCH on [ FGristFiles $(sources) ]