Mercurial > hg > truffle
annotate make/bsd/makefiles/gcc.make @ 20304:a22acf6d7598
8048112: G1 Full GC needs to support the case when the very first region is not available
Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett.
Reviewed-by: brutisso
author | tschatzl |
---|---|
date | Mon, 21 Jul 2014 10:00:31 +0200 |
parents | f509b8f4699b |
children | 096c224171c4 d16be2b85802 |
rev | line source |
---|---|
3960 | 1 # |
11026 | 2 # Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. |
3960 | 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 # | |
5 # This code is free software; you can redistribute it and/or modify it | |
6 # under the terms of the GNU General Public License version 2 only, as | |
7 # published by the Free Software Foundation. | |
8 # | |
9 # This code is distributed in the hope that it will be useful, but WITHOUT | |
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 # version 2 for more details (a copy is included in the LICENSE file that | |
13 # accompanied this code). | |
14 # | |
15 # You should have received a copy of the GNU General Public License version | |
16 # 2 along with this work; if not, write to the Free Software Foundation, | |
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 # | |
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 # or visit www.oracle.com if you need additional information or have any | |
21 # questions. | |
22 # | |
23 # | |
24 | |
25 OS_VENDOR = $(shell uname -s) | |
26 | |
27 #------------------------------------------------------------------------ | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4129
diff
changeset
|
28 # CC, CXX & AS |
3960 | 29 |
5897
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
30 # If a SPEC is not set already, then use these defaults. |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
31 ifeq ($(SPEC),) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
32 # When cross-compiling the ALT_COMPILER_PATH points |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
33 # to the cross-compilation toolset |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
34 ifdef CROSS_COMPILE_ARCH |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
35 CXX = $(ALT_COMPILER_PATH)/g++ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
36 CC = $(ALT_COMPILER_PATH)/gcc |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
37 HOSTCXX = g++ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
38 HOSTCC = gcc |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
39 else ifneq ($(OS_VENDOR), Darwin) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
40 CXX = g++ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
41 CC = gcc |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
42 HOSTCXX = $(CXX) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
43 HOSTCC = $(CC) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
44 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
45 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
46 # i486 hotspot requires -mstackrealign on Darwin. |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
47 # llvm-gcc supports this in Xcode 3.2.6 and 4.0. |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
48 # gcc-4.0 supports this on earlier versions. |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
49 # Prefer llvm-gcc where available. |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
50 ifeq ($(OS_VENDOR), Darwin) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
51 ifeq ($(origin CXX), default) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
52 CXX = llvm-g++ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
53 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
54 ifeq ($(origin CC), default) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
55 CC = llvm-gcc |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
56 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
57 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
58 ifeq ($(ARCH), i486) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
59 LLVM_SUPPORTS_STACKREALIGN := $(shell \ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
60 [ "0"`llvm-gcc -v 2>&1 | grep LLVM | sed -E "s/.*LLVM build ([0-9]+).*/\1/"` -gt "2333" ] \ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
61 && echo true || echo false) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
62 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
63 ifeq ($(LLVM_SUPPORTS_STACKREALIGN), true) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
64 CXX32 ?= llvm-g++ |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
65 CC32 ?= llvm-gcc |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
66 else |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
67 CXX32 ?= g++-4.0 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
68 CC32 ?= gcc-4.0 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
69 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
70 CXX = $(CXX32) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
71 CC = $(CC32) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
72 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
73 |
10398 | 74 ifeq ($(USE_CLANG), true) |
75 CXX = clang++ | |
76 CC = clang | |
77 endif | |
78 | |
5897
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
79 HOSTCXX = $(CXX) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
80 HOSTCC = $(CC) |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
81 endif |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
82 |
12203
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
83 AS = $(CC) -c |
4006 | 84 endif |
85 | |
12859
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
86 ifeq ($(OS_VENDOR), Darwin) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
87 ifeq ($(DSYMUTIL),) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
88 DSYMUTIL=dsymutil |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
89 endif |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
90 endif |
3960 | 91 |
10398 | 92 ifeq ($(USE_CLANG), true) |
93 CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1) | |
94 CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2) | |
95 else | |
96 # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only | |
97 # prints the numbers (e.g. "2.95", "3.2.1") | |
98 CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) | |
99 CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) | |
3960 | 100 endif |
101 | |
10398 | 102 ifeq ($(USE_CLANG), true) |
103 # clang has precompiled headers support by default, but the user can switch | |
104 # it off by using 'USE_PRECOMPILED_HEADER=0'. | |
105 ifdef LP64 | |
106 ifeq ($(USE_PRECOMPILED_HEADER),) | |
107 USE_PRECOMPILED_HEADER=1 | |
108 endif | |
109 else | |
110 # We don't support precompiled headers on 32-bit builds because there some files are | |
111 # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make) | |
112 # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit. | |
113 USE_PRECOMPILED_HEADER=0 | |
114 endif | |
115 | |
116 ifeq ($(USE_PRECOMPILED_HEADER),1) | |
117 | |
118 ifndef LP64 | |
119 $(error " Precompiled Headers only supported on 64-bit platforms!") | |
120 endif | |
121 | |
122 PRECOMPILED_HEADER_DIR=. | |
123 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp | |
124 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch | |
125 | |
126 PCH_FLAG = -include precompiled.hpp | |
127 PCH_FLAG/DEFAULT = $(PCH_FLAG) | |
128 PCH_FLAG/NO_PCH = -DNO_PCH | |
129 PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@)) | |
130 | |
131 VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE) | |
132 VM_PCH_FLAG/AOUT = | |
133 VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO)) | |
134 | |
135 # We only use precompiled headers for the JVM build | |
136 CFLAGS += $(VM_PCH_FLAG) | |
12151
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
137 |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
138 # The following files are compiled at various optimization |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
139 # levels due to optimization issues encountered at the |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
140 # 'OPT_CFLAGS_DEFAULT' level. The Clang compiler issues a compile |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
141 # time error if there is an optimization level specification |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
142 # skew between the PCH file and the C++ file. Especially if the |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
143 # PCH file is compiled at a higher optimization level than |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
144 # the C++ file. One solution might be to prepare extra optimization |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
145 # level specific PCH files for the opt build and use them here, but |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
146 # it's probably not worth the effort as long as only a few files |
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
147 # need this special handling. |
10398 | 148 PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH) |
149 PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH) | |
150 PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH) | |
12143
dfc126b2f659
8022407: sun/misc/CopyMemory.java fails with SIGSEGV in Unsafe_SetByte+0x35
hseigel
parents:
12077
diff
changeset
|
151 PCH_FLAG/unsafe.o = $(PCH_FLAG/NO_PCH) |
10398 | 152 |
153 endif | |
154 else # ($(USE_CLANG), true) | |
155 # check for precompiled headers support | |
156 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" | |
157 # Allow the user to turn off precompiled headers from the command line. | |
158 ifneq ($(USE_PRECOMPILED_HEADER),0) | |
159 PRECOMPILED_HEADER_DIR=. | |
160 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp | |
161 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch | |
162 endif | |
163 endif | |
164 endif | |
165 | |
166 # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. | |
167 ifeq ($(USE_PRECOMPILED_HEADER),0) | |
168 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER | |
169 endif | |
3960 | 170 |
171 #------------------------------------------------------------------------ | |
172 # Compiler flags | |
173 | |
174 # position-independent code | |
175 PICFLAG = -fPIC | |
176 | |
177 VM_PICFLAG/LIBJVM = $(PICFLAG) | |
178 VM_PICFLAG/AOUT = | |
179 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) | |
180 | |
5946
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
181 ifeq ($(JVM_VARIANT_ZERO), true) |
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
182 CFLAGS += $(LIBFFI_CFLAGS) |
3960 | 183 endif |
5946
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
184 ifeq ($(JVM_VARIANT_ZEROSHARK), true) |
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
185 CFLAGS += $(LIBFFI_CFLAGS) |
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
186 CFLAGS += $(LLVM_CFLAGS) |
3960 | 187 endif |
188 CFLAGS += $(VM_PICFLAG) | |
189 CFLAGS += -fno-rtti | |
190 CFLAGS += -fno-exceptions | |
10398 | 191 ifeq ($(USE_CLANG),) |
192 CFLAGS += -pthread | |
193 CFLAGS += -fcheck-new | |
194 # version 4 and above support fvisibility=hidden (matches jni_x86.h file) | |
195 # except 4.1.2 gives pointless warnings that can't be disabled (afaik) | |
196 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
197 CFLAGS += -fvisibility=hidden | |
198 endif | |
199 else | |
200 CFLAGS += -fvisibility=hidden | |
201 endif | |
202 | |
203 ifeq ($(USE_CLANG), true) | |
204 # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm' | |
205 # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment') | |
206 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0" | |
207 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16 | |
208 else | |
209 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16 | |
210 endif | |
3960 | 211 endif |
212 | |
213 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) | |
214 ARCHFLAG/i486 = -m32 -march=i586 | |
10398 | 215 ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT) |
3960 | 216 ARCHFLAG/ia64 = |
217 ARCHFLAG/sparc = -m32 -mcpu=v9 | |
218 ARCHFLAG/sparcv9 = -m64 -mcpu=v9 | |
219 ARCHFLAG/zero = $(ZERO_ARCHFLAG) | |
220 | |
221 # Darwin-specific build flags | |
222 ifeq ($(OS_VENDOR), Darwin) | |
223 # Ineffecient 16-byte stack re-alignment on Darwin/IA32 | |
224 ARCHFLAG/i486 += -mstackrealign | |
225 endif | |
226 | |
227 CFLAGS += $(ARCHFLAG) | |
228 AOUT_FLAGS += $(ARCHFLAG) | |
229 LFLAGS += $(ARCHFLAG) | |
230 ASFLAGS += $(ARCHFLAG) | |
231 | |
232 ifdef E500V2 | |
233 CFLAGS += -DE500V2 | |
234 endif | |
235 | |
236 # Use C++ Interpreter | |
237 ifdef CC_INTERP | |
238 CFLAGS += -DCC_INTERP | |
239 endif | |
240 | |
241 # Keep temporary files (.ii, .s) | |
242 ifdef NEED_ASM | |
243 CFLAGS += -save-temps | |
244 else | |
245 CFLAGS += -pipe | |
246 endif | |
247 | |
248 # Compiler warnings are treated as errors | |
4006 | 249 ifneq ($(COMPILER_WARNINGS_FATAL),false) |
250 WARNINGS_ARE_ERRORS = -Werror | |
251 endif | |
3960 | 252 |
10398 | 253 ifeq ($(USE_CLANG), true) |
254 # However we need to clean the code up before we can unrestrictedly enable this option with Clang | |
12329 | 255 WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses |
10398 | 256 WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-compare |
257 # Not yet supported by clang in Xcode 4.6.2 | |
258 # WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare | |
259 WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess | |
12077
e16282db4946
8022956: Clang: enable return type warnings on BSD
twisti
parents:
11026
diff
changeset
|
260 WARNINGS_ARE_ERRORS += -Wno-empty-body |
10398 | 261 endif |
262 | |
8722 | 263 WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef |
10398 | 264 |
265 ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
266 # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit | |
267 # conversions which might affect the values. Only enable it in earlier versions. | |
268 WARNING_FLAGS = -Wunused-function | |
269 ifeq ($(USE_CLANG),) | |
12329 | 270 WARNING_FLAGS += -Wconversion |
10398 | 271 endif |
3960 | 272 endif |
273 | |
8722 | 274 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS) |
3960 | 275 # Special cases |
276 CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) | |
277 # XXXDARWIN: for _dyld_bind_fully_image_containing_address | |
278 ifeq ($(OS_VENDOR), Darwin) | |
279 CFLAGS_WARN/os_bsd.o = $(CFLAGS_WARN/DEFAULT) -Wno-deprecated-declarations | |
280 endif | |
281 | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
282 OPT_CFLAGS/SIZE=-Os |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
283 OPT_CFLAGS/SPEED=-O3 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
284 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
285 # Hotspot uses very unstrict aliasing turn this optimization off |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
286 # This option is added to CFLAGS rather than OPT_CFLAGS |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
287 # so that OPT_CFLAGS overrides get this option too. |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
288 CFLAGS += -fno-strict-aliasing |
3960 | 289 |
290 # The flags to use for an Optimized g++ build | |
4006 | 291 ifeq ($(OS_VENDOR), Darwin) |
292 # use -Os by default, unless -O3 can be proved to be worth the cost, as per policy | |
293 # <http://wikis.sun.com/display/OpenJDK/Mac+OS+X+Port+Compilers> | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
294 OPT_CFLAGS_DEFAULT ?= SIZE |
4006 | 295 else |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
296 OPT_CFLAGS_DEFAULT ?= SPEED |
4006 | 297 endif |
3960 | 298 |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
299 ifdef OPT_CFLAGS |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
300 ifneq ("$(origin OPT_CFLAGS)", "command line") |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
301 $(error " Use OPT_EXTRAS instead of OPT_CFLAGS to add extra flags to OPT_CFLAGS.") |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
302 endif |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
303 endif |
3960 | 304 |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
305 OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS) |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
306 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
307 # The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp |
3960 | 308 # if we use expensive-optimizations |
309 ifeq ($(BUILDARCH), ia64) | |
310 OPT_CFLAGS += -fno-expensive-optimizations | |
311 endif | |
312 | |
313 OPT_CFLAGS/NOOPT=-O0 | |
314 | |
10398 | 315 # Work around some compiler bugs. |
316 ifeq ($(USE_CLANG), true) | |
317 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1) | |
318 OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) | |
12151
ca0501b58953
8024050: Incorrect optimization level and comment specified for unsafe.cpp
hseigel
parents:
12143
diff
changeset
|
319 OPT_CFLAGS/unsafe.o += -O1 |
10398 | 320 endif |
321 else | |
322 # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. | |
323 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1) | |
324 OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT) | |
325 endif | |
3960 | 326 endif |
327 | |
328 # Flags for generating make dependency flags. | |
10398 | 329 DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d) |
330 ifeq ($(USE_CLANG),) | |
331 ifneq ($(CC_VER_MAJOR), 2) | |
332 DEPFLAGS += -fpch-deps | |
333 endif | |
3960 | 334 endif |
335 | |
336 # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. | |
4129
f4414323345f
7116081: USE_PRECOMPILED_HEADER=0 triggers a single threaded build of the JVM
stefank
parents:
4033
diff
changeset
|
337 ifeq ($(USE_PRECOMPILED_HEADER),0) |
3960 | 338 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER |
339 endif | |
340 | |
8682 | 341 ifeq ($(OS_VENDOR), Darwin) |
342 # Setting these parameters makes it an error to link to macosx APIs that are | |
343 # newer than the given OS version and makes the linked binaries compatible even | |
344 # if built on a newer version of the OS. | |
345 # The expected format is X.Y.Z | |
346 ifeq ($(MACOSX_VERSION_MIN),) | |
347 MACOSX_VERSION_MIN=10.7.0 | |
348 endif | |
349 # The macro takes the version with no dots, ex: 1070 | |
350 CFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=$(subst .,,$(MACOSX_VERSION_MIN)) \ | |
351 -mmacosx-version-min=$(MACOSX_VERSION_MIN) | |
352 LDFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN) | |
353 endif | |
354 | |
12203
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
355 |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
356 #------------------------------------------------------------------------ |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
357 # Assembler flags |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
358 |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
359 # Enforce prerpocessing of .s files |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
360 ASFLAGS += -x assembler-with-cpp |
1c6b721a3fbf
8022617: Openjdk hotspot build is broken on BSD platforms using gcc
dsamersoff
parents:
12151
diff
changeset
|
361 |
3960 | 362 #------------------------------------------------------------------------ |
363 # Linker flags | |
364 | |
365 # statically link libstdc++.so, work with gcc but ignored by g++ | |
366 STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic | |
367 | |
10398 | 368 ifeq ($(USE_CLANG),) |
369 # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x. | |
370 ifneq ("${CC_VER_MAJOR}", "2") | |
371 STATIC_LIBGCC += -static-libgcc | |
372 endif | |
3960 | 373 |
10398 | 374 ifeq ($(BUILDARCH), ia64) |
375 LFLAGS += -Wl,-relax | |
376 endif | |
3960 | 377 endif |
378 | |
379 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. | |
380 MAPFLAG = -Xlinker --version-script=FILENAME | |
381 | |
382 # | |
383 # Shared Library | |
384 # | |
385 ifeq ($(OS_VENDOR), Darwin) | |
386 # Standard linker flags | |
387 LFLAGS += | |
388 | |
11026 | 389 # The apple linker has its own variant of mapfiles/version-scripts |
390 MAPFLAG = -Xlinker -exported_symbols_list -Xlinker FILENAME | |
3960 | 391 |
392 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj | |
393 SONAMEFLAG = | |
394 | |
395 # Build shared library | |
4006 | 396 SHARED_FLAG = -Wl,-install_name,@rpath/$(@F) -dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $(VM_PICFLAG) |
3960 | 397 |
398 # Keep symbols even they are not used | |
399 #AOUT_FLAGS += -Xlinker -export-dynamic | |
400 else | |
401 # Enable linker optimization | |
402 LFLAGS += -Xlinker -O1 | |
403 | |
404 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj | |
405 SONAMEFLAG = -Xlinker -soname=SONAME | |
406 | |
407 # Build shared library | |
408 SHARED_FLAG = -shared $(VM_PICFLAG) | |
409 | |
410 # Keep symbols even they are not used | |
411 AOUT_FLAGS += -Xlinker -export-dynamic | |
412 endif | |
413 | |
414 #------------------------------------------------------------------------ | |
415 # Debug flags | |
416 | |
10398 | 417 ifeq ($(USE_CLANG), true) |
418 # Restrict the debug information created by Clang to avoid | |
419 # too big object files and speed the build up a little bit | |
420 # (see http://llvm.org/bugs/show_bug.cgi?id=7554) | |
421 CFLAGS += -flimit-debug-info | |
3960 | 422 endif |
423 | |
10398 | 424 # DEBUG_BINARIES uses full -g debug information for all configs |
3960 | 425 ifeq ($(DEBUG_BINARIES), true) |
10398 | 426 CFLAGS += -g |
427 else | |
428 # Use the stabs format for debugging information (this is the default | |
429 # on gcc-2.91). It's good enough, has all the information about line | |
430 # numbers and local variables, and libjvm.so is only about 16M. | |
431 # Change this back to "-g" if you want the most expressive format. | |
432 # (warning: that could easily inflate libjvm.so to 150M!) | |
433 # Note: The Itanium gcc compiler crashes when using -gstabs. | |
434 DEBUG_CFLAGS/ia64 = -g | |
435 DEBUG_CFLAGS/amd64 = -g | |
436 DEBUG_CFLAGS/arm = -g | |
437 DEBUG_CFLAGS/ppc = -g | |
438 DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) | |
439 ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) | |
440 DEBUG_CFLAGS += -gstabs | |
441 endif | |
12859
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
442 |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
443 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
444 FASTDEBUG_CFLAGS/ia64 = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
445 FASTDEBUG_CFLAGS/amd64 = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
446 FASTDEBUG_CFLAGS/arm = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
447 FASTDEBUG_CFLAGS/ppc = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
448 FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH)) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
449 ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
450 ifeq ($(USE_CLANG), true) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
451 # Clang doesn't understand -gstabs |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
452 FASTDEBUG_CFLAGS += -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
453 else |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
454 FASTDEBUG_CFLAGS += -gstabs |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
455 endif |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
456 endif |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
457 |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
458 OPT_CFLAGS/ia64 = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
459 OPT_CFLAGS/amd64 = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
460 OPT_CFLAGS/arm = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
461 OPT_CFLAGS/ppc = -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
462 OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH)) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
463 ifeq ($(OPT_CFLAGS/$(BUILDARCH)),) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
464 ifeq ($(USE_CLANG), true) |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
465 # Clang doesn't understand -gstabs |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
466 OPT_CFLAGS += -g |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
467 else |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
468 OPT_CFLAGS += -gstabs |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
469 endif |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
470 endif |
f509b8f4699b
7165611: implement Full Debug Symbols on MacOS X hotspot
dcubed
parents:
12329
diff
changeset
|
471 endif |
3960 | 472 endif |
473 | |
474 # If we are building HEADLESS, pass on to VM | |
475 # so it can set the java.awt.headless property | |
476 ifdef HEADLESS | |
477 CFLAGS += -DHEADLESS | |
478 endif | |
479 | |
480 # We are building Embedded for a small device | |
481 # favor code space over speed | |
482 ifdef MINIMIZE_RAM_USAGE | |
483 CFLAGS += -DMINIMIZE_RAM_USAGE | |
484 endif |