1 # 2 # Copyright 2007-2009 Sun Microsystems, Inc. All Rights Reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Sun designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Sun in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 22 # CA 95054 USA or visit www.sun.com if you need additional information or 23 # have any questions. 24 # 25 26 # Makefile wrapper around Ant build.xml file 27 28 # 29 # On Solaris, the 'make' utility from Sun will not work with these makefiles. 30 # This little rule is only understood by Sun's make, and is harmless 31 # when seen by the GNU make tool. If using Sun's make, this causes the 32 # make command to fail. 33 # 34 SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33 35 36 ifdef QUIET 37 ANT_OPTIONS += -quiet 38 endif 39 40 ifdef VERBOSE 41 ANT_OPTIONS += -verbose 42 endif 43 44 ifeq ($(VARIANT), OPT) 45 ifneq ($(DEBUG_CLASSFILES), true) 46 ANT_OPTIONS += -Djavac.debug=false 47 endif 48 endif 49 50 # Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN) 51 # and the somewhat misnamed CLASS_VERSION (-target NN) 52 ifdef TARGET_CLASS_VERSION 53 ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION) 54 else 55 ifdef JAVAC_TARGET_ARG 56 ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG) 57 endif 58 endif 59 60 ifdef SOURCE_LANGUAGE_VERSION 61 ANT_OPTIONS += -Djavac.source=$(SOURCE_LANGUAGE_VERSION) 62 else 63 ifdef JAVAC_SOURCE_ARG 64 ANT_OPTIONS += -Djavac.source=$(JAVAC_SOURCE_ARG) 65 endif 66 endif 67 68 # Figure out the platform we are using 69 _SYSTEM_UNAME := $(shell uname) 70 _PLATFORM_KIND = unix 71 ifeq ($(_SYSTEM_UNAME), Windows_NT) 72 _PLATFORM_KIND = windows 73 endif 74 ifneq (,$(findstring CYGWIN,$(_SYSTEM_UNAME))) 75 _PLATFORM_KIND = windows 76 endif 77 78 # Where is /java in case we need it 79 ifdef ALT_SLASH_JAVA 80 _SLASHJAVA = $(ALT_SLASH_JAVA) 81 else 82 ifeq ($(_PLATFORM_KIND), windows) 83 _SLASHJAVA=J:/ 84 else 85 _SLASHJAVA=/java 86 endif 87 endif 88 89 # Do we have the drops already downloaded? 90 # Check ALT_DROPS_DIR for a full path first, 91 # before trying to use the devtools path, 92 # either via ALT_JDK_DEVTOOLS_DIR or /java/devtools. 93 ifdef ALT_DROPS_DIR 94 DROPS_DIR = $(ALT_DROPS_DIR) 95 else 96 ifdef ALT_JDK_DEVTOOLS_DIR 97 DROPS_DIR = $(ALT_JDK_DEVTOOLS_DIR)/share/jdk7-drops 98 else 99 DROPS_DIR = $(_SLASHJAVA)/devtools/share/jdk7-drops 100 endif 101 endif 102 103 # Add in path to drops already downloaded 104 ANT_OPTIONS += -Ddrops.dir=$(DROPS_DIR) 105 106 ifdef ALT_OUTPUTDIR 107 OUTPUTDIR = $(ALT_OUTPUTDIR) 108 ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR) 109 else 110 OUTPUTDIR = .. 111 endif 112 113 ifdef ALT_LANGTOOLS_DIST 114 ifdef ALT_BOOTDIR 115 ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) 116 endif 117 ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap 118 else 119 ifdef ALT_JDK_IMPORT_PATH 120 ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH) 121 endif 122 endif 123 124 ifdef ANT_HOME 125 ANT = $(ANT_HOME)/bin/ant 126 ifneq ($(shell test -x $(ANT); echo $$?), 0) 127 $(error "$(ANT) not found; please update ANT_HOME") 128 endif 129 else 130 ANT = ant 131 ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0) 132 $(error "\"ant\" not found; please set ANT_HOME or put \"ant\" on your PATH") 133 endif 134 endif 135 136 # Default target and expected 'do everything' target 137 default: all 138 139 # All ant targets of interest 140 ANT_TARGETS = all source drop_included build dist clobber clean sanity 141 142 # Create a make target for each 143 $(ANT_TARGETS): 144 cd .. && $(ANT_JAVA_HOME) $(ANT) -version 145 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@ 146 147 # Help target 148 define helpenvline 149 @echo " $1";echo " $2" 150 endef 151 help: 152 @echo "----------------------------------------------------------" 153 @echo " " 154 @echo "Help information for this Makefile:" 155 @echo " " 156 @echo " Targets (see ant project information for descriptions):" 157 @echo " $(ANT_TARGETS)" 158 @echo " " 159 @echo " Environment or command line variables (all optional):" 160 $(call helpenvline, ALT_BOOTDIR,\ 161 "JAVA_HOME to use when running ant") 162 $(call helpenvline, ALT_LANGTOOLS_DIST,\ 163 "path to langtools repository dist directory") 164 $(call helpenvline, ALT_OUTPUTDIR,\ 165 "path to root of output") 166 $(call helpenvline, DEBUG_CLASSFILES,\ 167 "if set makes sure ant property javac.debug is true") 168 $(call helpenvline, JAVAC_SOURCE_ARG,\ 169 "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source") 170 $(call helpenvline, JAVAC_TARGET_ARG,\ 171 "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target") 172 $(call helpenvline, SOURCE_LANGUAGE_VERSION,\ 173 "if set uses this to set ant property javac.source") 174 $(call helpenvline, QUIET,\ 175 "if set will pass -quiet to ant") 176 $(call helpenvline, TARGET_CLASS_VERSION,\ 177 "JAVA_HOME to use when running ant") 178 $(call helpenvline, VARIANT,\ 179 "if set to OPT means optimized build will set javac.debug to false") 180 $(call helpenvline, VERBOSE,\ 181 "if set will pass -verbose to ant") 182 @echo " " 183 @echo "----------------------------------------------------------" 184 @echo " " 185 @echo "Ant project file help information:" 186 @echo " " 187 @$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p 188 @echo " " 189 @echo "----------------------------------------------------------" 190 191 # Targets for Sun's internal JPRT build system 192 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip 193 jprt_build_product jprt_build_debug jprt_build_fastdebug: all 194 $(RM) $(JPRT_ARCHIVE_BUNDLE) 195 ( cd $(OUTPUTDIR)/dist && \ 196 zip -q -r $(JPRT_ARCHIVE_BUNDLE) . ) 197 198 # Declare these phony (not filenames) 199 .PHONY: $(ANT_TARGETS) \ 200 jprt_build_product jprt_build_debug jprt_build_fastdebug