Updated core
[LibreOffice.git] / solenv / gbuild / platform / solaris.mk
blob30055c336aaf663fc3a47427c41c5569b28d83e9
1 # -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
3 # This file is part of the LibreOffice project.
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/.
9 # This file incorporates work covered by the following license notice:
11 # Licensed to the Apache Software Foundation (ASF) under one or more
12 # contributor license agreements. See the NOTICE file distributed
13 # with this work for additional information regarding copyright
14 # ownership. The ASF licenses this file to you under the Apache
15 # License, Version 2.0 (the "License"); you may not use this file
16 # except in compliance with the License. You may obtain a copy of
17 # the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 gb_DEVINSTALLROOT := $(DEVINSTALLDIR)/opt
22 gb_PROGRAMDIRNAME := program
24 include $(GBUILDDIR)/platform/com_GCC_defs.mk
26 gb_MKTEMP := mktemp -t gbuild.XXXXXX
28 ifneq ($(origin AR),default)
29 gb_AR := $(AR)
30 endif
32 # use CC/CXX if they are nondefaults
33 ifneq ($(origin CC),default)
34 gb_CC := $(CC)
35 gb_GCCP := $(CC)
36 endif
37 ifneq ($(origin CXX),default)
38 gb_CXX := $(CXX)
39 endif
41 ifeq ($(CPUNAME),SPARC)
42 gb_CPUDEFS := -D__sparcv8plus
43 endif
45 gb_OSDEFS := \
46 -D$(OS) \
47 -DSYSV \
48 -DSUN \
49 -DSUN4 \
50 -D_REENTRANT \
51 -D_POSIX_PTHREAD_SEMANTICS \
52 -D_PTHREADS \
53 -DUNIX \
54 -DUNX \
55 $(PTHREAD_CFLAGS) \
57 gb_CFLAGS := \
58 $(gb_CFLAGS_COMMON) \
59 -fPIC \
60 -Wdeclaration-after-statement \
61 -Wshadow \
63 gb_CXXFLAGS := \
64 $(gb_CXXFLAGS_COMMON) \
65 -fPIC \
66 -Wshadow \
67 -Woverloaded-virtual \
68 -Wno-non-virtual-dtor \
70 # enable debug STL
71 ifeq ($(gb_ENABLE_DBGUTIL),$(true))
72 gb_COMPILERDEFS += \
73 -D_GLIBCXX_DEBUG \
75 endif
77 gb_CCVER := $(shell $(gb_CC) -dumpversion | $(gb_AWK) -F. -- '{ print $$1*10000+$$2*100+$$3 }')
78 gb_GccLess460 := $(shell expr $(gb_CCVER) \< 40600)
80 #At least SLED 10.2 gcc 4.3 overly agressively optimizes uno::Sequence into
81 #junk, so only strict-alias on >= 4.6.0
82 gb_StrictAliasingUnsafe := $(gb_GccLess460)
84 ifeq ($(gb_StrictAliasingUnsafe),1)
85 gb_CFLAGS += -fno-strict-aliasing
86 gb_CXXFLAGS += -fno-strict-aliasing
87 endif
89 ifeq ($(HAVE_CXX0X),TRUE)
90 #Currently, as well as for its own merits, c++11/c++0x mode allows use to use
91 #a template for SAL_N_ELEMENTS to detect at compiler time its misuse
92 gb_CXXFLAGS += -std=c++0x
94 #We have so many std::auto_ptr uses that we need to be able to disable
95 #warnings for those so that -Werror continues to be useful, seeing as moving
96 #to unique_ptr isn't an option when we must support different compilers
98 #When we are using 4.6.0 we can use gcc pragmas to selectively silence auto_ptr
99 #warnings in isolation, but for <= 4.5.X we need to globally disable
100 #deprecation
101 ifeq ($(gb_GccLess460),1)
102 gb_CXXFLAGS += -Wno-deprecated-declarations
103 endif
104 endif
106 ifeq ($(ENABLE_LTO),TRUE)
107 gb_LinkTarget_LDFLAGS += -fuse-linker-plugin $(gb_COMPILERDEFAULTOPTFLAGS)
108 endif
110 ifneq ($(strip $(SYSBASE)),)
111 gb_CXXFLAGS += --sysroot=$(SYSBASE)
112 gb_CFLAGS += --sysroot=$(SYSBASE)
113 gb_LinkTarget_LDFLAGS += \
114 -Wl,--sysroot=$(SYSBASE)
115 endif
117 #JAD# -Wl,-rpath-link,$(SYSBASE)/lib:$(SYSBASE)/usr/lib \
119 gb_LinkTarget_LDFLAGS += \
120 -L$(SYSBASE)/lib \
121 -L$(SYSBASE)/usr/lib \
122 -Wl,-z,combreloc \
123 $(SOLARLIB) \
125 ifeq ($(HAVE_LD_HASH_STYLE),TRUE)
126 gb_LinkTarget_LDFLAGS += \
127 -Wl,--hash-style=$(WITH_LINKER_HASH_STYLE) \
129 endif
131 ifneq ($(HAVE_LD_BSYMBOLIC_FUNCTIONS),)
132 gb_LinkTarget_LDFLAGS += \
133 -Wl,--dynamic-list-cpp-new \
134 -Wl,--dynamic-list-cpp-typeinfo \
135 -Wl,-Bsymbolic-functions \
137 endif
139 ifneq ($(gb_DEBUGLEVEL),0)
140 gb_LINKEROPTFLAGS :=
141 else
142 gb_LINKEROPTFLAGS := -Wl,-O1
143 endif
145 gb_DEBUG_CFLAGS := -ggdb2 -finline-limit=0 -fno-inline -fno-default-inline
147 ifneq ($(gb_DEBUGLEVEL),0)
148 gb_COMPILEROPTFLAGS :=
149 else
150 gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS)
151 endif
153 gb_COMPILERNOOPTFLAGS := -O0
155 # LinkTarget class
157 define gb_LinkTarget__get_rpath_for_layer
158 $(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
159 endef
161 gb_LinkTarget__RPATHS := \
162 URELIB:\dORIGIN \
163 UREBIN:\dORIGIN/../lib:\dORIGIN \
164 OOO:\dORIGIN:\dORIGIN/../ure-link/lib \
165 SDKBIN:\dORIGIN/../../ure-link/lib \
166 OXT: \
167 NONE:\dORIGIN/../lib:\dORIGIN \
169 gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR)
170 gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
172 ifeq ($(gb_SYMBOL),$(true))
173 gb_LinkTarget_CXXFLAGS += -ggdb2
174 gb_LinkTarget_CFLAGS += -ggdb2
175 endif
177 # note that `cat $(extraobjectlist)` is needed to build with older gcc versions, e.g. 4.1.2 on SLED10
178 # we want to use @$(extraobjectlist) in the long run
179 define gb_LinkTarget__command_dynamiclink
180 $(call gb_Helper_abbreviate_dirs,\
181 mkdir -p $(dir $(1)) && \
182 $(if $(CXXOBJECTS)$(GENCXXOBJECTS)$(EXTRAOBJECTLISTS),$(gb_CXX),$(gb_CC)) \
183 $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
184 $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
185 $(subst \d,$$,$(RPATH)) \
186 $(T_LDFLAGS) \
187 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
188 $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
189 $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
190 $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
191 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
192 $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
193 -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
194 $(LIBS) \
195 $(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))))) \
196 -o $(1))
197 $(if $(filter Library,$(TARGETTYPE)),\
198 $(NM) --extern-only --dynamic --format=posix $(1) \
199 | cut -d' ' -f1-2 | grep -v U$$ \
200 > $(1).exports.tmp && \
201 if cmp -s $(1).exports.tmp $(1).exports; \
202 then rm $(1).exports.tmp; \
203 else mv $(1).exports.tmp $(1).exports; touch -r $(1) $(1).exports; \
205 endef
207 define gb_LinkTarget__command_staticlink
208 $(call gb_Helper_abbreviate_dirs,\
209 mkdir -p $(dir $(1)) && \
210 rm -f $(1) && \
211 $(gb_AR) -rsu $(1) \
212 $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
213 $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
214 $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
215 $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
216 $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
217 $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),@$(extraobjectlist)) \
218 $(if $(findstring s,$(MAKEFLAGS)),2> /dev/null))
219 endef
221 define gb_LinkTarget__command
222 $(call gb_Output_announce,$(2),$(true),LNK,4)
223 $(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
224 $(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
225 endef
228 # Library class
230 gb_Library_DEFS :=
231 gb_Library_TARGETTYPEFLAGS := -shared
232 gb_Library_SYSPRE := lib
233 gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
234 gb_Library_PLAINEXT := .so
235 gb_Library_DLLEXT := .so
236 gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
238 gb_Library_OOOEXT := $(gb_Library_DLLPOSTFIX)$(gb_Library_PLAINEXT)
239 gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
241 gb_STDLIBS := \
242 -lm \
243 -lnsl \
244 -lsocket \
246 gb_Library_FILENAMES := \
247 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
248 $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
249 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
250 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
251 $(foreach lib,$(gb_Library_PRIVATELIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
252 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
253 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
254 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
255 $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \
258 gb_Library_LAYER := \
259 $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
260 $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
261 $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
262 $(foreach lib,$(gb_Library_PRIVATELIBS_URE),$(lib):URELIB) \
263 $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
264 $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
265 $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
266 $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):OXT) \
268 #JAD#'-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)'
269 define gb_Library__get_rpath
270 $(if $(1),$(strip '-Wl,-rpath,$(1)'))
271 endef
273 define gb_Library_get_rpath
274 $(call gb_Library__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1))))
275 endef
277 define gb_Library_Library_platform
278 $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
279 endef
281 gb_Library__set_soversion_script_platform = $(gb_Library__set_soversion_script)
284 # StaticLibrary class
286 gb_StaticLibrary_SYSPRE := lib
287 gb_StaticLibrary_PLAINEXT := .a
289 gb_StaticLibrary_FILENAMES := \
290 $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
292 gb_StaticLibrary_StaticLibrary_platform =
295 # Executable class
297 gb_Executable_EXT :=
299 gb_Executable_LAYER := \
300 $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
301 $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
302 $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
303 $(foreach exe,$(gb_Executable_NONE),$(exe):NONE) \
306 define gb_Executable__get_rpath
307 $(strip $(if $(1),'-Wl$(COMMA)-rpath$(COMMA)$(1)') \
308 -L$(gb_Library_OUTDIRLOCATION))
309 #JAD#-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)
310 endef
312 define gb_Executable_get_rpath
313 $(call gb_Executable__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1))))
314 endef
316 define gb_Executable_Executable_platform
317 $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1))
319 endef
322 # CppunitTest class
324 gb_CppunitTest_CPPTESTPRECOMMAND := \
325 $(call gb_Helper_extend_ld_path,$(OUTDIR_FOR_BUILD)/lib/sqlite)
326 gb_CppunitTest_SYSPRE := libtest_
327 gb_CppunitTest_EXT := .so
328 gb_CppunitTest_LIBDIR := $(gb_Helper_OUTDIRLIBDIR)
329 gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
330 gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)
332 define gb_CppunitTest_CppunitTest_platform
333 $(call gb_LinkTarget_get_target,$(2)) : RPATH :=
335 endef
337 define gb_CppunitTest_postprocess
338 $(SRCDIR)/solenv/bin/gdb-core-bt.sh $(1) $(2) $(3)
339 endef
341 # JunitTest class
343 ifneq ($(OOO_TEST_SOFFICE),)
344 gb_JunitTest_SOFFICEARG:=$(OOO_TEST_SOFFICE)
345 else
346 ifneq ($(gb_JunitTest_DEBUGRUN),)
347 gb_JunitTest_SOFFICEARG:=connect:pipe,name=$(USER)
348 else
349 gb_JunitTest_SOFFICEARG:=path:$(gb_DEVINSTALLROOT)/program/soffice
350 endif
351 endif
353 define gb_JunitTest_JunitTest_platform
354 $(call gb_JunitTest_get_target,$(1)) : DEFS := \
355 -Dorg.openoffice.test.arg.env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
356 -Dorg.openoffice.test.arg.user=$(call gb_Helper_make_url,$(call gb_JunitTest_get_userdir,$(1))) \
357 -Dorg.openoffice.test.arg.workdir=$(call gb_JunitTest_get_userdir,$(1)) \
358 -Dorg.openoffice.test.arg.postprocesscommand=$(SRCDIR)/solenv/bin/gdb-core-bt.sh \
359 -Dorg.openoffice.test.arg.soffice="$(gb_JunitTest_SOFFICEARG)" \
361 endef
363 # PythonTest class
365 #TODO:
366 gb_PythonTest_PRECOMMAND :=
368 # Module class
370 define gb_Module_DEBUGRUNCOMMAND
371 OFFICESCRIPT=`mktemp` && \
372 printf ". $(gb_DEVINSTALLROOT)/program/ooenv\\n" > $${OFFICESCRIPT} && \
373 printf "gdb --tui $(gb_DEVINSTALLROOT)/program/soffice.bin" >> $${OFFICESCRIPT} && \
374 printf " -ex \"set args --norestore --nologo '--accept=pipe,name=$(USER);urp;' -env:UserInstallation=$(call gb_Helper_make_url,$(DEVINSTALLDIR)/)\"" >> $${OFFICESCRIPT} && \
375 printf " -ex \"r\"\\n" >> $${OFFICESCRIPT} && \
376 $(SHELL) $${OFFICESCRIPT} && \
377 rm $${OFFICESCRIPT}
378 endef
380 # InstallModuleTarget class
382 define gb_InstallModuleTarget_InstallModuleTarget_platform
383 $(call gb_InstallModuleTarget_add_defs,$(1),\
384 $(gb_CPUDEFS) \
385 $(gb_OSDEFS) \
386 -DCOMID=gcc3 \
387 $(if $(filter TRUE,$(SOLAR_JAVA)),-DSOLAR_JAVA) \
390 endef
392 # InstallScript class
394 gb_InstallScript_EXT := .ins
396 # CliAssemblyTarget class
398 gb_CliAssemblyTarget_POLICYEXT :=
399 gb_CliAssemblyTarget_get_dll :=
401 # ExtensionTarget class
403 gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
405 # UnpackedTarget class
407 gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION)
409 # UnoApiHeadersTarget class
411 ifeq ($(DISABLE_DYNLOADING),TRUE)
412 gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2))
413 else
414 gb_UnoApiHeadersTarget_select_variant = $(2)
415 endif
417 # Package class
418 gb_Package_PROGRAMDIRNAME := program
419 gb_Package_SDKDIRNAME := sdk
421 # UIMenubarTarget class
423 define gb_UIMenubarTarget__command
424 $(call gb_Output_announce,$(2),$(true),UIM,1)
425 cp $(3) $(1)
427 endef
429 gb_UIMenubarTarget_UIMenubarTarget_platform :=
431 # Python
432 gb_Python_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME="$(INSTDIR)/program/python-core-$(PYTHON_VERSION)" PYTHONPATH="$(INSTDIR)/program/python-core-$(PYTHON_VERSION)/lib:$(INSTDIR)/program/python-core-$(PYTHON_VERSION)/lib/lib-dynload"
433 gb_Python_INSTALLED_EXECUTABLE := /bin/sh $(gb_DEVINSTALLROOT)/program/python
434 # this is passed to gdb as executable when running tests
435 gb_Python_INSTALLED_EXECUTABLE_GDB := $(gb_DEVINSTALLROOT)/program/python.bin
437 include $(GBUILDDIR)/platform/com_GCC_class.mk
439 # vim: set noet sw=4: