aoqi@0: # aoqi@0: # Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. aoqi@0: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: # aoqi@0: # This code is free software; you can redistribute it and/or modify it aoqi@0: # under the terms of the GNU General Public License version 2 only, as aoqi@0: # published by the Free Software Foundation. aoqi@0: # aoqi@0: # This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: # version 2 for more details (a copy is included in the LICENSE file that aoqi@0: # accompanied this code). aoqi@0: # aoqi@0: # You should have received a copy of the GNU General Public License version aoqi@0: # 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: # aoqi@0: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: # or visit www.oracle.com if you need additional information or have any aoqi@0: # questions. aoqi@0: # aoqi@0: # aoqi@0: aoqi@0: # Common rules/macros for the vm, adlc. aoqi@0: aoqi@0: # Tell make that .cpp is important aoqi@0: .SUFFIXES: .cpp $(SUFFIXES) aoqi@0: aoqi@0: DEMANGLER = c++filt aoqi@0: DEMANGLE = $(DEMANGLER) < $@ > .$@ && mv -f .$@ $@ aoqi@0: aoqi@0: # $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++). aoqi@0: CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS) aoqi@0: CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS) aoqi@0: aoqi@0: AS.S = $(AS) $(ASFLAGS) aoqi@0: aoqi@0: COMPILE.CC = $(CC_COMPILE) -c aoqi@0: GENASM.CC = $(CC_COMPILE) -S aoqi@0: LINK.CC = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS) aoqi@0: LINK_LIB.CC = $(CC) $(LFLAGS) $(SHARED_FLAG) aoqi@0: PREPROCESS.CC = $(CC_COMPILE) -E aoqi@0: aoqi@0: COMPILE.CXX = $(CXX_COMPILE) -c aoqi@0: GENASM.CXX = $(CXX_COMPILE) -S aoqi@0: LINK.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS) aoqi@0: LINK_NOPROF.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) aoqi@0: LINK_LIB.CXX = $(CXX) $(LFLAGS) $(SHARED_FLAG) aoqi@0: PREPROCESS.CXX = $(CXX_COMPILE) -E aoqi@0: aoqi@0: # cross compiling the jvm with c2 requires host compilers to build aoqi@0: # adlc tool aoqi@0: aoqi@0: HOST.CXX_COMPILE = $(HOSTCXX) $(CXXFLAGS) $(CFLAGS) aoqi@0: HOST.COMPILE.CXX = $(HOST.CXX_COMPILE) -c aoqi@0: HOST.LINK_NOPROF.CXX = $(HOSTCXX) $(LFLAGS) $(AOUT_FLAGS) aoqi@0: aoqi@0: aoqi@0: # Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k". aoqi@0: REMOVE_TARGET = rm -f $@ aoqi@0: aoqi@0: # Note use of ALT_BOOTDIR to explicitly specify location of java and aoqi@0: # javac; this is the same environment variable used in the J2SE build aoqi@0: # process for overriding the default spec, which is BOOTDIR. aoqi@0: # Note also that we fall back to using JAVA_HOME if neither of these is aoqi@0: # specified. aoqi@0: aoqi@0: ifdef ALT_BOOTDIR aoqi@0: aoqi@0: RUN.JAVA = $(ALT_BOOTDIR)/bin/java aoqi@0: RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap aoqi@0: RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah aoqi@0: RUN.JAR = $(ALT_BOOTDIR)/bin/jar aoqi@0: COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac aoqi@0: COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic aoqi@0: BOOT_JAVA_HOME = $(ALT_BOOTDIR) aoqi@0: aoqi@0: else aoqi@0: aoqi@0: ifdef BOOTDIR aoqi@0: aoqi@0: RUN.JAVA = $(BOOTDIR)/bin/java aoqi@0: RUN.JAVAP = $(BOOTDIR)/bin/javap aoqi@0: RUN.JAVAH = $(BOOTDIR)/bin/javah aoqi@0: RUN.JAR = $(BOOTDIR)/bin/jar aoqi@0: COMPILE.JAVAC = $(BOOTDIR)/bin/javac aoqi@0: COMPILE.RMIC = $(BOOTDIR)/bin/rmic aoqi@0: BOOT_JAVA_HOME = $(BOOTDIR) aoqi@0: aoqi@0: else aoqi@0: aoqi@0: ifdef JAVA_HOME aoqi@0: aoqi@0: RUN.JAVA = $(JAVA_HOME)/bin/java aoqi@0: RUN.JAVAP = $(JAVA_HOME)/bin/javap aoqi@0: RUN.JAVAH = $(JAVA_HOME)/bin/javah aoqi@0: RUN.JAR = $(JAVA_HOME)/bin/jar aoqi@0: COMPILE.JAVAC = $(JAVA_HOME)/bin/javac aoqi@0: COMPILE.RMIC = $(JAVA_HOME)/bin/rmic aoqi@0: BOOT_JAVA_HOME = $(JAVA_HOME) aoqi@0: aoqi@0: else aoqi@0: aoqi@0: # take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined aoqi@0: # note that this is to support hotspot build without SA. To build aoqi@0: # SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME aoqi@0: aoqi@0: RUN.JAVA = java aoqi@0: RUN.JAVAP = javap aoqi@0: RUN.JAVAH = javah aoqi@0: RUN.JAR = jar aoqi@0: COMPILE.JAVAC = javac aoqi@0: COMPILE.RMIC = rmic aoqi@0: aoqi@0: endif aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS) aoqi@0: aoqi@0: SUM = /usr/bin/sum aoqi@0: aoqi@0: # 'gmake MAKE_VERBOSE=y' gives all the gory details. aoqi@0: QUIETLY$(MAKE_VERBOSE) = @ aoqi@0: RUN.JAR$(MAKE_VERBOSE) += >/dev/null aoqi@0: aoqi@0: # Settings for javac aoqi@0: BOOT_SOURCE_LANGUAGE_VERSION = 6 aoqi@0: BOOT_TARGET_CLASS_VERSION = 6 aoqi@0: JAVAC_FLAGS = -g -encoding ascii aoqi@0: BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) aoqi@0: aoqi@0: # With parallel makes, print a message at the end of compilation. aoqi@0: ifeq ($(findstring j,$(MFLAGS)),j) aoqi@0: COMPILE_DONE = && { echo Done with $<; } aoqi@0: endif aoqi@0: aoqi@0: # Include $(NONPIC_OBJ_FILES) definition aoqi@0: ifndef LP64 aoqi@0: include $(GAMMADIR)/make/pic.make aoqi@0: endif aoqi@0: aoqi@0: include $(GAMMADIR)/make/altsrc.make aoqi@0: aoqi@0: # The non-PIC object files are only generated for 32 bit platforms. aoqi@0: ifdef LP64 aoqi@0: %.o: %.cpp aoqi@0: @echo Compiling $< aoqi@0: $(QUIETLY) $(REMOVE_TARGET) aoqi@0: $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE) aoqi@0: else aoqi@0: %.o: %.cpp aoqi@0: @echo Compiling $< aoqi@0: $(QUIETLY) $(REMOVE_TARGET) aoqi@0: $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ aoqi@0: $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \ aoqi@0: $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)) aoqi@0: endif aoqi@0: aoqi@0: %.o: %.s aoqi@0: @echo Assembling $< aoqi@0: $(QUIETLY) $(REMOVE_TARGET) aoqi@0: $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE) aoqi@0: aoqi@0: %.s: %.cpp aoqi@0: @echo Generating assembly for $< aoqi@0: $(QUIETLY) $(GENASM.CXX) -o $@ $< aoqi@0: $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE) aoqi@0: aoqi@0: # Intermediate files (for debugging macros) aoqi@0: %.i: %.cpp aoqi@0: @echo Preprocessing $< to $@ aoqi@0: $(QUIETLY) $(PREPROCESS.CXX) $< > $@ $(COMPILE_DONE) aoqi@0: aoqi@0: # Override gnumake built-in rules which do sccs get operations badly. aoqi@0: # (They put the checked out code in the current directory, not in the aoqi@0: # directory of the original file.) Since this is a symptom of a teamware aoqi@0: # failure, and since not all problems can be detected by gnumake due aoqi@0: # to incomplete dependency checking... just complain and stop. aoqi@0: %:: s.% aoqi@0: @echo "=========================================================" aoqi@0: @echo File $@ aoqi@0: @echo is out of date with respect to its SCCS file. aoqi@0: @echo This file may be from an unresolved Teamware conflict. aoqi@0: @echo This is also a symptom of a Teamware bringover/putback failure aoqi@0: @echo in which SCCS files are updated but not checked out. aoqi@0: @echo Check for other out of date files in your workspace. aoqi@0: @echo "=========================================================" aoqi@0: @exit 666 aoqi@0: aoqi@0: %:: SCCS/s.% aoqi@0: @echo "=========================================================" aoqi@0: @echo File $@ aoqi@0: @echo is out of date with respect to its SCCS file. aoqi@0: @echo This file may be from an unresolved Teamware conflict. aoqi@0: @echo This is also a symptom of a Teamware bringover/putback failure aoqi@0: @echo in which SCCS files are updated but not checked out. aoqi@0: @echo Check for other out of date files in your workspace. aoqi@0: @echo "=========================================================" aoqi@0: @exit 666 aoqi@0: aoqi@0: .PHONY: default