diff -r 000000000000 -r 9a66ca7c79fa make/Makefile-classic --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/Makefile-classic Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,419 @@ +# +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# +# Makefile for building the langtools workspace. +# + +# +# On Solaris, the 'make' utility from Sun will not work with these makefiles. +# This little rule is only understood by Sun's make, and is harmless +# when seen by the GNU make tool. If using Sun's make, this causes the +# make command to fail. +# +SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33 + +#----- cancel implicit rules + +%: %.o +%: %.obj +%: %.dll +%: %.c +%: %.cc +%: %.C +%: %.p +%: %.f +%: %.s +%: %.F +%: %.r +%: %.S +%: %.mod +%: %.sh +%: %,v +%: RCS/%,v + +#----- imports + +ifdef ALT_BOOT_JAVA_HOME + BOOT_JAVA_HOME = $(ALT_BOOT_JAVA_HOME) +else + ifdef ALT_BOOTDIR + BOOT_JAVA_HOME = $(ALT_BOOTDIR) + else + BOOT_JAVA_HOME=/java/re/jdk/1.5.0/archive/fcs/binaries/solaris-sparc + endif +endif + +BOOT_JAVA=$(BOOT_JAVA_HOME)/bin/java +BOOT_JAVAC=$(BOOT_JAVA_HOME)/bin/javac +BOOTJAR=$(BOOT_JAVA_HOME)/bin/jar + +ifdef ALT_TESTJAVA_HOME + TESTJAVA_HOME = $(ALT_TESTJAVA_HOME) +else + TESTJAVA_HOME=/java/re/jdk/1.6.0/archive/fcs/binaries/solaris-sparc +endif + +TESTJAVA=$(TESTJAVA_HOME)/bin/java + +ifdef ALT_FINDBUGS_HOME + FINDBUGS_HOME = $(ALT_FINDBUGS_HOME) +else + FINDBUGS_HOME = /java/devtools/share/findbugs/1.1.2-rc4 +endif + +FINDBUGS = $(FINDBUGS_HOME)/bin/findbugs + +#----- commands + +CHMOD = chmod +CP = cp +ECHO = echo # FIXME +FIND = find +MKDIR = mkdir +SED = sed +ZIP = zip + +#----- locations and deliverables + +TOPDIR = .. +SRC_BIN_DIR = $(TOPDIR)/src/share/bin +SRC_CLASSES_DIR = $(TOPDIR)/src/share/classes + +BUILD_DIR = $(TOPDIR)/build + +CLASSES_DIR = $(BUILD_DIR)/classes +GENSRC_DIR = $(BUILD_DIR)/gensrc + +DIST_DIR = $(TOPDIR)/dist +BIN_DIR = $(DIST_DIR)/bin +LIB_DIR = $(DIST_DIR)/lib + +JAVAC_JAR = $(LIB_DIR)/javac.jar +JAVADOC_JAR = $(LIB_DIR)/javadoc.jar +JAVAH_JAR = $(LIB_DIR)/javah.jar +JAVAP_JAR = $(LIB_DIR)/javap.jar +APT_JAR = $(LIB_DIR)/apt.jar + +CLASSES_JAR = $(DIST_DIR)/classes.jar +SRC_ZIP = $(DIST_DIR)/src.zip + +BUILDTOOLSRC_DIR = tools +BUILDTOOLCLASSES_DIR = $(BUILD_DIR)/toolclasses + +#----- + +ifndef JDK_MAJOR_VERSION + JDK_MAJOR_VERSION = 1 +endif + +ifndef JDK_MINOR_VERSION + JDK_MINOR_VERSION = 7 +endif + +ifndef JDK_MICRO_VERSION + JDK_MICRO_VERSION = 0 +endif + +ifndef JDK_VERSION + JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION) +endif + +ifndef MILESTONE + MILESTONE = internal +endif + +# RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set +ifneq ($(MILESTONE),fcs) + RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE) +else + RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE) +endif + +# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set +ifdef BUILD_NUMBER + FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER) +else + BUILD_NUMBER = b00 + USER_RELEASE_SUFFIX := $(shell echo $(USER)_`date '+%d_%b_%Y_%H_%M' | tr "A-Z" "a-z"`) + FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER) +endif + +#----- useful macros + +TOOLS = javac javadoc javah javap apt + +SOURCE_LEVEL = 5 +BOOTSTRAP_TARGET_LEVEL = 5 +TARGET_LEVEL = 6 + +ifndef TARGET_JAVA + TARGET_JAVA = java +endif + +NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true + +SELF = $(lastword $(MAKEFILE_LIST)) + +#----- + +# the default is to generate the following: +# dist/{bin,lib}: +# lang tools compiled to run on the target JDK + +default: + $(MAKE) -f $(SELF) \ + MILESTONE=bootstrap \ + TARGET_LEVEL=$(BOOTSTRAP_TARGET_LEVEL) \ + TARGET_JAVA=$(BOOT_JAVA_HOME)/bin/java \ + GENSRC_DIR=$(BUILD_DIR)/bootstrap/gensrc \ + CLASSES_DIR=$(BUILD_DIR)/bootstrap/classes \ + BIN_DIR=$(BUILD_DIR)/bootstrap/bin \ + LIB_DIR=$(BUILD_DIR)/bootstrap/lib \ + $(BUILD_DIR)/bootstrap/lib/javac.jar \ + $(BUILD_DIR)/bootstrap/bin/javac + $(MAKE) -f $(SELF) \ + BOOT_JAVAC=$(BUILD_DIR)/bootstrap/bin/javac \ + tools + +# for jdk, we generate the following: +# dist/bootstrap/{bin,lib}: +# lang tools compiled to run on the boot JDK +# dist/lib/classes.jar: +# lang tools recompiled to run on the target JDK, +# ready for inclusion in rt.jar and tools.jar +# dist/lib/src.zip +# .properties and .java files for classes in classes.jar, +# ready for jdk src.zip + +jdk: + $(MAKE) -f $(SELF) \ + MILESTONE=bootstrap \ + TARGET_LEVEL=$(BOOTSTRAP_TARGET_LEVEL) \ + TARGET_JAVA=$(BOOT_JAVA_HOME)/bin/java \ + GENSRC_DIR=$(BUILD_DIR)/bootstrap/gensrc \ + CLASSES_DIR=$(BUILD_DIR)/bootstrap/classes \ + BIN_DIR=$(DIST_DIR)/bootstrap/bin \ + LIB_DIR=$(DIST_DIR)/bootstrap/lib \ + tools + $(MAKE) -f $(SELF) \ + BOOT_JAVAC=$(DIST_DIR)/bootstrap/bin/javac \ + LIB_DIR=$(BUILD_DIR)/jdk/lib \ + $(DIST_DIR)/lib/classes.jar \ + $(DIST_DIR)/lib/src.zip + +tools: $(TOOLS:%=$(LIB_DIR)/%.jar) $(TOOLS:%=$(BIN_DIR)/%) + +clean: + $(RM) -r $(BUILD_DIR) + +really-clean: clean + $(RM) -r $(DIST_DIR) + +jprt_product_build \ +jprt_debug_build \ +jprt_fastdebug_build: lib + +#----- javac + +JAVAC_DIRS = \ + javax/annotation/processing \ + javax/lang/model \ + javax/tools \ + com/sun/source \ + com/sun/tools/javac + +JAVAC_RESOURCE_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAC_DIRS)) -name SCCS -prune -o -name \*.properties -print ) + +JAVAC_JAVA_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAC_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAC_RESOURCE_FILES)) \ + $(GENSRC_DIR)/com/sun/tools/javac/resources/version.java + +$(JAVAC_JAR): $(JAVAC_JAVA_FILES) + $(MKDIR) -p $(CLASSES_DIR) $(@D) + $(BOOT_JAVAC) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(NO_PROPRIETARY_API_WARNINGS) $(JAVAC_JAVA_FILES) + ( $(ECHO) Main-Class: com.sun.tools.javac.Main ) > $(BUILD_DIR)/javac.mf + $(BOOTJAR) -cfm $@ $(BUILD_DIR)/javac.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAC_DIRS)) + +#----- javadoc + +### FIXME -- javadoc has a couple of extra non-property resource files +### that need to be included + +JAVADOC_DIRS = \ + com/sun/javadoc \ + com/sun/tools/doclets \ + com/sun/tools/javadoc + +JAVADOC_RESOURCE_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVADOC_DIRS)) -name SCCS -prune -o -name \*.properties -print ) + +JAVADOC_JAVA_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVADOC_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVADOC_RESOURCE_FILES)) + +$(JAVADOC_JAR): $(JAVADOC_JAVA_FILES) $(JAVAC_JAR) + $(MKDIR) -p $(CLASSES_DIR) $(@D) + $(BOOT_JAVAC) -sourcepath "" -classpath $(JAVAC_JAR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(JAVADOC_JAVA_FILES) + ( $(ECHO) Main-Class: com.sun.tools.javadoc.Main ; $(ECHO) Class-Path: javac.jar ) > $(BUILD_DIR)/javadoc.mf + $(BOOTJAR) -cfm $@ $(BUILD_DIR)/javadoc.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVADOC_DIRS)) + +#----- javah + +JAVAH_DIRS = \ + com/sun/tools/javah + +JAVAH_RESOURCE_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAH_DIRS)) -name SCCS -prune -o -name \*.properties -print ) + +JAVAH_JAVA_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAH_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAH_RESOURCE_FILES)) + +$(JAVAH_JAR): $(JAVAH_JAVA_FILES) $(JAVADOC_JAR) + $(MKDIR) -p $(CLASSES_DIR) $(@D) + $(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(JAVAH_JAVA_FILES) + ( $(ECHO) Main-Class: com.sun.tools.javah.Main ; $(ECHO) Class-Path: javadoc.jar ) > $(BUILD_DIR)/javah.mf + $(BOOTJAR) -cfm $@ $(BUILD_DIR)/javah.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAH_DIRS)) + +#----- javap + +JAVAP_DIRS = \ + sun/tools/javap + +JAVAP_RESOURCE_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAP_DIRS)) -name SCCS -prune -o -name \*.properties -print ) + +JAVAP_JAVA_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(JAVAP_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAP_RESOURCE_FILES)) + +$(JAVAP_JAR): $(JAVAP_JAVA_FILES) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(JAVAP_RESOURCE_FILES)) + $(MKDIR) -p $(CLASSES_DIR) + $(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(JAVAP_JAVA_FILES) + ( $(ECHO) Main-Class: sun.tools.javap.Main ) > $(BUILD_DIR)/javap.mf + $(BOOTJAR) -cfm $@ $(BUILD_DIR)/javap.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAP_DIRS)) + +#----- apt + +APT_DIRS = \ + com/sun/mirror \ + com/sun/tools/apt + +APT_RESOURCE_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.properties -print ) + +APT_JAVA_FILES = \ + $(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.java -print ) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) + +$(APT_JAR): $(APT_JAVA_FILES) $(JAVAC_JAR) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) + $(MKDIR) -p $(CLASSES_DIR) $(@D) + $(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(NO_PROPRIETARY_API_WARNINGS) \ + $(APT_JAVA_FILES) \ + $(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES)) + ( $(ECHO) Main-Class: com.sun.tools.apt.Main ; $(ECHO) Class-Path: javac.jar ) > $(BUILD_DIR)/apt.mf + $(BOOTJAR) -cfm $@ $(BUILD_DIR)/apt.mf $(patsubst %,-C $(CLASSES_DIR) %, $(APT_DIRS)) + +#----- + +build-tools: $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class + +$(GENSRC_DIR)/%.java: $(SRC_CLASSES_DIR)/%.properties $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class + $(MKDIR) -p $(@D) + $(BOOT_JAVA) -cp $(BUILDTOOLCLASSES_DIR)/CompileProperties CompileProperties $< $(patsubst $(CLASSES_DIR)/%.class,$(GENSRC_DIR)/%.java,$@) + +$(GENSRC_DIR)/%.java: $(GENSRC_DIR)/%.properties $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class + $(MKDIR) -p $(@D) + $(BOOT_JAVA) -cp $(BUILDTOOLCLASSES_DIR)/CompileProperties CompileProperties $< $(patsubst $(CLASSES_DIR)/%.class,$(GENSRC_DIR)/%.java,$@) + +$(GENSRC_DIR)/%.properties: $(SRC_CLASSES_DIR)/%.properties-template + $(MKDIR) -p $(@D) + $(SED) -e 's/$$(JDK_VERSION)/$(JDK_VERSION)/' \ + -e 's/$$(FULL_VERSION)/$(FULL_VERSION)/' \ + -e 's/$$(RELEASE)/$(RELEASE)/' \ + < $< > $@ + +$(BUILDTOOLCLASSES_DIR)/%.class : $(BUILDTOOLSRC_DIR)/%.java + $(MKDIR) -p $(@D) + $(BOOT_JAVAC) -d $(@D) $< + +#----- all classes + +$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR) $(APT_JAR) + $(MKDIR) -p $(@D) + $(BOOTJAR) -cf $@ -C $(CLASSES_DIR) . + +#----- src.zip + +SRC_ZIP_FILES = $(shell $(FIND) $(SRC_CLASSES_DIR) \( -name SCCS -o -name \*-template \) -prune -o -type f -print ) + +$(DIST_DIR)/%/src.zip: $(SRC_ZIP_FILES) + abs_src_zip=`cd $(@D) ; pwd`/$(@F) ; \ + ( cd $(SRC_CLASSES_DIR) ; $(FIND) . \( -name SCCS -o -name \*-template \) -prune -o -type f -print | $(ZIP) -q $$abs_src_zip -@ ) ; \ + ( cd $(SRC_CLASSES_DIR) ; $(FIND) . -name SCCS -prune -o -name \*-template -print | $(SED) -e 's/-template//' ) | ( cd $(GENSRC_DIR) ; $(ZIP) -q $$abs_src_zip -@ ) + +#----- bin files + +$(BIN_DIR)/%: $(SRC_BIN_DIR)/launcher.sh-template + $(MKDIR) -p $(@D) + $(SED) -e 's|#PROGRAM#|$(@F)|' -e 's|#TARGET_JAVA#|$(TARGET_JAVA)|' $< > $@ + $(CHMOD) +x $@ + +#----- + +findbugs: $(BUILD_DIR)/findbugs.txt + +$(BUILD_DIR)/findbugs.txt: $(CLASSES_JAR) + $(MKDIR) -p $(@D) + $(FINDBUGS) -textui -javahome $(BOOT_JAVA_HOME) -high -emacs -outputFile $@ $< + +#----- + +quick-check: $(patsubst %, $(DIST_LIB_DIR)/%.jar, $(TOOLS)) + $(TESTJAVA) -jar $(JAVAC_JAR) -version + - $(TESTJAVA) -jar $(JAVADOC_JAR) -version + $(TESTJAVA) -jar $(JAVAH_JAR) -version + - $(TESTJAVA) -jar $(JAVAP_JAR) -version + $(TESTJAVA) -jar $(APT_JAR) -version + +#----- + +.PHONY: \ + all \ + build \ + build-tools \ + clean \ + default \ + findbugs \ + jprt_product_build \ + jprt_debug_build \ + jprt_fastdebug_build \ + tools +