summaryrefslogtreecommitdiff
path: root/salhelper/Library_salhelper.mk
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@gmail.com>2011-07-28 19:11:15 +0200
committerStephan Bergmann <sbergman@redhat.com>2011-12-15 11:59:03 +0100
commita4312af08cbd8c69ba4bead9608f3bf549caf7a0 (patch)
tree0f682527bc5be83f0fd87617dda41f0856ab7291 /salhelper/Library_salhelper.mk
parent9dab9a26aeaeeaabcef3f4900597ca57e7411a2d (diff)
convert salhelper to gbuild
This is a cherry-pick of Matúš's e2f30c078fcf26d481c2e90398b450f6c475a483 from the feature/gbuild branch, with the following modifications by Stephan Bergmann <sbergman@redhat.com>: * Adapt salhelper/Makefile to what all those Makefiles currently need to look like. * Do not remove salhelper/source/gcc3.map, instead add directly into it what otherwise solenv/bin/addsym.awk would add to it on Linux. * In salhelper/Library_salhelper.mk, add code that on Linux takes care of the soname and symbol versioning required for backwards compatibility. Solaris would need those features too, and its backwards compatibility is thus currently broken. Also add a bad hack to create the soname symlink (xxx.3 -> xxx) in the solver needed on non-Windows platforms (it is a bad hack for now in that it e.g. is not removed by "make clean"). * In solenv/gbuild/platform/macosx.mk, add an even worse hack to set the correct install name for libuno_salhelpergcc3.dylib.3, with a trailing ".3".
Diffstat (limited to 'salhelper/Library_salhelper.mk')
-rw-r--r--salhelper/Library_salhelper.mk81
1 files changed, 81 insertions, 0 deletions
diff --git a/salhelper/Library_salhelper.mk b/salhelper/Library_salhelper.mk
new file mode 100644
index 000000000000..c77d1f049fa0
--- /dev/null
+++ b/salhelper/Library_salhelper.mk
@@ -0,0 +1,81 @@
+# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 Matúš Kukan <matus.kukan@gmail.com>
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Library_Library,salhelper))
+
+$(eval $(call gb_Library_add_package_headers,salhelper,salhelper_inc))
+
+$(eval $(call gb_Library_add_defs,salhelper,\
+ -DSALHELPER_DLLIMPLEMENTATION \
+))
+
+$(eval $(call gb_Library_add_linked_libs,salhelper,\
+ sal \
+ $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,salhelper,\
+ salhelper/source/condition \
+ salhelper/source/dynload \
+ salhelper/source/simplereferenceobject \
+ salhelper/source/timer \
+))
+
+# At least on Linux, for backwards compatibility the salhelper library needs a
+# specific soname and symbol versioning. The symbols in the gcc3.map should be
+# those not already filtered out due to hidden visibility, so combining the
+# visibility feature with the version map file feature works well.
+# Solaris would need something like this, too. Its backwards compatibility is
+# broken for now:
+
+ifeq ($(OS),LINUX)
+
+$(eval $(call gb_Library_add_ldflags,salhelper, \
+ -Wl$(COMMA)--soname=libuno_salhelpergcc3.so.3 \
+ -Wl$(COMMA)--version-script=$(SRCDIR)/salhelper/source/gcc3.map \
+))
+
+$(call gb_LinkTarget_get_target,$(call \
+gb_Library_get_linktargetname,salhelper)): $(SRCDIR)/salhelper/source/gcc3.map
+
+endif
+
+# A hack to generate the soname symlink in the solver:
+
+ifneq ($(OS),WNT)
+
+$(call gb_Library_get_target,salhelper): | \
+ $(call gb_Library_get_target,salhelper).3
+
+$(call gb_Library_get_target,salhelper).3:
+ $(call gb_Helper_abbreviate_dirs,rm -f $@)
+ $(call gb_Helper_abbreviate_dirs, \
+ ln -s $(notdir $(call gb_Library_get_target,salhelper)) $@)
+
+endif
+
+# vim: set noet sw=4 ts=4: