Author: damjan
Date: Tue Nov 28 04:44:42 2017
New Revision: 1816518
URL: http://svn.apache.org/viewvc?rev=1816518&view=rev
Log:
Add the ability to set a linker script in gbuild that is used to
version symbols.
This has been a bottleneck in continued gbuild porting and should
help further development considerably.
Patch by: me
Modified:
openoffice/trunk/main/solenv/gbuild/Library.mk
openoffice/trunk/main/solenv/gbuild/LinkTarget.mk
openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk
openoffice/trunk/main/solenv/gbuild/platform/linux.mk
openoffice/trunk/main/solenv/gbuild/platform/macosx.mk
openoffice/trunk/main/solenv/gbuild/platform/os2.mk
openoffice/trunk/main/solenv/gbuild/platform/solaris.mk
Modified: openoffice/trunk/main/solenv/gbuild/Library.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/Library.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/Library.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/Library.mk Tue Nov 28 04:44:42 2017
@@ -133,6 +133,7 @@ $(eval $(foreach method,\
add_package_headers \
add_sdi_headers \
add_precompiled_header \
+ set_versionmap \
,\
$(call gb_Library__forward_to_Linktarget,$(method))\
))
Modified: openoffice/trunk/main/solenv/gbuild/LinkTarget.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/LinkTarget.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/LinkTarget.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/LinkTarget.mk Tue Nov 28 04:44:42 2017
@@ -308,6 +308,8 @@ $(call gb_LinkTarget_get_headers_target,
# files.
# - TARGETTYPE is the type of linktarget as some platforms need very different
# command to link different targettypes.
+# - VERSIONMAP is the linker script, usually used to version a dynamic
+# library's symbols (on *nix/Mac).
#
# Since most variables are set on the linktarget and not on the object, the
# object learns about these setting via GNU makes scoping of target variables.
@@ -351,6 +353,7 @@ $(call gb_LinkTarget_get_target,$(1)) :
$(call gb_LinkTarget_get_target,$(1)) : EXTERNAL_LIBS :=
$(call gb_LinkTarget_get_target,$(1)) : LIBS :=
$(call gb_LinkTarget_get_target,$(1)) : TARGETTYPE :=
+$(call gb_LinkTarget_get_target,$(1)) : VERSIONMAP :=
$(call gb_LinkTarget_get_headers_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : PCH_NAME :=
$(call gb_LinkTarget_get_target,$(1)) : PCHOBJS :=
@@ -373,6 +376,7 @@ $(call gb_LinkTarget_get_dep_target,$(1)
$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE :=
$$(gb_LinkTarget_INCLUDE)
$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE_STL :=
$$(gb_LinkTarget_INCLUDE_STL)
$(call gb_LinkTarget_get_dep_target,$(1)) : TARGETTYPE :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : VERSIONMAP :=
$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_NAME :=
endif
@@ -681,6 +685,11 @@ $(call gb_LinkTarget_get_target,$(1)) \
$(call gb_LinkTarget_get_dep_target,$(1)) : TARGETTYPE := $(2)
endef
+define gb_LinkTarget_set_versionmap
+$(call gb_LinkTarget_get_target,$(1)) \
+$(call gb_LinkTarget_get_dep_target,$(1)) : VERSIONMAP := $(2)
+endef
+
define gb_LinkTarget_set_dlltarget
$(call gb_LinkTarget_get_clean_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : DLLTARGET := $(2)
Modified: openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/platform/freebsd.mk Tue Nov 28 04:44:42
2017
@@ -256,6 +256,7 @@ $(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter
Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call
gb_CObject_get_target,$(object))) \
@@ -298,6 +299,7 @@ gb_Library_STLEXT := port_gcc$(gb_Librar
else
gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
endif
+gb_Library_VERSIONMAPFLAG := -Wl,--version-script
ifeq ($(CPUNAME),X86_64)
gb_Library_OOOEXT := $(gb_Library_PLAINEXT)
Modified: openoffice/trunk/main/solenv/gbuild/platform/linux.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/linux.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/platform/linux.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/platform/linux.mk Tue Nov 28 04:44:42
2017
@@ -245,6 +245,7 @@ $(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter
Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call
gb_CObject_get_target,$(object))) \
@@ -288,6 +289,7 @@ gb_Library_STLEXT := port_gcc$(gb_Librar
else
gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
endif
+gb_Library_VERSIONMAPFLAG := -Wl,--version-script
ifeq ($(CPUNAME),X86_64)
gb_Library_OOOEXT := $(gb_Library_PLAINEXT)
Modified: openoffice/trunk/main/solenv/gbuild/platform/macosx.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/macosx.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/platform/macosx.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/platform/macosx.mk Tue Nov 28 04:44:42
2017
@@ -281,6 +281,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(filter
Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
+ $(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
$(call gb_LinkTarget__get_liblinkflags,$(LINKED_LIBS)) \
$(foreach object,$(COBJECTS),$(call
gb_CObject_get_target,$(object))) \
$(foreach object,$(CXXOBJECTS),$(call
gb_CxxObject_get_target,$(object))) \
@@ -319,6 +320,7 @@ endef
gb_Library_DEFS :=
gb_Library_TARGETTYPEFLAGS := -dynamiclib -single_module
+gb_Library_VERSIONMAPFLAG := -Wl,-exported_symbols_list
gb_Library_SYSPRE := lib
gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
gb_Library_PLAINEXT := .dylib
Modified: openoffice/trunk/main/solenv/gbuild/platform/os2.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/os2.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/platform/os2.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/platform/os2.mk Tue Nov 28 04:44:42 2017
@@ -322,6 +322,7 @@ $(call gb_Helper_abbreviate_dirs_native,
$(if $(filter
Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter
StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \
$(if $(filter
Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
+ $(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
$(T_LDFLAGS) \
@$${RESPONSEFILE} \
$(if $(DLLTARGET), $(DLLDEF)) \
@@ -361,6 +362,7 @@ endef
gb_Library_DEFS := -D_DLL_
gb_Library_TARGETTYPEFLAGS := -Zdll
+gb_Library_VERSIONMAPFLAG := -Wl,--version-script
gb_Library_get_rpath :=
gb_Library_SYSPRE :=
Modified: openoffice/trunk/main/solenv/gbuild/platform/solaris.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/solenv/gbuild/platform/solaris.mk?rev=1816518&r1=1816517&r2=1816518&view=diff
==============================================================================
--- openoffice/trunk/main/solenv/gbuild/platform/solaris.mk (original)
+++ openoffice/trunk/main/solenv/gbuild/platform/solaris.mk Tue Nov 28 04:44:42
2017
@@ -205,6 +205,7 @@ $(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter
Library,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(VERSIONMAP),$(gb_Library_VERSIONMAPFLAG) $(VERSIONMAP)) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call
gb_CObject_get_target,$(object))) \
@@ -246,6 +247,7 @@ gb_Library_STLEXT := port_sunpro$(gb_Lib
else
gb_Library_STLEXT := port_sunpro_debug$(gb_Library_PLAINEXT)
endif
+gb_Library_VERSIONMAPFLAG := -M
ifeq ($(CPUNAME),INTEL)
gb_Library_OOOEXT := $(gb_Library_PLAINEXT)