|
1 # |
|
2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 # All rights reserved. |
|
4 # This component and the accompanying materials are made available |
|
5 # under the terms of "Eclipse Public License v1.0" |
|
6 # which accompanies this distribution, and is available |
|
7 # at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 # |
|
9 # Initial Contributors: |
|
10 # Nokia Corporation - initial contribution. |
|
11 # |
|
12 # Contributors: |
|
13 # |
|
14 # Description: |
|
15 # |
|
16 |
|
17 # Default platform |
|
18 ifeq ($(OS),Windows_NT) |
|
19 # On Windows, build symbian |
|
20 export BUILDENV = symbian |
|
21 |
|
22 else |
|
23 ifdef EPOCROOT |
|
24 # On linux, build symbian if EPOCROOT is defined |
|
25 export BUILDENV = symbian |
|
26 else |
|
27 export BUILDENV = linux |
|
28 endif |
|
29 endif |
|
30 |
|
31 # S60 release file (written if release is given explicitly on commandline) |
|
32 RD_JAVA_S60_RELEASE_FILE = $(JAVA_SRC_ROOT)/inc/java_s60_release.hrh |
|
33 |
|
34 include $(JAVA_SRC_ROOT)/build/Makefile.project |
|
35 |
|
36 ifeq ($(BUILDENV),symbian) |
|
37 export PLATFORM = winscw |
|
38 export JAVA_BIN_ROOT=$(EPOCROOT)winscw/c/java |
|
39 ifeq ($(JAVA_6_HOME), ) |
|
40 $(error The environment variable JAVA_6_HOME is not defined) |
|
41 endif |
|
42 export JAVA_HOME=$(JAVA_6_HOME) |
|
43 |
|
44 ifeq ($(notdir $(basename $(SHELL))),sh) |
|
45 # Cygwin definitions |
|
46 BATPREFIX = |
|
47 RMFILE = rm $(call PATHFIX, $(1)) |
|
48 RMFILES = $(RMFILE) |
|
49 CATCOMMAND = cat $(call PATHFIX, $(1)) |
|
50 PATHFIX = $(subst \,/,$(1)) |
|
51 ANT := sh ant |
|
52 SBS = MAKELEVEL=&&MAKEFLAGS=&&MFLAGS=&&sbs |
|
53 CPPCMD = gcc -E -x assembler-with-cpp -P -undef -w -traditional-cpp |
|
54 IFNOTEXIST = if [ ! -f $(1) ]; then $(2); fi |
|
55 IFEXIST = if [ -f $(1) ]; then $(2); fi |
|
56 DEVNULL = /dev/null |
|
57 MKDIR = if [ ! -d $(1)]; then mkdir $(1); fi |
|
58 RMDIR = if [ -d $(1)]; then rmdir $(1); fi |
|
59 |
|
60 else |
|
61 # CMD.exe definitions |
|
62 BATPREFIX = cmd /c call |
|
63 RMFILE = $(if $(wildcard $(1)),del $(call PATHFIX,$(wildcard $(1))),echo Nothing to delete from $(1) > $(DEVNULL)) |
|
64 RMFILES = $(RMFILE) |
|
65 CATCOMMAND = type $(call PATHFIX, $(1)) |
|
66 PATHFIX = $(subst /,\,$(1)) |
|
67 ANT := $(BATPREFIX) ant.bat |
|
68 SBS = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&sbs |
|
69 CPPCMD = $(EPOCROOT)epoc32/gcc/bin/cpp -lang-asm -P -undef |
|
70 IFNOTEXIST = if not exist $(1) $(2) |
|
71 IFEXIST = if exist $(1) $(2) |
|
72 DEVNULL = NUL |
|
73 MKDIR = if not exist $(1) mkdir $(1) |
|
74 RMDIR = if exist $(1) rmdir $(1) |
|
75 |
|
76 endif |
|
77 |
|
78 ifndef QMAKE_DEFINED |
|
79 QMAKESPEC_JAVA=$(if $(USESBS),symbian-sbsv2,symbian-abld) |
|
80 |
|
81 ifndef QTDIR |
|
82 ifneq ($(wildcard $(EPOCROOT)epoc32/tools/qmake*),) |
|
83 # Use platform's qmake |
|
84 QMAKE := $(EPOCROOT)epoc32/tools/qmake -spec $(QMAKESPEC_JAVA) |
|
85 else |
|
86 # Use builtin qmake |
|
87 QTDIR_JAVA := $(JAVA_SRC_ROOT)/tools/qt_symbian |
|
88 QMAKE := $(QTDIR_JAVA)/qmake -spec $(QTDIR_JAVA)/mkspecs/symbian-abld |
|
89 endif |
|
90 else |
|
91 QMAKE := $(QTDIR)/bin/qmake -spec $(QTDIR)/mkspecs/$(QMAKESPEC_JAVA) |
|
92 endif |
|
93 QMAKE := $(call PATHFIX,$(QMAKE)) |
|
94 QMAKE_DEFINED = 1 |
|
95 export QMAKE |
|
96 export QMAKE_DEFINED |
|
97 endif |
|
98 |
|
99 # Prevent enclosing ant options from propagating to Java compilation |
|
100 export ANT_ARGS= |
|
101 export ANT_OPTS= |
|
102 BLDMAKE = perl -S bldmake.pl |
|
103 ABLDMAKE = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&make -r |
|
104 |
|
105 ifdef NODEP |
|
106 # Makmake does not make dependency checks with this flag |
|
107 export NO_DEPENDENCIES=-nd |
|
108 endif |
|
109 |
|
110 |
|
111 else |
|
112 export PLATFORM = linux |
|
113 QMAKE = qmake |
|
114 ANT := ant |
|
115 |
|
116 ifndef JAVA_BIN_ROOT |
|
117 export JAVA_BIN_ROOT=$(JAVA_SRC_ROOT)/bin |
|
118 endif |
|
119 |
|
120 ifndef LD_LIBRARY_PATH_SET |
|
121 export LD_LIBRARY_PATH_SET=1 |
|
122 export LD_LIBRARY_PATH:=$(JAVA_BIN_ROOT)/lib:$(LD_LIBRARY_PATH) |
|
123 endif |
|
124 |
|
125 PATHFIX = $(subst \,/,$(1)) |
|
126 RMFILE = rm $(call PATHFIX, $(1)) |
|
127 CATCOMMAND = cat $(1) |
|
128 DEVNULL = /dev/null |
|
129 endif |
|
130 |
|
131 # Ensure that VARIANT, CFG and PLATFORM are in lower case |
|
132 ifeq ($(VARIANT),DEBUG) |
|
133 override VARIANT := debug |
|
134 endif |
|
135 ifeq ($(VARIANT),RELEASE) |
|
136 override VARIANT := release |
|
137 endif |
|
138 ifeq ($(CFG),UDEB) |
|
139 override CFG := udeb |
|
140 endif |
|
141 ifeq ($(CFG),UREL) |
|
142 override CFG := urel |
|
143 endif |
|
144 ifeq ($(PLATFORM),WINSCW) |
|
145 override PLATFORM := winscw |
|
146 endif |
|
147 ifeq ($(PLATFORM),ARMV5) |
|
148 override PLATFORM := armv5 |
|
149 endif |
|
150 |
|
151 # If CFG is defined, use it instead of VARIANT (with case insensitive match) |
|
152 ifdef CFG |
|
153 ifeq ($(CFG),udeb) |
|
154 override VARIANT := debug |
|
155 else |
|
156 ifeq ($(CFG),urel) |
|
157 override VARIANT := release |
|
158 else |
|
159 $(error CFG value "$(CFG)" is not recognized) |
|
160 endif |
|
161 endif |
|
162 endif |
|
163 |
|
164 |
|
165 # Default to debug |
|
166 ifndef VARIANT |
|
167 VARIANT := debug |
|
168 endif |
|
169 |
|
170 # Define CFG based on VARIANT |
|
171 ifeq ($(VARIANT),debug) |
|
172 override CFG := udeb |
|
173 else |
|
174 override CFG := urel |
|
175 endif |
|
176 |
|
177 export VARIANT |
|
178 |
|
179 ANT_PROJECT_DEFINES = $(foreach d,$(PROJECT_DEFINES),-D$d=1) |
|
180 |
|
181 COMPONENT_NAME ?= $(notdir $(CURDIR)) |
|
182 |
|
183 # Following targets should be defined by every level |
|
184 .PHONY: all export java native clean cleanexport reallyclean test qmake clean_generated clean_java clean_native builddefinefile generatejavaversion projectdefinefile javareleasables commonjavareleasables clean_build_defines clean_javaversion clean_project_defines freeze exec |
|
185 |
|
186 # Default target |
|
187 default_target: all |
|
188 |
|
189 # Silent / verbose building |
|
190 ifndef JAVAVERBOSE |
|
191 .SILENT: |
|
192 ANT += -q |
|
193 endif |
|
194 ifeq ($(JAVAVERBOSE),1) |
|
195 ANT += -q |
|
196 endif |
|
197 ifeq ($(JAVAVERBOSE),2) |
|
198 endif |
|
199 ifeq ($(JAVAVERBOSE),3) |
|
200 ANT += -v |
|
201 endif |
|
202 |
|
203 PHASEINFO = @echo $(if $(1),$(1),$@) $(CURDIR) |
|
204 |
|
205 # Empty target, forcing target compilation |
|
206 FORCE: |
|
207 |
|
208 # Common ---------------------------------- |
|
209 |
|
210 # Export files need a build_defines file |
|
211 BUILDDEFINEFILE := $(JAVA_SRC_ROOT)/inc/build_defines.hrh |
|
212 QBUILDDEFINEFILE := $(JAVA_SRC_ROOT)/inc/build_defines.pri |
|
213 JAVAVERSIONFILE := $(JAVA_SRC_ROOT)/inc/java.txt |
|
214 |
|
215 # Project define file is needed by export and native phases of nonqt components |
|
216 # Native builds require project_defines.hrh for nonqt-mmp-files |
|
217 PROJECTDEFINEFILE = $(JAVA_SRC_ROOT)/inc/project_defines.hrh |
|
218 |
|
219 ifndef FIRSTTIME_FLAG |
|
220 export FIRSTTIME_FLAG = 1 |
|
221 FIRSTTIME = 1 |
|
222 endif |
|
223 |
|
224 # Write file on first make evaluation |
|
225 ifdef FIRSTTIME |
|
226 |
|
227 # Echo the S60 release before export |
|
228 ifeq ($(BUILDENV),symbian) |
|
229 all init export configure qmake java native releasebuild test: echo_s60_release |
|
230 echo_s60_release: |
|
231 @echo Building on top of S60 $(RD_JAVA_S60_RELEASE) |
|
232 endif |
|
233 |
|
234 include $(JAVA_SRC_ROOT)/build/makefile.javaversion |
|
235 |
|
236 COMMA = , |
|
237 JAVA_VERSION_ = $(subst .,$(COMMA),$(JAVA_VERSION)) |
|
238 |
|
239 configure: generateconffiles generatereleasefile |
|
240 generateconffiles: |
|
241 @echo Writing $(BUILDDEFINEFILE) ... \ |
|
242 $(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header.txt) > $(BUILDDEFINEFILE)) \ |
|
243 $(shell echo #define RD_JAVA_VERSION $(JAVA_VERSION_) >> $(BUILDDEFINEFILE)) \ |
|
244 $(foreach d, $(PROJECT_DEFINES), $(shell echo #define $d >> $(BUILDDEFINEFILE))) |
|
245 @echo Writing $(QBUILDDEFINEFILE) ... \ |
|
246 $(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header_hash.txt) > $(QBUILDDEFINEFILE)) \ |
|
247 $(shell echo PROJECT_DEFINES *= $(PROJECT_DEFINES) >> $(QBUILDDEFINEFILE)) |
|
248 @echo Writing $(JAVAVERSIONFILE) \ |
|
249 $(shell echo $(JAVA_VERSION)>$(JAVAVERSIONFILE)) |
|
250 ifeq ($(BUILDENV),symbian) |
|
251 @echo Writing $(PROJECTDEFINEFILE) ... \ |
|
252 $(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header.txt) > $(PROJECTDEFINEFILE)) \ |
|
253 $(foreach d, $(PROJECT_DEFINES), $(shell echo MACRO $d >> $(PROJECTDEFINEFILE))) |
|
254 ifdef RD_JAVA_EPOCALLOWDLLDATA_FIX |
|
255 @echo EPOCALLOWDLLDATA >> $(PROJECTDEFINEFILE) |
|
256 endif |
|
257 endif |
|
258 |
|
259 generatereleasefile: |
|
260 ifeq ($(origin RD_JAVA_S60_RELEASE),command line) |
|
261 @echo Writing $(RD_JAVA_S60_RELEASE_FILE) ... \ |
|
262 $(shell echo RD_JAVA_S60_RELEASE=$(RD_JAVA_S60_RELEASE)>$(RD_JAVA_S60_RELEASE_FILE)) |
|
263 endif |
|
264 |
|
265 # Clean file on clean_generated |
|
266 clean_configure: clean_conffiles |
|
267 |
|
268 clean_conffiles: |
|
269 $(call RMFILES,$(BUILDDEFINEFILE) $(QBUILDDEFINEFILE) $(JAVAVERSIONFILE) \ |
|
270 $(PROJECTDEFINEFILE) $(RD_JAVA_S60_RELEASE_FILE)) |
|
271 |
|
272 endif # FIRSTTIME |
|
273 |
|
274 |
|
275 # Symbian ---------------------------------- |
|
276 ifeq ($(BUILDENV),symbian) |
|
277 |
|
278 # Get build directory in symbian |
|
279 # Remove drive letter |
|
280 DIRECTORY = $(wordlist 2,2,$(subst :, ,$(CURDIR))) |
|
281 # Set makefile directory |
|
282 BUILDDIR = /epoc32/build$(DIRECTORY) |
|
283 |
|
284 VERBOSE = VERBOSE=-s |
|
285 |
|
286 # -------------------------------------- |
|
287 |
|
288 endif |