annotate make/solaris/makefiles/gcc.make @ 4155:394404b2d9bd

Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
author Doug Simon <doug.simon@oracle.com>
date Wed, 21 Dec 2011 11:25:27 +0100
parents f4414323345f
children 719f7007c8e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 #
4033
95009f678859 7106766: Move the precompiled header from the src/share/vm directory
brutisso
parents: 1983
diff changeset
2 # Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 #
a61af66fc99e Initial load
duke
parents:
diff changeset
5 # This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 # under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 # published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 #
a61af66fc99e Initial load
duke
parents:
diff changeset
9 # This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 # version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 # accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 #
a61af66fc99e Initial load
duke
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 # 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 #
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
20 # or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 196
diff changeset
21 # questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 #
a61af66fc99e Initial load
duke
parents:
diff changeset
23 #
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 #------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
26 # CC, CPP & AS
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 CPP = g++
a61af66fc99e Initial load
duke
parents:
diff changeset
29 CC = gcc
a61af66fc99e Initial load
duke
parents:
diff changeset
30 AS = $(CC) -c
a61af66fc99e Initial load
duke
parents:
diff changeset
31
a61af66fc99e Initial load
duke
parents:
diff changeset
32 Compiler = gcc
a61af66fc99e Initial load
duke
parents:
diff changeset
33
a61af66fc99e Initial load
duke
parents:
diff changeset
34 # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
a61af66fc99e Initial load
duke
parents:
diff changeset
35 # prints the numbers (e.g. "2.95", "3.2.1")
a61af66fc99e Initial load
duke
parents:
diff changeset
36 CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
a61af66fc99e Initial load
duke
parents:
diff changeset
37 CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
a61af66fc99e Initial load
duke
parents:
diff changeset
38
a61af66fc99e Initial load
duke
parents:
diff changeset
39 # Check for the versions of C++ and C compilers ($CPP and $CC) used.
a61af66fc99e Initial load
duke
parents:
diff changeset
40
a61af66fc99e Initial load
duke
parents:
diff changeset
41 # Get the last thing on the line that looks like x.x+ (x is a digit).
a61af66fc99e Initial load
duke
parents:
diff changeset
42 COMPILER_REV := \
a61af66fc99e Initial load
duke
parents:
diff changeset
43 $(shell $(CPP) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
a61af66fc99e Initial load
duke
parents:
diff changeset
44 C_COMPILER_REV := \
a61af66fc99e Initial load
duke
parents:
diff changeset
45 $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
a61af66fc99e Initial load
duke
parents:
diff changeset
46
a61af66fc99e Initial load
duke
parents:
diff changeset
47
a61af66fc99e Initial load
duke
parents:
diff changeset
48 # check for precompiled headers support
a61af66fc99e Initial load
duke
parents:
diff changeset
49 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
1983
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
50 # Allow the user to turn off precompiled headers from the command line.
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
51 ifneq ($(USE_PRECOMPILED_HEADER),0)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
52 PRECOMPILED_HEADER_DIR=.
4033
95009f678859 7106766: Move the precompiled header from the src/share/vm directory
brutisso
parents: 1983
diff changeset
53 PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
54 PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
0
a61af66fc99e Initial load
duke
parents:
diff changeset
55 endif
1983
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
56 endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
57
a61af66fc99e Initial load
duke
parents:
diff changeset
58
a61af66fc99e Initial load
duke
parents:
diff changeset
59 #------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
60 # Compiler flags
a61af66fc99e Initial load
duke
parents:
diff changeset
61
a61af66fc99e Initial load
duke
parents:
diff changeset
62 # position-independent code
a61af66fc99e Initial load
duke
parents:
diff changeset
63 PICFLAG = -fPIC
a61af66fc99e Initial load
duke
parents:
diff changeset
64
a61af66fc99e Initial load
duke
parents:
diff changeset
65 VM_PICFLAG/LIBJVM = $(PICFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
66 VM_PICFLAG/AOUT =
a61af66fc99e Initial load
duke
parents:
diff changeset
67 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
a61af66fc99e Initial load
duke
parents:
diff changeset
68
a61af66fc99e Initial load
duke
parents:
diff changeset
69 CFLAGS += $(VM_PICFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
70 CFLAGS += -fno-rtti
a61af66fc99e Initial load
duke
parents:
diff changeset
71 CFLAGS += -fno-exceptions
a61af66fc99e Initial load
duke
parents:
diff changeset
72 CFLAGS += -D_REENTRANT
a61af66fc99e Initial load
duke
parents:
diff changeset
73 CFLAGS += -fcheck-new
a61af66fc99e Initial load
duke
parents:
diff changeset
74
a61af66fc99e Initial load
duke
parents:
diff changeset
75 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77 ARCHFLAG/sparc = -m32 -mcpu=v9
a61af66fc99e Initial load
duke
parents:
diff changeset
78 ARCHFLAG/sparcv9 = -m64 -mcpu=v9
a61af66fc99e Initial load
duke
parents:
diff changeset
79 ARCHFLAG/i486 = -m32 -march=i586
a61af66fc99e Initial load
duke
parents:
diff changeset
80 ARCHFLAG/amd64 = -m64 -march=k8
a61af66fc99e Initial load
duke
parents:
diff changeset
81
a61af66fc99e Initial load
duke
parents:
diff changeset
82
a61af66fc99e Initial load
duke
parents:
diff changeset
83 # Optional sub-directory in /usr/lib where BUILDARCH libraries are kept.
a61af66fc99e Initial load
duke
parents:
diff changeset
84 ISA_DIR=$(ISA_DIR/$(BUILDARCH))
a61af66fc99e Initial load
duke
parents:
diff changeset
85 ISA_DIR/amd64=/amd64
a61af66fc99e Initial load
duke
parents:
diff changeset
86 ISA_DIR/i486=
a61af66fc99e Initial load
duke
parents:
diff changeset
87 ISA_DIR/sparcv9=/64
a61af66fc99e Initial load
duke
parents:
diff changeset
88
a61af66fc99e Initial load
duke
parents:
diff changeset
89
a61af66fc99e Initial load
duke
parents:
diff changeset
90 CFLAGS += $(ARCHFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
91 AOUT_FLAGS += $(ARCHFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
92 LFLAGS += $(ARCHFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
93 ASFLAGS += $(ARCHFLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
94
a61af66fc99e Initial load
duke
parents:
diff changeset
95 ifeq ($(BUILDARCH), amd64)
a61af66fc99e Initial load
duke
parents:
diff changeset
96 ASFLAGS += -march=k8 -march=amd64
a61af66fc99e Initial load
duke
parents:
diff changeset
97 LFLAGS += -march=k8
a61af66fc99e Initial load
duke
parents:
diff changeset
98 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
99
a61af66fc99e Initial load
duke
parents:
diff changeset
100
a61af66fc99e Initial load
duke
parents:
diff changeset
101 # Use C++ Interpreter
a61af66fc99e Initial load
duke
parents:
diff changeset
102 ifdef CC_INTERP
a61af66fc99e Initial load
duke
parents:
diff changeset
103 CFLAGS += -DCC_INTERP
a61af66fc99e Initial load
duke
parents:
diff changeset
104 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106 # Keep temporary files (.ii, .s)
a61af66fc99e Initial load
duke
parents:
diff changeset
107 ifdef NEED_ASM
a61af66fc99e Initial load
duke
parents:
diff changeset
108 CFLAGS += -save-temps
a61af66fc99e Initial load
duke
parents:
diff changeset
109 else
a61af66fc99e Initial load
duke
parents:
diff changeset
110 CFLAGS += -pipe
a61af66fc99e Initial load
duke
parents:
diff changeset
111 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
112
a61af66fc99e Initial load
duke
parents:
diff changeset
113
a61af66fc99e Initial load
duke
parents:
diff changeset
114 # Compiler warnings are treated as errors
a61af66fc99e Initial load
duke
parents:
diff changeset
115 WARNINGS_ARE_ERRORS = -Werror
a61af66fc99e Initial load
duke
parents:
diff changeset
116 # Enable these warnings. See 'info gcc' about details on these options
a61af66fc99e Initial load
duke
parents:
diff changeset
117 ADDITIONAL_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare
a61af66fc99e Initial load
duke
parents:
diff changeset
118 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ADDITIONAL_WARNINGS)
a61af66fc99e Initial load
duke
parents:
diff changeset
119 # Special cases
a61af66fc99e Initial load
duke
parents:
diff changeset
120 CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 # The flags to use for an Optimized g++ build
a61af66fc99e Initial load
duke
parents:
diff changeset
123 OPT_CFLAGS += -O3
a61af66fc99e Initial load
duke
parents:
diff changeset
124
a61af66fc99e Initial load
duke
parents:
diff changeset
125 # Hotspot uses very unstrict aliasing turn this optimization off
a61af66fc99e Initial load
duke
parents:
diff changeset
126 OPT_CFLAGS += -fno-strict-aliasing
a61af66fc99e Initial load
duke
parents:
diff changeset
127
a61af66fc99e Initial load
duke
parents:
diff changeset
128 # The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp
a61af66fc99e Initial load
duke
parents:
diff changeset
129 # if we use expensive-optimizations
a61af66fc99e Initial load
duke
parents:
diff changeset
130 # Note: all ia64 setting reflect the ones for linux
a61af66fc99e Initial load
duke
parents:
diff changeset
131 # No actial testing was performed: there is no Solaris on ia64 presently
a61af66fc99e Initial load
duke
parents:
diff changeset
132 ifeq ($(BUILDARCH), ia64)
a61af66fc99e Initial load
duke
parents:
diff changeset
133 OPT_CFLAGS/bytecodeInterpreter.o += -fno-expensive-optimizations
a61af66fc99e Initial load
duke
parents:
diff changeset
134 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
135
a61af66fc99e Initial load
duke
parents:
diff changeset
136 OPT_CFLAGS/NOOPT=-O0
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
137
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
138 # Flags for generating make dependency flags.
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
139 ifneq ("${CC_VER_MAJOR}", "2")
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
140 DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
141 endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
142
1983
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
143 # -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
144 ifeq ($(USE_PRECOMPILED_HEADER),0)
1983
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
145 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
146 endif
c760f78e0a53 7003125: precompiled.hpp is included when precompiled headers are not used
stefank
parents: 1972
diff changeset
147
0
a61af66fc99e Initial load
duke
parents:
diff changeset
148 #------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
149 # Linker flags
a61af66fc99e Initial load
duke
parents:
diff changeset
150
a61af66fc99e Initial load
duke
parents:
diff changeset
151 # statically link libstdc++.so, work with gcc but ignored by g++
a61af66fc99e Initial load
duke
parents:
diff changeset
152 STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
a61af66fc99e Initial load
duke
parents:
diff changeset
153
a61af66fc99e Initial load
duke
parents:
diff changeset
154 # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
a61af66fc99e Initial load
duke
parents:
diff changeset
155 ifneq ("${CC_VER_MAJOR}", "2")
a61af66fc99e Initial load
duke
parents:
diff changeset
156 STATIC_LIBGCC += -static-libgcc
a61af66fc99e Initial load
duke
parents:
diff changeset
157 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
158
a61af66fc99e Initial load
duke
parents:
diff changeset
159 ifeq ($(BUILDARCH), ia64)
a61af66fc99e Initial load
duke
parents:
diff changeset
160 # Note: all ia64 setting reflect the ones for linux
a61af66fc99e Initial load
duke
parents:
diff changeset
161 # No actial testing was performed: there is no Solaris on ia64 presently
a61af66fc99e Initial load
duke
parents:
diff changeset
162 LFLAGS += -Wl,-relax
a61af66fc99e Initial load
duke
parents:
diff changeset
163 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
164
a61af66fc99e Initial load
duke
parents:
diff changeset
165 ifdef USE_GNULD
a61af66fc99e Initial load
duke
parents:
diff changeset
166 # Enable linker optimization
a61af66fc99e Initial load
duke
parents:
diff changeset
167 LFLAGS += -Xlinker -O1
a61af66fc99e Initial load
duke
parents:
diff changeset
168
a61af66fc99e Initial load
duke
parents:
diff changeset
169 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
a61af66fc99e Initial load
duke
parents:
diff changeset
170 MAPFLAG = -Xlinker --version-script=FILENAME
a61af66fc99e Initial load
duke
parents:
diff changeset
171 else
a61af66fc99e Initial load
duke
parents:
diff changeset
172 MAPFLAG = -Xlinker -M -Xlinker FILENAME
a61af66fc99e Initial load
duke
parents:
diff changeset
173 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
174
a61af66fc99e Initial load
duke
parents:
diff changeset
175 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
a61af66fc99e Initial load
duke
parents:
diff changeset
176 SONAMEFLAG = -Xlinker -soname=SONAME
a61af66fc99e Initial load
duke
parents:
diff changeset
177
a61af66fc99e Initial load
duke
parents:
diff changeset
178 # Build shared library
a61af66fc99e Initial load
duke
parents:
diff changeset
179 SHARED_FLAG = -shared
a61af66fc99e Initial load
duke
parents:
diff changeset
180
a61af66fc99e Initial load
duke
parents:
diff changeset
181 #------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
182 # Debug flags
a61af66fc99e Initial load
duke
parents:
diff changeset
183
a61af66fc99e Initial load
duke
parents:
diff changeset
184 # Use the stabs format for debugging information (this is the default
a61af66fc99e Initial load
duke
parents:
diff changeset
185 # on gcc-2.91). It's good enough, has all the information about line
a61af66fc99e Initial load
duke
parents:
diff changeset
186 # numbers and local variables, and libjvm_g.so is only about 16M.
a61af66fc99e Initial load
duke
parents:
diff changeset
187 # Change this back to "-g" if you want the most expressive format.
a61af66fc99e Initial load
duke
parents:
diff changeset
188 # (warning: that could easily inflate libjvm_g.so to 150M!)
a61af66fc99e Initial load
duke
parents:
diff changeset
189 # Note: The Itanium gcc compiler crashes when using -gstabs.
a61af66fc99e Initial load
duke
parents:
diff changeset
190 DEBUG_CFLAGS/ia64 = -g
a61af66fc99e Initial load
duke
parents:
diff changeset
191 DEBUG_CFLAGS/amd64 = -g
a61af66fc99e Initial load
duke
parents:
diff changeset
192 DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
a61af66fc99e Initial load
duke
parents:
diff changeset
193 ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
a61af66fc99e Initial load
duke
parents:
diff changeset
194 DEBUG_CFLAGS += -gstabs
a61af66fc99e Initial load
duke
parents:
diff changeset
195 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
196
a61af66fc99e Initial load
duke
parents:
diff changeset
197 MCS = /usr/ccs/bin/mcs