Author: damjan Date: Wed Dec 28 14:53:22 2016 New Revision: 1776288 URL: http://svn.apache.org/viewvc?rev=1776288&view=rev Log: I've heard rumours it's a POSIX feature, but so far the problem only appears on Linux, not FreeBSD.
Linking is one-pass, using symbols exported by libraries to resolve missing symbols in previous, but *NOT* subsequent, objects (including libraries). This means the order libraries are given to the linker does matter, because symbols missing in latter objects cannot be satisfied by former objects. Static libraries should be therefore be linked to before dynamic libraries, as static libraries cannot specify dependencies on dynamic libraries, yet might need symbols from them. This should fix the main/slideshow build problem on Linux. Only Linux has been tested. The other platforms are guessed. Patch by: me Modified: openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk openoffice/trunk/main/solenv/gbuild/platform/linux.mk openoffice/trunk/main/solenv/gbuild/platform/os2.mk openoffice/trunk/main/solenv/gbuild/platform/solaris.mk Modified: openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk URL: http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk?rev=1776288&r1=1776287&r2=1776288&view=diff ============================================================================== --- openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk (original) +++ openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk Wed Dec 28 14:53:22 2016 @@ -256,12 +256,12 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ $(subst \d,$$,$(RPATH)) \ $(T_LDFLAGS) \ + -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \ $(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \ $(patsubst %,-l%,$(EXTERNAL_LIBS)) \ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ - -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \ $(LIBS) \ -o $(1)) endef Modified: openoffice/trunk/main/solenv/gbuild/platform/linux.mk URL: http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/linux.mk?rev=1776288&r1=1776287&r2=1776288&view=diff ============================================================================== --- openoffice/trunk/main/solenv/gbuild/platform/linux.mk (original) +++ openoffice/trunk/main/solenv/gbuild/platform/linux.mk Wed Dec 28 14:53:22 2016 @@ -237,9 +237,9 @@ $(call gb_Helper_abbreviate_dirs,\ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ + -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \ $(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \ $(patsubst %,-l%,$(EXTERNAL_LIBS)) \ - -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \ $(LIBS) \ -lc \ -o $(1)) Modified: openoffice/trunk/main/solenv/gbuild/platform/os2.mk URL: http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/os2.mk?rev=1776288&r1=1776287&r2=1776288&view=diff ============================================================================== --- openoffice/trunk/main/solenv/gbuild/platform/os2.mk (original) +++ openoffice/trunk/main/solenv/gbuild/platform/os2.mk Wed Dec 28 14:53:22 2016 @@ -322,9 +322,9 @@ $(call gb_Helper_abbreviate_dirs_native, @$${RESPONSEFILE} \ $(if $(DLLTARGET), $(DLLDEF)) \ $(NATIVERES) \ + $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ $(patsubst %.lib,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \ $(patsubst %,-l%,$(EXTERNAL_LIBS)) \ - $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ $(LIBS) \ $(if $(DLLTARGET),-o $(DLLTARGET), -o $(1) ); \ RC=$$?; rm $${RESPONSEFILE} \ Modified: openoffice/trunk/main/solenv/gbuild/platform/solaris.mk URL: http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/solaris.mk?rev=1776288&r1=1776287&r2=1776288&view=diff ============================================================================== --- openoffice/trunk/main/solenv/gbuild/platform/solaris.mk (original) +++ openoffice/trunk/main/solenv/gbuild/platform/solaris.mk Wed Dec 28 14:53:22 2016 @@ -207,12 +207,12 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ $(subst \d,$$,$(RPATH)) \ $(T_LDFLAGS) \ + $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ $(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \ $(patsubst %,-l%,$(EXTERNAL_LIBS)) \ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ - $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ $(LIBS) \ -o $(1)) endef