1# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
2#
3# This file is part of the LibreOffice project.
4#
5# This Source Code Form is subject to the terms of the Mozilla Public
6# License, v. 2.0. If a copy of the MPL was not distributed with this
7# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8#
9
10ifeq ($(DISABLE_DYNLOADING),TRUE)
11
12gb_STDLIBS := -static-libstdc++
13
14endif
15
16# No unit testing can be run
17gb_CppunitTest_CPPTESTPRECOMMAND := :
18
19# Re-define this from unxgcc.mk with some small but important
20# changes. Just temporarily done this way, shm_get promised to
21# eventually enable this to be done this in some more elegant and less
22# redundant fashion.
23
24gb_LinkTarget_LDFLAGS += \
25    -Wl,-z,defs \
26	-Wl,--as-needed \
27	-Wl,--no-add-needed
28
29define gb_LinkTarget__command_dynamiclink
30$(call gb_Helper_abbreviate_dirs,\
31	$(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
32		-shared \
33		$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
34		$(subst \d,$$,$(RPATH)) \
35		$(T_LDFLAGS) \
36		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
37		$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
38		$(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
39		$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
40		$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
41		$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
42		-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
43		$(T_LIBS) \
44		$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))))) \
45		-o $(1))
46endef
47
48ifeq ($(DISABLE_DYNLOADING),TRUE)
49
50# Library class
51
52gb_Library_DEFS :=
53gb_Library_SYSPRE := lib
54gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
55gb_Library_PLAINEXT := .a
56gb_Library_DLLEXT := .a
57gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
58
59gb_Library_OOOEXT := $(gb_Library_DLLPOSTFIX)$(gb_Library_PLAINEXT)
60gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
61
62endif
63
64# Prefix UNO library filenames with "lib"
65gb_Library_FILENAMES := \
66	$(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
67	$(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
68	$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
69	$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
70	$(foreach lib,$(gb_Library_PRIVATELIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
71	$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
72	$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
73
74
75ifeq ($(DISABLE_DYNLOADING),TRUE)
76
77gb_Library_FILENAMES += \
78	$(foreach lib,$(gb_Library_PLAINLIBS_OXT),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
79	$(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \
80
81gb_Library_LAYER := \
82	$(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
83	$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \
84	$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
85	$(foreach lib,$(gb_Library_PLAINLIBS_OXT),$(lib):OXT) \
86	$(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):NONE) \
87	$(foreach lib,$(gb_Library_PRIVATELIBS_URE),$(lib):OOO) \
88	$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \
89	$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \
90	$(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):OXT) \
91
92define gb_Library_Library_platform
93$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1))
94
95endef
96
97# CppunitTest class
98
99gb_CppunitTest_get_filename = libtest_$(1).a
100
101# No use for Cppunit targets now for Android (which would be just
102# static archives), they are just a waste of disk space.
103define gb_LinkTarget__command
104$(call gb_Output_announce,$(2),$(true),LNK,4)
105$(if $(filter CppunitTest,$(TARGETTYPE)), \
106	touch $(1), \
107	$(call gb_LinkTarget__command_staticlink,$(1)))
108endef
109
110endif
111
112# No DT_RPATH or DT_RUNPATH support in the Bionic dynamic linker so
113# don't bother generating such.
114
115define gb_Library_get_rpath
116endef
117
118define gb_Executable_get_rpath
119endef
120
121gb_LinkTarget_LDFLAGS := $(subst -Wl$(COMMA)-rpath-link$(COMMA)$(SYSBASE)/lib:$(SYSBASE)/usr/lib,,$(gb_LinkTarget_LDFLAGS))
122
123gb_Library__set_soversion_script_platform =
124
125
126# vim: set noet sw=4 ts=4:
127