xref: /aoo41x/main/solenv/gbuild/gbuild.mk (revision f2b8a6a0)
1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22
23
24# vars needed from the env/calling makefile
25
26# CVER
27# DEBUG
28# GBUILDDIR
29# INPATH
30# JAVA_HOME
31# JDKINCS
32# LIBXML_CFLAGS
33# OS
34# PRODUCT
35# SOLARINC
36# SOLARLIB
37# STLPORT_VER
38# UPD
39
40# GXX_INCLUDE_PATH (Linux)
41# PTHREAD_CFLAGS (Linux)
42# SYSTEM_ICU (Linux)
43# SYSTEM_JPEG (Linux)
44# SYSTEM_LIBXML (Linux)
45# USE_SYSTEM_STL (Linux)
46
47ifeq ($(OS),OS2)
48SHELL := /@unixroot/usr/bin/sh
49else
50SHELL := /bin/sh
51endif
52true := T
53false :=
54define NEWLINE
55
56
57endef
58
59define WHITESPACE
60
61endef
62
63COMMA :=,
64
65# optional extensions that should never be essential
66ifneq ($(wildcard $(GBUILDDIR)/extensions/pre_*.mk),)
67include $(wildcard $(GBUILDDIR)/extensions/pre_*.mk)
68endif
69
70include $(GBUILDDIR)/Output.mk
71
72# BuildDirs uses the Output functions already
73include $(GBUILDDIR)/BuildDirs.mk
74
75
76ifneq ($(strip $(PRODUCT)$(product)),)
77gb_PRODUCT := $(true)
78else
79ifneq ($(strip $(product)),)
80gb_PRODUCT := $(true)
81else
82gb_PRODUCT := $(false)
83endif
84endif
85
86ifneq ($(strip $(DEBUG)$(debug)),)
87gb_DEBUGLEVEL := 2
88else
89ifeq ($(gb_PRODUCT),$(true))
90gb_DEBUGLEVEL := 0
91else
92gb_DEBUGLEVEL := 1
93endif
94endif
95
96ifneq ($(strip $(ENABLE_PCH)),)
97gb_ENABLE_PCH := $(true)
98else
99gb_ENABLE_PCH := $(false)
100endif
101
102# for clean, setuplocal and removelocal goals we switch off dependencies
103ifneq ($(filter cleanpackmodule clean setuplocal removelocal showdeliverables,$(MAKECMDGOALS)),)
104gb_FULLDEPS := $(false)
105else
106gb_FULLDEPS := $(true)
107endif
108
109include $(GBUILDDIR)/Helper.mk
110include $(GBUILDDIR)/TargetLocations.mk
111
112$(eval $(call gb_Helper_init_registries))
113$(eval $(call gb_Helper_add_repositories,$(gb_REPOS)))
114$(eval $(call gb_Helper_collect_libtargets))
115
116ifeq ($(OS),LINUX)
117include $(GBUILDDIR)/platform/linux.mk
118else
119ifeq ($(OS),WNT)
120ifneq ($(USE_MINGW),)
121include $(GBUILDDIR)/platform/winmingw.mk
122else
123include $(GBUILDDIR)/platform/windows.mk
124endif
125else
126ifeq ($(OS),SOLARIS)
127include $(GBUILDDIR)/platform/solaris.mk
128else
129ifeq ($(OS),MACOSX)
130include $(GBUILDDIR)/platform/macosx.mk
131else
132ifeq ($(OS),FREEBSD)
133include $(GBUILDDIR)/platform/freebsd.mk
134else
135ifeq ($(OS),OS2)
136include $(GBUILDDIR)/platform/os2.mk
137else
138$(eval $(call gb_Output_error,Unsupported OS: $(OS)))
139endif
140endif
141endif
142endif
143endif
144endif
145
146include $(GBUILDDIR)/Tempfile.mk
147
148# this is optional
149-include $(foreach repo,$(gb_REPOS),$(repo)/RepositoryFixes.mk)
150
151$(eval $(call gb_Helper_collect_knownlibs))
152
153gb_GLOBALDEFS := \
154	-D_REENTRANT \
155	-DCUI \
156	-DENABLE_LAYOUT_EXPERIMENTAL=0 \
157	-DENABLE_LAYOUT=0 \
158	-DOSL_DEBUG_LEVEL=$(gb_DEBUGLEVEL) \
159	-DSOLAR_JAVA \
160	-DSUPD=$(UPD) \
161	-DVCL \
162	$(gb_OSDEFS) \
163	$(gb_COMPILERDEFS) \
164	$(gb_CPUDEFS) \
165
166ifneq ($(USE_SYSTEM_STL),YES)
167gb_GLOBALDEFS += \
168	-DSTLPORT_VERSION=$(STLPORT_VER)
169endif
170
171ifeq ($(gb_PRODUCT),$(true))
172gb_GLOBALDEFS += \
173	-DPRODUCT \
174	-DPRODUCT_FULL \
175
176else
177gb_GLOBALDEFS += \
178	-DDBG_UTIL \
179	-D_STLP_DEBUG \
180
181endif
182
183ifeq ($(gb_DEBUGLEVEL),2)
184gb_GLOBALDEFS += \
185	-DDEBUG \
186
187else
188gb_GLOBALDEFS += \
189	-DOPTIMIZE \
190	-DNDEBUG \
191
192endif
193
194ifneq ($(strip $(ENABLE_GTK)),)
195gb_GLOBALDEFS += -DENABLE_GTK
196endif
197
198ifneq ($(strip $(ENABLE_KDE)),)
199gb_GLOBALDEFS += -DENABLE_KDE
200endif
201
202ifneq ($(strip $(ENABLE_KDE4)),)
203gb_GLOBALDEFS += -DENABLE_KDE4
204endif
205
206ifeq ($(strip $(ENABLE_GRAPHITE)),TRUE)
207gb_GLOBALDEFS += -DENABLE_GRAPHITE
208endif
209
210gb_GLOBALDEFS := $(sort $(gb_GLOBALDEFS))
211
212include $(GBUILDDIR)/Deliver.mk
213
214$(eval $(call gb_Deliver_init))
215
216# We are using a set of scopes that we might as well call classes.
217
218# It is important to include them in the right order as that is
219# -- at least in part -- defining precedence. This is not an issue in the
220# WORKDIR as there are no nameing collisions there, but OUTDIR is a mess
221# and precedence is important there. This is also platform dependant.
222# For example:
223# $(OUTDIR)/bin/% for executables collides
224#	with $(OUTDIR)/bin/%.res for resources on unix
225# $(OUTDIR)/lib/%.lib collides
226#	on windows (static and dynamic libs)
227# $(OUTDIR)/xml/% for packageparts collides
228#	with $(OUTDIR)/xml/component/%.component for components
229# This is less of an issue with GNU Make versions > 3.82 which matches for
230# shortest stem instead of first match. However, upon intoduction this version
231# is not available everywhere by default.
232
233include $(foreach class, \
234	ComponentTarget \
235	AllLangResTarget \
236	WinResTarget \
237	LinkTarget \
238	Library \
239	StaticLibrary \
240	Executable \
241	SdiTarget \
242	Package \
243	CustomTarget \
244	PrecompiledHeaders \
245	CppunitTest \
246	JavaClassSet \
247	JunitTest \
248	Module \
249,$(GBUILDDIR)/$(class).mk)
250
251# optional extensions that should never be essential
252ifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),)
253include $(wildcard $(GBUILDDIR)/extensions/post_*.mk)
254endif
255
256ifeq ($(SYSTEM_LIBXSLT),YES)
257gb_XSLTPROCTARGET :=
258gb_XSLTPROC := xsltproc
259else
260gb_XSLTPROCTARGET := $(call gb_Executable_get_target,xsltproc)
261gb_XSLTPROC := $(gb_XSLTPROCPRECOMMAND) $(gb_XSLTPROCTARGET)
262endif
263
264export gb_AWK
265export gb_XSLTPROC
266
267# vim: set noet sw=4 ts=4:
268