Mon, 24 May 2010 13:53:38 -0700
6490487: java support on 64 bit solaris x86 machines is broken.
Reviewed-by: kvn, kamg
duke@435 | 1 | # |
xdono@631 | 2 | # Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. |
duke@435 | 3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 4 | # |
duke@435 | 5 | # This code is free software; you can redistribute it and/or modify it |
duke@435 | 6 | # under the terms of the GNU General Public License version 2 only, as |
duke@435 | 7 | # published by the Free Software Foundation. |
duke@435 | 8 | # |
duke@435 | 9 | # This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 12 | # version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 13 | # accompanied this code). |
duke@435 | 14 | # |
duke@435 | 15 | # You should have received a copy of the GNU General Public License version |
duke@435 | 16 | # 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 17 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 18 | # |
duke@435 | 19 | # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
duke@435 | 20 | # CA 95054 USA or visit www.sun.com if you need additional information or |
duke@435 | 21 | # have any questions. |
duke@435 | 22 | # |
duke@435 | 23 | # |
duke@435 | 24 | |
duke@435 | 25 | # Common rules/macros for the vm, adlc. |
duke@435 | 26 | |
duke@435 | 27 | # Tell make that .cpp is important |
duke@435 | 28 | .SUFFIXES: .cpp $(SUFFIXES) |
duke@435 | 29 | |
duke@435 | 30 | # For now. Other makefiles use CPP as the c++ compiler, but that should really |
duke@435 | 31 | # name the preprocessor. |
duke@435 | 32 | ifeq ($(CCC),) |
duke@435 | 33 | CCC = $(CPP) |
duke@435 | 34 | endif |
duke@435 | 35 | |
duke@435 | 36 | DEMANGLER = c++filt |
duke@435 | 37 | DEMANGLE = $(DEMANGLER) < $@ > .$@ && mv -f .$@ $@ |
duke@435 | 38 | |
duke@435 | 39 | # $(CC) is the c compiler (cc/gcc), $(CCC) is the c++ compiler (CC/g++). |
duke@435 | 40 | C_COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) |
duke@435 | 41 | CC_COMPILE = $(CCC) $(CPPFLAGS) $(CFLAGS) |
duke@435 | 42 | |
duke@435 | 43 | AS.S = $(AS) $(ASFLAGS) |
duke@435 | 44 | |
duke@435 | 45 | COMPILE.c = $(C_COMPILE) -c |
duke@435 | 46 | GENASM.c = $(C_COMPILE) -S |
duke@435 | 47 | LINK.c = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS) |
duke@435 | 48 | LINK_LIB.c = $(CC) $(LFLAGS) $(SHARED_FLAG) |
duke@435 | 49 | PREPROCESS.c = $(C_COMPILE) -E |
duke@435 | 50 | |
duke@435 | 51 | COMPILE.CC = $(CC_COMPILE) -c |
duke@435 | 52 | GENASM.CC = $(CC_COMPILE) -S |
duke@435 | 53 | LINK.CC = $(CCC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS) |
duke@435 | 54 | LINK_NOPROF.CC = $(CCC) $(LFLAGS) $(AOUT_FLAGS) |
duke@435 | 55 | LINK_LIB.CC = $(CCC) $(LFLAGS) $(SHARED_FLAG) |
duke@435 | 56 | PREPROCESS.CC = $(CC_COMPILE) -E |
duke@435 | 57 | |
duke@435 | 58 | # Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k". |
duke@435 | 59 | REMOVE_TARGET = rm -f $@ |
duke@435 | 60 | |
duke@435 | 61 | # Synonyms. |
duke@435 | 62 | COMPILE.cpp = $(COMPILE.CC) |
duke@435 | 63 | GENASM.cpp = $(GENASM.CC) |
duke@435 | 64 | LINK.cpp = $(LINK.CC) |
duke@435 | 65 | LINK_LIB.cpp = $(LINK_LIB.CC) |
duke@435 | 66 | PREPROCESS.cpp = $(PREPROCESS.CC) |
duke@435 | 67 | |
duke@435 | 68 | # Note use of ALT_BOOTDIR to explicitly specify location of java and |
duke@435 | 69 | # javac; this is the same environment variable used in the J2SE build |
duke@435 | 70 | # process for overriding the default spec, which is BOOTDIR. |
duke@435 | 71 | # Note also that we fall back to using JAVA_HOME if neither of these is |
duke@435 | 72 | # specified. |
duke@435 | 73 | |
duke@435 | 74 | ifdef ALT_BOOTDIR |
duke@435 | 75 | |
duke@435 | 76 | RUN.JAVA = $(ALT_BOOTDIR)/bin/java |
duke@435 | 77 | RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap |
duke@435 | 78 | RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah |
duke@435 | 79 | RUN.JAR = $(ALT_BOOTDIR)/bin/jar |
duke@435 | 80 | COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac |
duke@435 | 81 | COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic |
duke@435 | 82 | BOOT_JAVA_HOME = $(ALT_BOOTDIR) |
duke@435 | 83 | |
duke@435 | 84 | else |
duke@435 | 85 | |
duke@435 | 86 | ifdef BOOTDIR |
duke@435 | 87 | |
duke@435 | 88 | RUN.JAVA = $(BOOTDIR)/bin/java |
duke@435 | 89 | RUN.JAVAP = $(BOOTDIR)/bin/javap |
duke@435 | 90 | RUN.JAVAH = $(BOOTDIR)/bin/javah |
duke@435 | 91 | RUN.JAR = $(BOOTDIR)/bin/jar |
duke@435 | 92 | COMPILE.JAVAC = $(BOOTDIR)/bin/javac |
duke@435 | 93 | COMPILE.RMIC = $(BOOTDIR)/bin/rmic |
duke@435 | 94 | BOOT_JAVA_HOME = $(BOOTDIR) |
duke@435 | 95 | |
duke@435 | 96 | else |
duke@435 | 97 | |
duke@435 | 98 | ifdef JAVA_HOME |
duke@435 | 99 | |
duke@435 | 100 | RUN.JAVA = $(JAVA_HOME)/bin/java |
duke@435 | 101 | RUN.JAVAP = $(JAVA_HOME)/bin/javap |
duke@435 | 102 | RUN.JAVAH = $(JAVA_HOME)/bin/javah |
duke@435 | 103 | RUN.JAR = $(JAVA_HOME)/bin/jar |
duke@435 | 104 | COMPILE.JAVAC = $(JAVA_HOME)/bin/javac |
duke@435 | 105 | COMPILE.RMIC = $(JAVA_HOME)/bin/rmic |
duke@435 | 106 | BOOT_JAVA_HOME = $(JAVA_HOME) |
duke@435 | 107 | |
duke@435 | 108 | else |
duke@435 | 109 | |
duke@435 | 110 | # take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined |
duke@435 | 111 | # note that this is to support hotspot build without SA. To build |
duke@435 | 112 | # SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME |
duke@435 | 113 | |
duke@435 | 114 | RUN.JAVA = java |
duke@435 | 115 | RUN.JAVAP = javap |
duke@435 | 116 | RUN.JAVAH = javah |
duke@435 | 117 | RUN.JAR = jar |
duke@435 | 118 | COMPILE.JAVAC = javac |
duke@435 | 119 | COMPILE.RMIC = rmic |
duke@435 | 120 | |
duke@435 | 121 | endif |
duke@435 | 122 | endif |
duke@435 | 123 | endif |
duke@435 | 124 | |
andrew@1406 | 125 | COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS) |
andrew@1406 | 126 | |
duke@435 | 127 | SUM = /usr/bin/sum |
duke@435 | 128 | |
duke@435 | 129 | # 'gmake MAKE_VERBOSE=y' gives all the gory details. |
duke@435 | 130 | QUIETLY$(MAKE_VERBOSE) = @ |
duke@435 | 131 | RUN.JAR$(MAKE_VERBOSE) += >/dev/null |
duke@435 | 132 | |
andrew@1406 | 133 | # Settings for javac |
andrew@1406 | 134 | BOOT_SOURCE_LANGUAGE_VERSION = 6 |
andrew@1406 | 135 | BOOT_TARGET_CLASS_VERSION = 6 |
andrew@1406 | 136 | JAVAC_FLAGS = -g -encoding ascii |
andrew@1406 | 137 | BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) |
andrew@1406 | 138 | |
duke@435 | 139 | # With parallel makes, print a message at the end of compilation. |
duke@435 | 140 | ifeq ($(findstring j,$(MFLAGS)),j) |
duke@435 | 141 | COMPILE_DONE = && { echo Done with $<; } |
duke@435 | 142 | endif |
duke@435 | 143 | |
xlu@663 | 144 | # Include NONPIC_OBJ_FILES definition |
xlu@663 | 145 | ifndef LP64 |
xlu@663 | 146 | include $(GAMMADIR)/make/pic.make |
xlu@663 | 147 | endif |
duke@435 | 148 | |
duke@435 | 149 | # Sun compiler for 64 bit Solaris does not support building non-PIC object files. |
duke@435 | 150 | ifdef LP64 |
duke@435 | 151 | %.o: %.cpp |
duke@435 | 152 | @echo Compiling $< |
duke@435 | 153 | $(QUIETLY) $(REMOVE_TARGET) |
duke@435 | 154 | $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) |
duke@435 | 155 | else |
duke@435 | 156 | %.o: %.cpp |
duke@435 | 157 | @echo Compiling $< |
duke@435 | 158 | $(QUIETLY) $(REMOVE_TARGET) |
duke@435 | 159 | $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ |
duke@435 | 160 | $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \ |
duke@435 | 161 | $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)) |
duke@435 | 162 | endif |
duke@435 | 163 | |
duke@435 | 164 | %.o: %.s |
duke@435 | 165 | @echo Assembling $< |
duke@435 | 166 | $(QUIETLY) $(REMOVE_TARGET) |
duke@435 | 167 | $(QUIETLY) $(AS.S) -o $@ $< $(COMPILE_DONE) |
duke@435 | 168 | |
duke@435 | 169 | %.s: %.cpp |
duke@435 | 170 | @echo Generating assembly for $< |
duke@435 | 171 | $(QUIETLY) $(GENASM.CC) -o $@ $< |
duke@435 | 172 | $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE) |
duke@435 | 173 | |
duke@435 | 174 | # Intermediate files (for debugging macros) |
duke@435 | 175 | %.i: %.cpp |
duke@435 | 176 | @echo Preprocessing $< to $@ |
duke@435 | 177 | $(QUIETLY) $(PREPROCESS.CC) $< > $@ $(COMPILE_DONE) |
duke@435 | 178 | |
duke@435 | 179 | # Override gnumake built-in rules which do sccs get operations badly. |
duke@435 | 180 | # (They put the checked out code in the current directory, not in the |
duke@435 | 181 | # directory of the original file.) Since this is a symptom of a teamware |
duke@435 | 182 | # failure, and since not all problems can be detected by gnumake due |
duke@435 | 183 | # to incomplete dependency checking... just complain and stop. |
duke@435 | 184 | %:: s.% |
duke@435 | 185 | @echo "=========================================================" |
duke@435 | 186 | @echo File $@ |
duke@435 | 187 | @echo is out of date with respect to its SCCS file. |
duke@435 | 188 | @echo This file may be from an unresolved Teamware conflict. |
duke@435 | 189 | @echo This is also a symptom of a Teamware bringover/putback failure |
duke@435 | 190 | @echo in which SCCS files are updated but not checked out. |
duke@435 | 191 | @echo Check for other out of date files in your workspace. |
duke@435 | 192 | @echo "=========================================================" |
duke@435 | 193 | @exit 666 |
duke@435 | 194 | |
duke@435 | 195 | %:: SCCS/s.% |
duke@435 | 196 | @echo "=========================================================" |
duke@435 | 197 | @echo File $@ |
duke@435 | 198 | @echo is out of date with respect to its SCCS file. |
duke@435 | 199 | @echo This file may be from an unresolved Teamware conflict. |
duke@435 | 200 | @echo This is also a symptom of a Teamware bringover/putback failure |
duke@435 | 201 | @echo in which SCCS files are updated but not checked out. |
duke@435 | 202 | @echo Check for other out of date files in your workspace. |
duke@435 | 203 | @echo "=========================================================" |
duke@435 | 204 | @exit 666 |
duke@435 | 205 | |
duke@435 | 206 | .PHONY: default |