duke@0
|
1 #
|
dcubed@3289
|
2 # Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
|
duke@0
|
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
duke@0
|
4 #
|
duke@0
|
5 # This code is free software; you can redistribute it and/or modify it
|
duke@0
|
6 # under the terms of the GNU General Public License version 2 only, as
|
duke@0
|
7 # published by the Free Software Foundation.
|
duke@0
|
8 #
|
duke@0
|
9 # This code is distributed in the hope that it will be useful, but WITHOUT
|
duke@0
|
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
duke@0
|
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
duke@0
|
12 # version 2 for more details (a copy is included in the LICENSE file that
|
duke@0
|
13 # accompanied this code).
|
duke@0
|
14 #
|
duke@0
|
15 # You should have received a copy of the GNU General Public License version
|
duke@0
|
16 # 2 along with this work; if not, write to the Free Software Foundation,
|
duke@0
|
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
duke@0
|
18 #
|
trims@1472
|
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
trims@1472
|
20 # or visit www.oracle.com if you need additional information or have any
|
trims@1472
|
21 # questions.
|
duke@0
|
22 #
|
duke@0
|
23 #
|
duke@0
|
24
|
duke@0
|
25 #------------------------------------------------------------------------
|
erikj@3083
|
26 # CC, CXX & AS
|
duke@0
|
27
|
erikj@3165
|
28 # If a SPEC is not set already, then use these defaults.
|
erikj@3165
|
29 ifeq ($(SPEC),)
|
erikj@3165
|
30 # When cross-compiling the ALT_COMPILER_PATH points
|
erikj@3165
|
31 # to the cross-compilation toolset
|
erikj@3165
|
32 ifdef CROSS_COMPILE_ARCH
|
erikj@3165
|
33 CXX = $(ALT_COMPILER_PATH)/g++
|
erikj@3165
|
34 CC = $(ALT_COMPILER_PATH)/gcc
|
erikj@3165
|
35 HOSTCXX = g++
|
erikj@3165
|
36 HOSTCC = gcc
|
erikj@3165
|
37 STRIP = $(ALT_COMPILER_PATH)/strip
|
erikj@3165
|
38 else
|
simonis@4795
|
39 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
40 CXX = clang++
|
simonis@4795
|
41 CC = clang
|
simonis@4795
|
42 else
|
simonis@4795
|
43 CXX = g++
|
simonis@4795
|
44 CC = gcc
|
simonis@4795
|
45 endif
|
simonis@4795
|
46
|
erikj@3165
|
47 HOSTCXX = $(CXX)
|
erikj@3165
|
48 HOSTCC = $(CC)
|
erikj@3165
|
49 STRIP = strip
|
erikj@3165
|
50 endif
|
erikj@3165
|
51 AS = $(CC) -c
|
bobv@1601
|
52 endif
|
bobv@1601
|
53
|
duke@0
|
54
|
simonis@4795
|
55 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
56 CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1)
|
simonis@4795
|
57 CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2)
|
simonis@4795
|
58 else
|
simonis@4795
|
59 # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
|
simonis@4795
|
60 # prints the numbers (e.g. "2.95", "3.2.1")
|
simonis@4795
|
61 CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
|
simonis@4795
|
62 CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
|
simonis@4795
|
63 endif
|
duke@0
|
64
|
simonis@4795
|
65
|
simonis@4795
|
66 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
67 # Clang has precompiled headers support by default, but the user can switch
|
simonis@4795
|
68 # it off by using 'USE_PRECOMPILED_HEADER=0'.
|
simonis@4795
|
69 ifdef LP64
|
simonis@4795
|
70 ifeq ($(USE_PRECOMPILED_HEADER),)
|
simonis@4795
|
71 USE_PRECOMPILED_HEADER=1
|
simonis@4795
|
72 endif
|
simonis@4795
|
73 else
|
simonis@4795
|
74 # We don't support precompiled headers on 32-bit builds because there some files are
|
simonis@4795
|
75 # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
|
simonis@4795
|
76 # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit.
|
simonis@4795
|
77 USE_PRECOMPILED_HEADER=0
|
simonis@4795
|
78 endif
|
simonis@4795
|
79
|
simonis@4795
|
80 ifeq ($(USE_PRECOMPILED_HEADER),1)
|
simonis@4795
|
81
|
simonis@4795
|
82 ifndef LP64
|
simonis@4795
|
83 $(error " Precompiled Headers only supported on 64-bit platforms!")
|
simonis@4795
|
84 endif
|
simonis@4795
|
85
|
simonis@4795
|
86 PRECOMPILED_HEADER_DIR=.
|
simonis@4795
|
87 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
|
simonis@4795
|
88 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch
|
simonis@4795
|
89
|
simonis@4795
|
90 PCH_FLAG = -include precompiled.hpp
|
simonis@4795
|
91 PCH_FLAG/DEFAULT = $(PCH_FLAG)
|
simonis@4795
|
92 PCH_FLAG/NO_PCH = -DNO_PCH
|
simonis@4795
|
93 PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@))
|
simonis@4795
|
94
|
simonis@4795
|
95 VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE)
|
simonis@4795
|
96 VM_PCH_FLAG/AOUT =
|
simonis@4795
|
97 VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO))
|
simonis@4795
|
98
|
simonis@4795
|
99 # We only use precompiled headers for the JVM build
|
simonis@4795
|
100 CFLAGS += $(VM_PCH_FLAG)
|
simonis@4795
|
101
|
simonis@4795
|
102 # There are some files which don't like precompiled headers
|
simonis@4795
|
103 # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build.
|
simonis@4795
|
104 # But Clang doesn't support a precompiled header which was compiled with -O3
|
simonis@4795
|
105 # to be used in a compilation unit which uses '-O0'. We could also prepare an
|
simonis@4795
|
106 # extra '-O0' PCH file for the opt build and use it here, but it's probably
|
simonis@4795
|
107 # not worth the effoert as long as only two files need this special handling.
|
simonis@4795
|
108 PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH)
|
simonis@4795
|
109 PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH)
|
simonis@4795
|
110 PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH)
|
simonis@4795
|
111
|
simonis@4795
|
112 endif
|
simonis@4795
|
113 else # ($(USE_CLANG), true)
|
simonis@4795
|
114 # check for precompiled headers support
|
simonis@4795
|
115 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
|
simonis@4795
|
116 # Allow the user to turn off precompiled headers from the command line.
|
simonis@4795
|
117 ifneq ($(USE_PRECOMPILED_HEADER),0)
|
simonis@4795
|
118 PRECOMPILED_HEADER_DIR=.
|
simonis@4795
|
119 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
|
simonis@4795
|
120 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
|
simonis@4795
|
121 endif
|
simonis@4795
|
122 endif
|
duke@0
|
123 endif
|
simonis@4795
|
124
|
simonis@4795
|
125 # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
|
simonis@4795
|
126 ifeq ($(USE_PRECOMPILED_HEADER),0)
|
simonis@4795
|
127 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
|
stefank@1890
|
128 endif
|
duke@0
|
129
|
duke@0
|
130
|
duke@0
|
131 #------------------------------------------------------------------------
|
duke@0
|
132 # Compiler flags
|
duke@0
|
133
|
duke@0
|
134 # position-independent code
|
duke@0
|
135 PICFLAG = -fPIC
|
duke@0
|
136
|
duke@0
|
137 VM_PICFLAG/LIBJVM = $(PICFLAG)
|
duke@0
|
138 VM_PICFLAG/AOUT =
|
duke@0
|
139 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
|
duke@0
|
140
|
erikj@3214
|
141 ifeq ($(JVM_VARIANT_ZERO), true)
|
never@1010
|
142 CFLAGS += $(LIBFFI_CFLAGS)
|
never@1010
|
143 endif
|
erikj@3214
|
144 ifeq ($(JVM_VARIANT_ZEROSHARK), true)
|
erikj@3214
|
145 CFLAGS += $(LIBFFI_CFLAGS)
|
twisti@1612
|
146 CFLAGS += $(LLVM_CFLAGS)
|
twisti@1612
|
147 endif
|
duke@0
|
148 CFLAGS += $(VM_PICFLAG)
|
duke@0
|
149 CFLAGS += -fno-rtti
|
duke@0
|
150 CFLAGS += -fno-exceptions
|
duke@0
|
151 CFLAGS += -D_REENTRANT
|
simonis@4795
|
152 ifeq ($(USE_CLANG),)
|
simonis@4795
|
153 CFLAGS += -fcheck-new
|
simonis@4795
|
154 # version 4 and above support fvisibility=hidden (matches jni_x86.h file)
|
simonis@4795
|
155 # except 4.1.2 gives pointless warnings that can't be disabled (afaik)
|
simonis@4795
|
156 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
|
simonis@4795
|
157 CFLAGS += -fvisibility=hidden
|
simonis@4795
|
158 endif
|
simonis@4795
|
159 else
|
simonis@4795
|
160 CFLAGS += -fvisibility=hidden
|
simonis@4795
|
161 endif
|
simonis@4795
|
162
|
simonis@4795
|
163 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
164 # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
|
simonis@4795
|
165 # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
|
simonis@4795
|
166 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
|
simonis@4795
|
167 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16
|
simonis@4795
|
168 else
|
simonis@4795
|
169 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16
|
simonis@4795
|
170 endif
|
coleenp@2072
|
171 endif
|
duke@0
|
172
|
duke@0
|
173 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
|
duke@0
|
174 ARCHFLAG/i486 = -m32 -march=i586
|
simonis@4795
|
175 ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT)
|
duke@0
|
176 ARCHFLAG/ia64 =
|
duke@0
|
177 ARCHFLAG/sparc = -m32 -mcpu=v9
|
duke@0
|
178 ARCHFLAG/sparcv9 = -m64 -mcpu=v9
|
bobv@1601
|
179 ARCHFLAG/arm = -fsigned-char
|
never@1010
|
180 ARCHFLAG/zero = $(ZERO_ARCHFLAG)
|
bobv@1601
|
181 ifndef E500V2
|
bobv@1601
|
182 ARCHFLAG/ppc = -mcpu=powerpc
|
bobv@1601
|
183 endif
|
duke@0
|
184
|
duke@0
|
185 CFLAGS += $(ARCHFLAG)
|
duke@0
|
186 AOUT_FLAGS += $(ARCHFLAG)
|
duke@0
|
187 LFLAGS += $(ARCHFLAG)
|
duke@0
|
188 ASFLAGS += $(ARCHFLAG)
|
duke@0
|
189
|
bobv@1601
|
190 ifdef E500V2
|
bobv@1601
|
191 CFLAGS += -DE500V2
|
bobv@1601
|
192 endif
|
bobv@1601
|
193
|
duke@0
|
194 # Use C++ Interpreter
|
duke@0
|
195 ifdef CC_INTERP
|
duke@0
|
196 CFLAGS += -DCC_INTERP
|
duke@0
|
197 endif
|
duke@0
|
198
|
duke@0
|
199 # Keep temporary files (.ii, .s)
|
duke@0
|
200 ifdef NEED_ASM
|
duke@0
|
201 CFLAGS += -save-temps
|
duke@0
|
202 else
|
duke@0
|
203 CFLAGS += -pipe
|
duke@0
|
204 endif
|
duke@0
|
205
|
duke@0
|
206 # Compiler warnings are treated as errors
|
duke@0
|
207 WARNINGS_ARE_ERRORS = -Werror
|
xlu@229
|
208
|
simonis@4795
|
209 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
210 # However we need to clean the code up before we can unrestrictedly enable this option with Clang
|
simonis@4795
|
211 WARNINGS_ARE_ERRORS += -Wno-unused-value -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses
|
simonis@4795
|
212 WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-constant-out-of-range-compare -Wno-tautological-compare
|
simonis@4795
|
213 WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess
|
simonis@4795
|
214 WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
|
simonis@4795
|
215 endif
|
simonis@4795
|
216
|
ccheung@4824
|
217 WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
|
mikael@4454
|
218
|
simonis@4795
|
219 ifeq ($(USE_CLANG),)
|
simonis@4795
|
220 # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
|
simonis@4795
|
221 # conversions which might affect the values. Only enable it in earlier versions.
|
simonis@4795
|
222 ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
|
simonis@4795
|
223 WARNING_FLAGS += -Wconversion
|
simonis@4795
|
224 endif
|
xlu@229
|
225 endif
|
xlu@229
|
226
|
jprovino@4287
|
227 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
|
duke@0
|
228 # Special cases
|
duke@0
|
229 CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
|
duke@0
|
230
|
duke@0
|
231 # The flags to use for an Optimized g++ build
|
jprovino@3730
|
232 OPT_CFLAGS/SIZE=-Os
|
jprovino@3730
|
233 OPT_CFLAGS/SPEED=-O3
|
duke@0
|
234
|
duke@0
|
235 # Hotspot uses very unstrict aliasing turn this optimization off
|
jprovino@3730
|
236 # This option is added to CFLAGS rather than OPT_CFLAGS
|
jprovino@3730
|
237 # so that OPT_CFLAGS overrides get this option too.
|
jprovino@3730
|
238 CFLAGS += -fno-strict-aliasing
|
jprovino@3730
|
239
|
jprovino@3730
|
240 OPT_CFLAGS_DEFAULT ?= SPEED
|
jprovino@3730
|
241
|
jprovino@3730
|
242 ifdef OPT_CFLAGS
|
jprovino@3730
|
243 ifneq ("$(origin OPT_CFLAGS)", "command line")
|
jprovino@3730
|
244 $(error " Use OPT_EXTRAS instead of OPT_CFLAGS to add extra flags to OPT_CFLAGS.")
|
jprovino@3730
|
245 endif
|
jprovino@3730
|
246 endif
|
jprovino@3730
|
247
|
jprovino@3730
|
248 OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS)
|
duke@0
|
249
|
duke@0
|
250 # The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp
|
duke@0
|
251 # if we use expensive-optimizations
|
duke@0
|
252 ifeq ($(BUILDARCH), ia64)
|
duke@0
|
253 OPT_CFLAGS += -fno-expensive-optimizations
|
duke@0
|
254 endif
|
duke@0
|
255
|
duke@0
|
256 OPT_CFLAGS/NOOPT=-O0
|
duke@0
|
257
|
simonis@4795
|
258 # Work around some compiler bugs.
|
simonis@4795
|
259 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
260 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1)
|
simonis@4795
|
261 OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT)
|
simonis@4795
|
262 endif
|
simonis@4795
|
263 else
|
simonis@4795
|
264 # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
|
simonis@4795
|
265 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
|
simonis@4795
|
266 OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT)
|
simonis@4795
|
267 endif
|
kvn@744
|
268 endif
|
kvn@744
|
269
|
stefank@1879
|
270 # Flags for generating make dependency flags.
|
simonis@4795
|
271 DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
|
simonis@4795
|
272 ifeq ($(USE_CLANG),)
|
simonis@4795
|
273 ifneq ("${CC_VER_MAJOR}", "2")
|
simonis@4795
|
274 DEPFLAGS += -fpch-deps
|
simonis@4795
|
275 endif
|
stefank@1890
|
276 endif
|
stefank@1890
|
277
|
duke@0
|
278 #------------------------------------------------------------------------
|
duke@0
|
279 # Linker flags
|
duke@0
|
280
|
duke@0
|
281 # statically link libstdc++.so, work with gcc but ignored by g++
|
duke@0
|
282 STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
|
duke@0
|
283
|
simonis@4795
|
284 ifeq ($(USE_CLANG),)
|
simonis@4795
|
285 # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
|
simonis@4795
|
286 ifneq ("${CC_VER_MAJOR}", "2")
|
simonis@4795
|
287 STATIC_LIBGCC += -static-libgcc
|
simonis@4795
|
288 endif
|
duke@0
|
289
|
simonis@4795
|
290 ifeq ($(BUILDARCH), ia64)
|
simonis@4795
|
291 LFLAGS += -Wl,-relax
|
simonis@4795
|
292 endif
|
duke@0
|
293 endif
|
duke@0
|
294
|
duke@0
|
295 # Enable linker optimization
|
duke@0
|
296 LFLAGS += -Xlinker -O1
|
duke@0
|
297
|
simonis@4795
|
298 ifeq ($(USE_CLANG),)
|
simonis@4795
|
299 # If this is a --hash-style=gnu system, use --hash-style=both
|
simonis@4795
|
300 # The gnu .hash section won't work on some Linux systems like SuSE 10.
|
simonis@4795
|
301 _HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | grep -- '--hash-style=gnu')
|
simonis@4795
|
302 ifneq ($(_HAS_HASH_STYLE_GNU),)
|
simonis@4795
|
303 LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
|
simonis@4795
|
304 endif
|
simonis@4795
|
305 else
|
simonis@4795
|
306 # Don't know how to find out the 'hash style' of a system as '-dumpspecs'
|
simonis@4795
|
307 # doesn't work for Clang. So for now we'll alwys use --hash-style=both
|
ohair@576
|
308 LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
|
ohair@576
|
309 endif
|
simonis@4795
|
310
|
ohair@576
|
311 LFLAGS += $(LDFLAGS_HASH_STYLE)
|
ohair@576
|
312
|
duke@0
|
313 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
|
duke@0
|
314 MAPFLAG = -Xlinker --version-script=FILENAME
|
duke@0
|
315
|
duke@0
|
316 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
|
duke@0
|
317 SONAMEFLAG = -Xlinker -soname=SONAME
|
duke@0
|
318
|
duke@0
|
319 # Build shared library
|
duke@0
|
320 SHARED_FLAG = -shared
|
duke@0
|
321
|
duke@0
|
322 # Keep symbols even they are not used
|
dsamersoff@2404
|
323 AOUT_FLAGS += -Xlinker -export-dynamic
|
duke@0
|
324
|
duke@0
|
325 #------------------------------------------------------------------------
|
duke@0
|
326 # Debug flags
|
duke@0
|
327
|
simonis@4795
|
328 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
329 # Restrict the debug information created by Clang to avoid
|
simonis@4795
|
330 # too big object files and speed the build up a little bit
|
simonis@4795
|
331 # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
|
simonis@4795
|
332 CFLAGS += -flimit-debug-info
|
simonis@4795
|
333 endif
|
simonis@4795
|
334
|
dcubed@3554
|
335 # DEBUG_BINARIES uses full -g debug information for all configs
|
dcubed@3554
|
336 ifeq ($(DEBUG_BINARIES), true)
|
dcubed@3554
|
337 CFLAGS += -g
|
dcubed@3554
|
338 else
|
dcubed@3554
|
339 # Use the stabs format for debugging information (this is the default
|
dcubed@3554
|
340 # on gcc-2.91). It's good enough, has all the information about line
|
dcubed@3909
|
341 # numbers and local variables, and libjvm.so is only about 16M.
|
dcubed@3554
|
342 # Change this back to "-g" if you want the most expressive format.
|
dcubed@3909
|
343 # (warning: that could easily inflate libjvm.so to 150M!)
|
dcubed@3554
|
344 # Note: The Itanium gcc compiler crashes when using -gstabs.
|
dcubed@3554
|
345 DEBUG_CFLAGS/ia64 = -g
|
dcubed@3554
|
346 DEBUG_CFLAGS/amd64 = -g
|
dcubed@3554
|
347 DEBUG_CFLAGS/arm = -g
|
dcubed@3554
|
348 DEBUG_CFLAGS/ppc = -g
|
dcubed@3554
|
349 DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
|
dcubed@3554
|
350 ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
|
simonis@4795
|
351 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
352 # Clang doesn't understand -gstabs
|
simonis@4795
|
353 OPT_CFLAGS += -g
|
simonis@4795
|
354 else
|
simonis@4795
|
355 OPT_CFLAGS += -gstabs
|
simonis@4795
|
356 endif
|
dcubed@2715
|
357 endif
|
dcubed@3554
|
358
|
dcubed@3554
|
359 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
dcubed@3554
|
360 FASTDEBUG_CFLAGS/ia64 = -g
|
dcubed@3554
|
361 FASTDEBUG_CFLAGS/amd64 = -g
|
dcubed@3554
|
362 FASTDEBUG_CFLAGS/arm = -g
|
dcubed@3554
|
363 FASTDEBUG_CFLAGS/ppc = -g
|
dcubed@3554
|
364 FASTDEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
|
dcubed@3554
|
365 ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
|
simonis@4795
|
366 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
367 # Clang doesn't understand -gstabs
|
simonis@4795
|
368 OPT_CFLAGS += -g
|
simonis@4795
|
369 else
|
simonis@4795
|
370 OPT_CFLAGS += -gstabs
|
simonis@4795
|
371 endif
|
dcubed@3554
|
372 endif
|
dcubed@3554
|
373
|
dcubed@3554
|
374 OPT_CFLAGS/ia64 = -g
|
dcubed@3554
|
375 OPT_CFLAGS/amd64 = -g
|
dcubed@3554
|
376 OPT_CFLAGS/arm = -g
|
dcubed@3554
|
377 OPT_CFLAGS/ppc = -g
|
dcubed@3554
|
378 OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
|
dcubed@3554
|
379 ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
|
simonis@4795
|
380 ifeq ($(USE_CLANG), true)
|
simonis@4795
|
381 # Clang doesn't understand -gstabs
|
simonis@4795
|
382 OPT_CFLAGS += -g
|
simonis@4795
|
383 else
|
simonis@4795
|
384 OPT_CFLAGS += -gstabs
|
simonis@4795
|
385 endif
|
dcubed@3554
|
386 endif
|
dcubed@2715
|
387 endif
|
dcubed@2715
|
388 endif
|
dcubed@2715
|
389
|
bobv@1601
|
390 # If we are building HEADLESS, pass on to VM
|
bobv@1601
|
391 # so it can set the java.awt.headless property
|
bobv@1601
|
392 ifdef HEADLESS
|
bobv@1601
|
393 CFLAGS += -DHEADLESS
|
bobv@1601
|
394 endif
|
bobv@1601
|
395
|
bobv@1601
|
396 # We are building Embedded for a small device
|
bobv@1601
|
397 # favor code space over speed
|
bobv@1601
|
398 ifdef MINIMIZE_RAM_USAGE
|
bobv@1601
|
399 CFLAGS += -DMINIMIZE_RAM_USAGE
|
bobv@1601
|
400 endif
|