Version 6.1.0.2, tag libreoffice-6.1.0.2
[LibreOffice.git] / solenv / gbuild / platform / com_GCC_class.mk
blob4c3531934d5e904d43823c76a52b571a248d1340
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/.
10 ifeq ($(gb_FULLDEPS),$(true))
11 ifneq (,$(CCACHE_HARDLINK))
12 # cannot move hardlink over itself, so create dep file directly, even if that
13 # might leave a broken file behind in case the build is interrupted forcefully
14 define gb_cxx_dep_generation_options
15 -MMD -MT $(1) -MP -MF $(2)
16 endef
17 define gb_cxx_dep_copy
18 endef
19 else
20 define gb_cxx_dep_generation_options
21 -MMD -MT $(1) -MP -MF $(2)_
22 endef
23 define gb_cxx_dep_copy
24 && mv $(1)_ $(1)
25 endef
26 endif
27 else
28 define gb_cxx_dep_generation_options
29 endef
30 define gb_cxx_dep_copy
31 endef
32 endif
34 # AsmObject class
36 gb_AsmObject_get_source = $(1)/$(2).s
38 # $(call gb_AsmObject__command,object,relative-source,source,dep-file)
39 define gb_AsmObject__command
40 $(call gb_Output_announce,$(2),$(true),ASM,3)
41 $(call gb_Helper_abbreviate_dirs,\
42 mkdir -p $(dir $(1)) $(dir $(4)) && cd $(SRCDIR) && \
43 $(gb_CC) \
44 -x assembler-with-cpp \
45 $(gb_LTOFLAGS) \
46 $(gb_AFLAGS) \
47 -c $(3) \
48 -o $(1)) \
49 $(INCLUDE) && \
50 echo "$(1) : $(3)" > $(4)
51 endef
53 # CObject class
55 # $(call gb_CObject__command_pattern,object,flags,source,dep-file,compiler-plugins)
56 define gb_CObject__command_pattern
57 $(call gb_Helper_abbreviate_dirs,\
58 mkdir -p $(dir $(1)) $(dir $(4)) && cd $(SRCDIR) && \
59 $(gb_COMPILER_SETUP) \
60 $(if $(5),$(gb_COMPILER_PLUGINS_SETUP)) \
61 $(if $(filter %.c %.m,$(3)), $(gb_CC), $(gb_CXX)) \
62 $(DEFS) \
63 $(gb_LTOFLAGS) \
64 $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \
65 $(if $(WARNINGS_NOT_ERRORS),$(if $(ENABLE_WERROR),$(if $(PLUGIN_WARNINGS_AS_ERRORS),$(gb_COMPILER_PLUGINS_WARNINGS_AS_ERRORS))),$(gb_CFLAGS_WERROR)) \
66 $(if $(5),$(gb_COMPILER_PLUGINS)) \
67 $(if $(COMPILER_TEST),-fsyntax-only -ferror-limit=0 -Xclang -verify) \
68 $(2) \
69 $(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \
70 -c $(3) \
71 -o $(1) \
72 $(if $(COMPILER_TEST),,$(call gb_cxx_dep_generation_options,$(1),$(4))) \
73 $(INCLUDE) \
74 $(PCHFLAGS) \
75 $(if $(COMPILER_TEST),,$(call gb_cxx_dep_copy,$(4))) \
77 endef
79 # PrecompiledHeader class
81 ifeq ($(COM_IS_CLANG),TRUE)
82 gb_PrecompiledHeader_get_enableflags = -include-pch $(call gb_PrecompiledHeader_get_target,$(1))
83 else
84 gb_PrecompiledHeader_get_enableflags = -include $(notdir $(subst .gch,,$(call gb_PrecompiledHeader_get_target,$(1)))) \
85 -I $(dir $(call gb_PrecompiledHeader_get_target,$(1)))
86 endif
88 # Clang and gcc do not need any extra .o file for PCH
89 gb_PrecompiledHeader_get_objectfile =
91 define gb_PrecompiledHeader__command
92 $(call gb_Output_announce,$(2),$(true),PCH,1)
93 $(call gb_Helper_abbreviate_dirs,\
94 mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \
95 $(gb_CXX) \
96 -x c++-header \
97 $(4) $(5) \
98 $(gb_COMPILERDEPFLAGS) \
99 $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \
100 $(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \
101 $(6) \
102 $(call gb_cxx_dep_generation_options,$(1),$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2))) \
103 -c $(patsubst %.cxx,%.hxx,$(3)) \
104 -o$(1) \
105 $(call gb_cxx_dep_copy,$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2))) \
107 endef
109 # YaccTarget class
111 define gb_YaccTarget__command
112 $(call gb_Output_announce,$(2),$(true),YAC,3)
113 $(call gb_Helper_abbreviate_dirs,\
114 mkdir -p $(dir $(3)) && \
115 $(gb_YACC) $(T_YACCFLAGS) -v --defines=$(4) -o $(5) $(1) && touch $(3) )
117 endef
119 # CppunitTest class
121 ifeq ($(strip $(DEBUGCPPUNIT)),TRUE)
122 gb_CppunitTest_GDBTRACE := gdb -nx -ex "add-auto-load-safe-path $(INSTDIR)" -ex "set environment $(subst =, ,$(gb_CppunitTest_CPPTESTPRECOMMAND))" --batch --command=$(SRCDIR)/solenv/bin/gdbtrycatchtrace-stdout -return-child-result --args
123 endif
125 # ExternalProject class
127 gb_ExternalProject_use_autoconf :=
128 gb_ExternalProject_use_nmake :=
130 # StaticLibrary class
132 gb_StaticLibrary_get_filename = lib$(1).a
133 gb_StaticLibrary_PLAINEXT := .a
134 gb_StaticLibrary_StaticLibrary_platform :=
136 gb_LinkTarget_get_linksearchpath_for_layer = \
137 -L$(WORKDIR)/LinkTarget/StaticLibrary \
138 -L$(call gb_Library_get_sdk_link_dir) \
139 $(foreach layer,\
140 $(subst +, ,$(patsubst $(1):%.,%,\
141 $(filter $(1):%.,$(gb_LinkTarget_LAYER_LINKPATHS)))),\
142 $(patsubst $(layer):%,-L%,\
143 $(filter $(layer):%,$(gb_Library_LAYER_DIRS))))
146 gb_ICU_PRECOMMAND := $(call gb_Helper_extend_ld_path,$(WORKDIR_FOR_BUILD)/UnpackedTarball/icu/source/lib)
148 # UIConfig class
150 # Mac OS X sort(1) cannot read a response file
151 define gb_UIConfig__command
152 $(call gb_Helper_abbreviate_dirs,\
153 $(SORT) -u $(UI_IMAGELISTS) /dev/null > $@ \
156 endef
158 define gb_UIConfig__gla11y_command
159 $(call gb_Helper_abbreviate_dirs,\
160 $(gb_UIConfig_LXML_PATH) $(gb_Helper_set_ld_path) \
161 $(call gb_ExternalExecutable_get_command,python) \
162 $(gb_UIConfig_gla11y_SCRIPT) $(gb_UIConfig_gla11y_PARAMETERS) -o $@ $(UIFILES)
165 endef
167 # vim: set noet sw=4 ts=4: