annotate make/linux/makefiles/adlc.make @ 158:a49545cab84a

6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles) Summary: Allows for building with SS12, no longer requires SS11, warns if not SS11 for now. Once SS12 is validated and performance measurements look ok, SS12 will be the validated compiler. Reviewed-by: sspitsyn, ikrylov
author ohair
date Tue, 27 May 2008 09:47:18 -0700
parents a294fd0c4b38
children d1605aabd0a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 #
a61af66fc99e Initial load
duke
parents:
diff changeset
2 # Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
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 #
a61af66fc99e Initial load
duke
parents:
diff changeset
19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 # CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 # have any questions.
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 # This makefile (adlc.make) is included from the adlc.make in the
a61af66fc99e Initial load
duke
parents:
diff changeset
26 # build directories.
a61af66fc99e Initial load
duke
parents:
diff changeset
27 # It knows how to compile, link, and run the adlc.
a61af66fc99e Initial load
duke
parents:
diff changeset
28
91
a294fd0c4b38 6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents: 0
diff changeset
29 include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
0
a61af66fc99e Initial load
duke
parents:
diff changeset
30
a61af66fc99e Initial load
duke
parents:
diff changeset
31 # #########################################################################
a61af66fc99e Initial load
duke
parents:
diff changeset
32
a61af66fc99e Initial load
duke
parents:
diff changeset
33 # OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make:
a61af66fc99e Initial load
duke
parents:
diff changeset
34 GENERATED = ../generated
a61af66fc99e Initial load
duke
parents:
diff changeset
35 OUTDIR = $(GENERATED)/adfiles
a61af66fc99e Initial load
duke
parents:
diff changeset
36
a61af66fc99e Initial load
duke
parents:
diff changeset
37 ARCH = $(Platform_arch)
a61af66fc99e Initial load
duke
parents:
diff changeset
38 OS = $(Platform_os_family)
a61af66fc99e Initial load
duke
parents:
diff changeset
39
a61af66fc99e Initial load
duke
parents:
diff changeset
40 SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \
a61af66fc99e Initial load
duke
parents:
diff changeset
43 $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 Src_Dirs += $(GAMMADIR)/src/share/vm/adlc
a61af66fc99e Initial load
duke
parents:
diff changeset
46
a61af66fc99e Initial load
duke
parents:
diff changeset
47 EXEC = $(OUTDIR)/adlc
a61af66fc99e Initial load
duke
parents:
diff changeset
48
a61af66fc99e Initial load
duke
parents:
diff changeset
49 # set VPATH so make knows where to look for source files
a61af66fc99e Initial load
duke
parents:
diff changeset
50 Src_Dirs_V = ${Src_Dirs} $(GENERATED)/incls
a61af66fc99e Initial load
duke
parents:
diff changeset
51 VPATH += $(Src_Dirs_V:%=%:)
a61af66fc99e Initial load
duke
parents:
diff changeset
52
a61af66fc99e Initial load
duke
parents:
diff changeset
53 # set INCLUDES for C preprocessor
a61af66fc99e Initial load
duke
parents:
diff changeset
54 Src_Dirs_I = ${Src_Dirs} $(GENERATED)
a61af66fc99e Initial load
duke
parents:
diff changeset
55 INCLUDES += $(Src_Dirs_I:%=-I%)
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 # Force assertions on.
a61af66fc99e Initial load
duke
parents:
diff changeset
58 SYSDEFS += -DASSERT
a61af66fc99e Initial load
duke
parents:
diff changeset
59 CPPFLAGS = $(SYSDEFS) $(INCLUDES)
a61af66fc99e Initial load
duke
parents:
diff changeset
60
a61af66fc99e Initial load
duke
parents:
diff changeset
61 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
a61af66fc99e Initial load
duke
parents:
diff changeset
62 # Suppress warnings (for now)
a61af66fc99e Initial load
duke
parents:
diff changeset
63 CFLAGS_WARN = -w
a61af66fc99e Initial load
duke
parents:
diff changeset
64 CFLAGS += $(CFLAGS_WARN)
a61af66fc99e Initial load
duke
parents:
diff changeset
65
a61af66fc99e Initial load
duke
parents:
diff changeset
66 OBJECTNAMES = \
a61af66fc99e Initial load
duke
parents:
diff changeset
67 adlparse.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
68 archDesc.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
69 arena.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
70 dfa.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
71 dict2.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
72 filebuff.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
73 forms.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
74 formsopt.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
75 formssel.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
76 main.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
77 adlc-opcodes.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
78 output_c.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
79 output_h.o \
a61af66fc99e Initial load
duke
parents:
diff changeset
80
a61af66fc99e Initial load
duke
parents:
diff changeset
81 OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%)
a61af66fc99e Initial load
duke
parents:
diff changeset
82
a61af66fc99e Initial load
duke
parents:
diff changeset
83 GENERATEDNAMES = \
a61af66fc99e Initial load
duke
parents:
diff changeset
84 ad_$(Platform_arch_model).cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
85 ad_$(Platform_arch_model).hpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
86 ad_$(Platform_arch_model)_clone.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
87 ad_$(Platform_arch_model)_expand.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
88 ad_$(Platform_arch_model)_format.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
89 ad_$(Platform_arch_model)_gen.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
90 ad_$(Platform_arch_model)_misc.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
91 ad_$(Platform_arch_model)_peephole.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
92 ad_$(Platform_arch_model)_pipeline.cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
93 adGlobals_$(Platform_arch_model).hpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
94 dfa_$(Platform_arch_model).cpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
95
a61af66fc99e Initial load
duke
parents:
diff changeset
96 GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%)
a61af66fc99e Initial load
duke
parents:
diff changeset
97
a61af66fc99e Initial load
duke
parents:
diff changeset
98 # #########################################################################
a61af66fc99e Initial load
duke
parents:
diff changeset
99
a61af66fc99e Initial load
duke
parents:
diff changeset
100 all: $(EXEC)
a61af66fc99e Initial load
duke
parents:
diff changeset
101
a61af66fc99e Initial load
duke
parents:
diff changeset
102 $(EXEC) : $(OBJECTS)
a61af66fc99e Initial load
duke
parents:
diff changeset
103 @echo Making adlc
a61af66fc99e Initial load
duke
parents:
diff changeset
104 $(QUIETLY) $(LINK_NOPROF.CC) -o $(EXEC) $(OBJECTS)
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106 # Random dependencies:
a61af66fc99e Initial load
duke
parents:
diff changeset
107 $(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
a61af66fc99e Initial load
duke
parents:
diff changeset
108
a61af66fc99e Initial load
duke
parents:
diff changeset
109 # The source files refer to ostream.h, which sparcworks calls iostream.h
a61af66fc99e Initial load
duke
parents:
diff changeset
110 $(OBJECTS): ostream.h
a61af66fc99e Initial load
duke
parents:
diff changeset
111
a61af66fc99e Initial load
duke
parents:
diff changeset
112 ostream.h :
a61af66fc99e Initial load
duke
parents:
diff changeset
113 @echo >$@ '#include <iostream.h>'
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 dump:
a61af66fc99e Initial load
duke
parents:
diff changeset
116 : OUTDIR=$(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
117 : OBJECTS=$(OBJECTS)
a61af66fc99e Initial load
duke
parents:
diff changeset
118 : products = $(GENERATEDFILES)
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 all: $(GENERATEDFILES)
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 $(GENERATEDFILES): refresh_adfiles
a61af66fc99e Initial load
duke
parents:
diff changeset
123
a61af66fc99e Initial load
duke
parents:
diff changeset
124 # Get a unique temporary directory name, so multiple makes can run in parallel.
a61af66fc99e Initial load
duke
parents:
diff changeset
125 # Note that product files are updated via "mv", which is atomic.
a61af66fc99e Initial load
duke
parents:
diff changeset
126 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
a61af66fc99e Initial load
duke
parents:
diff changeset
127
a61af66fc99e Initial load
duke
parents:
diff changeset
128 ADLCFLAGS = -q -T
a61af66fc99e Initial load
duke
parents:
diff changeset
129
a61af66fc99e Initial load
duke
parents:
diff changeset
130 ifdef LP64
a61af66fc99e Initial load
duke
parents:
diff changeset
131 ADLCFLAGS += -D_LP64
a61af66fc99e Initial load
duke
parents:
diff changeset
132 else
a61af66fc99e Initial load
duke
parents:
diff changeset
133 ADLCFLAGS += -U_LP64
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 #
a61af66fc99e Initial load
duke
parents:
diff changeset
137 # adlc_updater is a simple sh script, under sccs control. It is
a61af66fc99e Initial load
duke
parents:
diff changeset
138 # used to selectively update generated adlc files. This should
a61af66fc99e Initial load
duke
parents:
diff changeset
139 # provide a nice compilation speed improvement.
a61af66fc99e Initial load
duke
parents:
diff changeset
140 #
91
a294fd0c4b38 6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents: 0
diff changeset
141 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
142 ADLC_UPDATER = adlc_updater
a61af66fc99e Initial load
duke
parents:
diff changeset
143
a61af66fc99e Initial load
duke
parents:
diff changeset
144 # This action refreshes all generated adlc files simultaneously.
a61af66fc99e Initial load
duke
parents:
diff changeset
145 # The way it works is this:
a61af66fc99e Initial load
duke
parents:
diff changeset
146 # 1) create a scratch directory to work in.
a61af66fc99e Initial load
duke
parents:
diff changeset
147 # 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
a61af66fc99e Initial load
duke
parents:
diff changeset
148 # 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
a61af66fc99e Initial load
duke
parents:
diff changeset
149 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
a61af66fc99e Initial load
duke
parents:
diff changeset
150 # 5) If we actually updated any files, echo a notice.
a61af66fc99e Initial load
duke
parents:
diff changeset
151 #
a61af66fc99e Initial load
duke
parents:
diff changeset
152 refresh_adfiles: $(EXEC) $(SOURCE.AD)
a61af66fc99e Initial load
duke
parents:
diff changeset
153 @rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
154 $(QUIETLY) [ -f $(ADLC_UPDATER) ] || ( cp $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) . ; chmod +x $(ADLC_UPDATER) )
a61af66fc99e Initial load
duke
parents:
diff changeset
155 $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
a61af66fc99e Initial load
duke
parents:
diff changeset
156 -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \
a61af66fc99e Initial load
duke
parents:
diff changeset
157 || { rm -rf $(TEMPDIR); exit 1; }
a61af66fc99e Initial load
duke
parents:
diff changeset
158 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
159 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
160 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
161 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
162 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
163 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
164 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
165 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
166 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
167 $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
168 $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
169 $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \
a61af66fc99e Initial load
duke
parents:
diff changeset
170 || echo "Rescanned $(SOURCE.AD) but encountered no changes."
a61af66fc99e Initial load
duke
parents:
diff changeset
171 $(QUIETLY) rm -rf $(TEMPDIR)
a61af66fc99e Initial load
duke
parents:
diff changeset
172
a61af66fc99e Initial load
duke
parents:
diff changeset
173
a61af66fc99e Initial load
duke
parents:
diff changeset
174 # #########################################################################
a61af66fc99e Initial load
duke
parents:
diff changeset
175
a61af66fc99e Initial load
duke
parents:
diff changeset
176 $(SOURCE.AD): $(SOURCES.AD)
a61af66fc99e Initial load
duke
parents:
diff changeset
177 $(QUIETLY) cat $(SOURCES.AD) > $(SOURCE.AD)
a61af66fc99e Initial load
duke
parents:
diff changeset
178
a61af66fc99e Initial load
duke
parents:
diff changeset
179 $(OUTDIR)/%.o: %.cpp
a61af66fc99e Initial load
duke
parents:
diff changeset
180 @echo Compiling $<
a61af66fc99e Initial load
duke
parents:
diff changeset
181 $(QUIETLY) $(REMOVE_TARGET)
a61af66fc99e Initial load
duke
parents:
diff changeset
182 $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
a61af66fc99e Initial load
duke
parents:
diff changeset
183
a61af66fc99e Initial load
duke
parents:
diff changeset
184 # Some object files are given a prefix, to disambiguate
a61af66fc99e Initial load
duke
parents:
diff changeset
185 # them from objects of the same name built for the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
186 $(OUTDIR)/adlc-%.o: %.cpp
a61af66fc99e Initial load
duke
parents:
diff changeset
187 @echo Compiling $<
a61af66fc99e Initial load
duke
parents:
diff changeset
188 $(QUIETLY) $(REMOVE_TARGET)
a61af66fc99e Initial load
duke
parents:
diff changeset
189 $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 # #########################################################################
a61af66fc99e Initial load
duke
parents:
diff changeset
192
a61af66fc99e Initial load
duke
parents:
diff changeset
193 clean :
a61af66fc99e Initial load
duke
parents:
diff changeset
194 rm $(OBJECTS)
a61af66fc99e Initial load
duke
parents:
diff changeset
195
a61af66fc99e Initial load
duke
parents:
diff changeset
196 cleanall :
a61af66fc99e Initial load
duke
parents:
diff changeset
197 rm $(OBJECTS) $(EXEC)
a61af66fc99e Initial load
duke
parents:
diff changeset
198
a61af66fc99e Initial load
duke
parents:
diff changeset
199 # #########################################################################
a61af66fc99e Initial load
duke
parents:
diff changeset
200
a61af66fc99e Initial load
duke
parents:
diff changeset
201 .PHONY: all dump refresh_adfiles clean cleanall