Mercurial > hg > graal-jvmci-8
annotate make/bsd/makefiles/gcc.make @ 12176:88c255656030
8016155: SIGBUS when running Kitchensink with ParallelScavenge and ParallelOld
Summary: When using NUMA and large pages we need to ease the requirement on which node the memory should be allocated on. To avoid the SIGBUS we now use the memory policy MPOL_PREFERRED, which prefers a certain node, instead of MPOL_BIND, which requires a certain node.
Reviewed-by: jmasa, pliden
Contributed-by: stefan.johansson@oracle.com
author | mgerdin |
---|---|
date | Thu, 22 Aug 2013 10:50:41 +0200 |
parents | e16282db4946 |
children | dfc126b2f659 |
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 |
7292cff45988
7141244: build-infra merge: Include $(SPEC) in makefiles and make variables overridable
erikj
parents:
4891
diff
changeset
|
83 AS = $(CC) -c -x assembler-with-cpp |
4006 | 84 endif |
85 | |
3960 | 86 |
10398 | 87 ifeq ($(USE_CLANG), true) |
88 CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1) | |
89 CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2) | |
90 else | |
91 # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only | |
92 # prints the numbers (e.g. "2.95", "3.2.1") | |
93 CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) | |
94 CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) | |
3960 | 95 endif |
96 | |
10398 | 97 ifeq ($(USE_CLANG), true) |
98 # clang has precompiled headers support by default, but the user can switch | |
99 # it off by using 'USE_PRECOMPILED_HEADER=0'. | |
100 ifdef LP64 | |
101 ifeq ($(USE_PRECOMPILED_HEADER),) | |
102 USE_PRECOMPILED_HEADER=1 | |
103 endif | |
104 else | |
105 # We don't support precompiled headers on 32-bit builds because there some files are | |
106 # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make) | |
107 # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit. | |
108 USE_PRECOMPILED_HEADER=0 | |
109 endif | |
110 | |
111 ifeq ($(USE_PRECOMPILED_HEADER),1) | |
112 | |
113 ifndef LP64 | |
114 $(error " Precompiled Headers only supported on 64-bit platforms!") | |
115 endif | |
116 | |
117 PRECOMPILED_HEADER_DIR=. | |
118 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp | |
119 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch | |
120 | |
121 PCH_FLAG = -include precompiled.hpp | |
122 PCH_FLAG/DEFAULT = $(PCH_FLAG) | |
123 PCH_FLAG/NO_PCH = -DNO_PCH | |
124 PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@)) | |
125 | |
126 VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE) | |
127 VM_PCH_FLAG/AOUT = | |
128 VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO)) | |
129 | |
130 # We only use precompiled headers for the JVM build | |
131 CFLAGS += $(VM_PCH_FLAG) | |
132 | |
133 # There are some files which don't like precompiled headers | |
134 # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build. | |
135 # But Clang doesn't support a precompiled header which was compiled with -O3 | |
136 # to be used in a compilation unit which uses '-O0'. We could also prepare an | |
137 # extra '-O0' PCH file for the opt build and use it here, but it's probably | |
138 # not worth the effort as long as only two files need this special handling. | |
139 PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH) | |
140 PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH) | |
141 PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH) | |
142 | |
143 endif | |
144 else # ($(USE_CLANG), true) | |
145 # check for precompiled headers support | |
146 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" | |
147 # Allow the user to turn off precompiled headers from the command line. | |
148 ifneq ($(USE_PRECOMPILED_HEADER),0) | |
149 PRECOMPILED_HEADER_DIR=. | |
150 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp | |
151 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch | |
152 endif | |
153 endif | |
154 endif | |
155 | |
156 # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. | |
157 ifeq ($(USE_PRECOMPILED_HEADER),0) | |
158 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER | |
159 endif | |
3960 | 160 |
161 #------------------------------------------------------------------------ | |
162 # Compiler flags | |
163 | |
164 # position-independent code | |
165 PICFLAG = -fPIC | |
166 | |
167 VM_PICFLAG/LIBJVM = $(PICFLAG) | |
168 VM_PICFLAG/AOUT = | |
169 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) | |
170 | |
5946
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
171 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
|
172 CFLAGS += $(LIBFFI_CFLAGS) |
3960 | 173 endif |
5946
3d7ea1dbe0de
7141246: build-infra merge: Introduce new JVM_VARIANT* to control which kind of jvm gets built
erikj
parents:
5897
diff
changeset
|
174 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
|
175 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
|
176 CFLAGS += $(LLVM_CFLAGS) |
3960 | 177 endif |
178 CFLAGS += $(VM_PICFLAG) | |
179 CFLAGS += -fno-rtti | |
180 CFLAGS += -fno-exceptions | |
10398 | 181 ifeq ($(USE_CLANG),) |
182 CFLAGS += -pthread | |
183 CFLAGS += -fcheck-new | |
184 # version 4 and above support fvisibility=hidden (matches jni_x86.h file) | |
185 # except 4.1.2 gives pointless warnings that can't be disabled (afaik) | |
186 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
187 CFLAGS += -fvisibility=hidden | |
188 endif | |
189 else | |
190 CFLAGS += -fvisibility=hidden | |
191 endif | |
192 | |
193 ifeq ($(USE_CLANG), true) | |
194 # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm' | |
195 # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment') | |
196 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0" | |
197 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16 | |
198 else | |
199 STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16 | |
200 endif | |
3960 | 201 endif |
202 | |
203 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) | |
204 ARCHFLAG/i486 = -m32 -march=i586 | |
10398 | 205 ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT) |
3960 | 206 ARCHFLAG/ia64 = |
207 ARCHFLAG/sparc = -m32 -mcpu=v9 | |
208 ARCHFLAG/sparcv9 = -m64 -mcpu=v9 | |
209 ARCHFLAG/zero = $(ZERO_ARCHFLAG) | |
210 | |
211 # Darwin-specific build flags | |
212 ifeq ($(OS_VENDOR), Darwin) | |
213 # Ineffecient 16-byte stack re-alignment on Darwin/IA32 | |
214 ARCHFLAG/i486 += -mstackrealign | |
215 endif | |
216 | |
217 CFLAGS += $(ARCHFLAG) | |
218 AOUT_FLAGS += $(ARCHFLAG) | |
219 LFLAGS += $(ARCHFLAG) | |
220 ASFLAGS += $(ARCHFLAG) | |
221 | |
222 ifdef E500V2 | |
223 CFLAGS += -DE500V2 | |
224 endif | |
225 | |
226 # Use C++ Interpreter | |
227 ifdef CC_INTERP | |
228 CFLAGS += -DCC_INTERP | |
229 endif | |
230 | |
231 # Keep temporary files (.ii, .s) | |
232 ifdef NEED_ASM | |
233 CFLAGS += -save-temps | |
234 else | |
235 CFLAGS += -pipe | |
236 endif | |
237 | |
238 # Compiler warnings are treated as errors | |
4006 | 239 ifneq ($(COMPILER_WARNINGS_FATAL),false) |
240 WARNINGS_ARE_ERRORS = -Werror | |
241 endif | |
3960 | 242 |
10398 | 243 ifeq ($(USE_CLANG), true) |
244 # However we need to clean the code up before we can unrestrictedly enable this option with Clang | |
245 WARNINGS_ARE_ERRORS += -Wno-unused-value -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses | |
246 WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-compare | |
247 # Not yet supported by clang in Xcode 4.6.2 | |
248 # WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare | |
249 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
|
250 WARNINGS_ARE_ERRORS += -Wno-empty-body |
10398 | 251 endif |
252 | |
8722 | 253 WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef |
10398 | 254 |
255 ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
256 # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit | |
257 # conversions which might affect the values. Only enable it in earlier versions. | |
258 WARNING_FLAGS = -Wunused-function | |
259 ifeq ($(USE_CLANG),) | |
260 WARNINGS_FLAGS += -Wconversion | |
261 endif | |
3960 | 262 endif |
263 | |
8722 | 264 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS) |
3960 | 265 # Special cases |
266 CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) | |
267 # XXXDARWIN: for _dyld_bind_fully_image_containing_address | |
268 ifeq ($(OS_VENDOR), Darwin) | |
269 CFLAGS_WARN/os_bsd.o = $(CFLAGS_WARN/DEFAULT) -Wno-deprecated-declarations | |
270 endif | |
271 | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
272 OPT_CFLAGS/SIZE=-Os |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
273 OPT_CFLAGS/SPEED=-O3 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
274 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
275 # Hotspot uses very unstrict aliasing turn this optimization off |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
276 # 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
|
277 # so that OPT_CFLAGS overrides get this option too. |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
278 CFLAGS += -fno-strict-aliasing |
3960 | 279 |
280 # The flags to use for an Optimized g++ build | |
4006 | 281 ifeq ($(OS_VENDOR), Darwin) |
282 # use -Os by default, unless -O3 can be proved to be worth the cost, as per policy | |
283 # <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
|
284 OPT_CFLAGS_DEFAULT ?= SIZE |
4006 | 285 else |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
286 OPT_CFLAGS_DEFAULT ?= SPEED |
4006 | 287 endif |
3960 | 288 |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
289 ifdef OPT_CFLAGS |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
290 ifneq ("$(origin OPT_CFLAGS)", "command line") |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
291 $(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
|
292 endif |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
293 endif |
3960 | 294 |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
295 OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS) |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
296 |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6129
diff
changeset
|
297 # The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp |
3960 | 298 # if we use expensive-optimizations |
299 ifeq ($(BUILDARCH), ia64) | |
300 OPT_CFLAGS += -fno-expensive-optimizations | |
301 endif | |
302 | |
303 OPT_CFLAGS/NOOPT=-O0 | |
304 | |
10398 | 305 # Work around some compiler bugs. |
306 ifeq ($(USE_CLANG), true) | |
307 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1) | |
308 OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) | |
309 endif | |
310 else | |
311 # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. | |
312 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1) | |
313 OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT) | |
314 endif | |
3960 | 315 endif |
316 | |
317 # Flags for generating make dependency flags. | |
10398 | 318 DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d) |
319 ifeq ($(USE_CLANG),) | |
320 ifneq ($(CC_VER_MAJOR), 2) | |
321 DEPFLAGS += -fpch-deps | |
322 endif | |
3960 | 323 endif |
324 | |
325 # -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
|
326 ifeq ($(USE_PRECOMPILED_HEADER),0) |
3960 | 327 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER |
328 endif | |
329 | |
8682 | 330 ifeq ($(OS_VENDOR), Darwin) |
331 # Setting these parameters makes it an error to link to macosx APIs that are | |
332 # newer than the given OS version and makes the linked binaries compatible even | |
333 # if built on a newer version of the OS. | |
334 # The expected format is X.Y.Z | |
335 ifeq ($(MACOSX_VERSION_MIN),) | |
336 MACOSX_VERSION_MIN=10.7.0 | |
337 endif | |
338 # The macro takes the version with no dots, ex: 1070 | |
339 CFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=$(subst .,,$(MACOSX_VERSION_MIN)) \ | |
340 -mmacosx-version-min=$(MACOSX_VERSION_MIN) | |
341 LDFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN) | |
342 endif | |
343 | |
3960 | 344 #------------------------------------------------------------------------ |
345 # Linker flags | |
346 | |
347 # statically link libstdc++.so, work with gcc but ignored by g++ | |
348 STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic | |
349 | |
10398 | 350 ifeq ($(USE_CLANG),) |
351 # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x. | |
352 ifneq ("${CC_VER_MAJOR}", "2") | |
353 STATIC_LIBGCC += -static-libgcc | |
354 endif | |
3960 | 355 |
10398 | 356 ifeq ($(BUILDARCH), ia64) |
357 LFLAGS += -Wl,-relax | |
358 endif | |
3960 | 359 endif |
360 | |
361 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. | |
362 MAPFLAG = -Xlinker --version-script=FILENAME | |
363 | |
364 # | |
365 # Shared Library | |
366 # | |
367 ifeq ($(OS_VENDOR), Darwin) | |
368 # Standard linker flags | |
369 LFLAGS += | |
370 | |
11026 | 371 # The apple linker has its own variant of mapfiles/version-scripts |
372 MAPFLAG = -Xlinker -exported_symbols_list -Xlinker FILENAME | |
3960 | 373 |
374 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj | |
375 SONAMEFLAG = | |
376 | |
377 # Build shared library | |
4006 | 378 SHARED_FLAG = -Wl,-install_name,@rpath/$(@F) -dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $(VM_PICFLAG) |
3960 | 379 |
380 # Keep symbols even they are not used | |
381 #AOUT_FLAGS += -Xlinker -export-dynamic | |
382 else | |
383 # Enable linker optimization | |
384 LFLAGS += -Xlinker -O1 | |
385 | |
386 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj | |
387 SONAMEFLAG = -Xlinker -soname=SONAME | |
388 | |
389 # Build shared library | |
390 SHARED_FLAG = -shared $(VM_PICFLAG) | |
391 | |
392 # Keep symbols even they are not used | |
393 AOUT_FLAGS += -Xlinker -export-dynamic | |
394 endif | |
395 | |
396 #------------------------------------------------------------------------ | |
397 # Debug flags | |
398 | |
10398 | 399 ifeq ($(USE_CLANG), true) |
400 # Restrict the debug information created by Clang to avoid | |
401 # too big object files and speed the build up a little bit | |
402 # (see http://llvm.org/bugs/show_bug.cgi?id=7554) | |
403 CFLAGS += -flimit-debug-info | |
3960 | 404 endif |
405 | |
10398 | 406 # DEBUG_BINARIES uses full -g debug information for all configs |
3960 | 407 ifeq ($(DEBUG_BINARIES), true) |
10398 | 408 CFLAGS += -g |
409 else | |
410 # Use the stabs format for debugging information (this is the default | |
411 # on gcc-2.91). It's good enough, has all the information about line | |
412 # numbers and local variables, and libjvm.so is only about 16M. | |
413 # Change this back to "-g" if you want the most expressive format. | |
414 # (warning: that could easily inflate libjvm.so to 150M!) | |
415 # Note: The Itanium gcc compiler crashes when using -gstabs. | |
416 DEBUG_CFLAGS/ia64 = -g | |
417 DEBUG_CFLAGS/amd64 = -g | |
418 DEBUG_CFLAGS/arm = -g | |
419 DEBUG_CFLAGS/ppc = -g | |
420 DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) | |
421 ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) | |
422 DEBUG_CFLAGS += -gstabs | |
423 endif | |
3960 | 424 endif |
425 | |
426 # If we are building HEADLESS, pass on to VM | |
427 # so it can set the java.awt.headless property | |
428 ifdef HEADLESS | |
429 CFLAGS += -DHEADLESS | |
430 endif | |
431 | |
432 # We are building Embedded for a small device | |
433 # favor code space over speed | |
434 ifdef MINIMIZE_RAM_USAGE | |
435 CFLAGS += -DMINIMIZE_RAM_USAGE | |
436 endif |