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


Reply via email to