1 # 2 # Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # 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 # If downloads are allowed 69 ifeq ($(ALLOW_DOWNLOADS),true) 70 ANT_OPTIONS += -Dallow.downloads=true 71 endif 72 73 # Figure out the platform we are using 74 _SYSTEM_UNAME := $(shell uname) 75 _PLATFORM_KIND = unix 76 ifeq ($(_SYSTEM_UNAME), Windows_NT) 77 _PLATFORM_KIND = windows 78 endif 79 ifneq (,$(findstring CYGWIN,$(_SYSTEM_UNAME))) 80 _PLATFORM_KIND = windows 81 endif 82 83 # Where is /java in case we need it 84 ifdef ALT_SLASH_JAVA 85 _SLASHJAVA = $(ALT_SLASH_JAVA) 86 else 87 ifeq ($(_PLATFORM_KIND), windows) 88 _SLASHJAVA=J:/ 89 else 90 _SLASHJAVA=/java 91 endif 92 endif 93 94 # Do we have the drops already downloaded? 95 # Check ALT_DROPS_DIR for a full path first, 96 # before trying to use the devtools path, 97 # either via ALT_JDK_DEVTOOLS_DIR or /java/devtools. 98 ifdef ALT_DROPS_DIR 99 DROPS_DIR = $(ALT_DROPS_DIR) 100 else 101 ifdef ALT_JDK_DEVTOOLS_DIR 102 DROPS_DIR = $(ALT_JDK_DEVTOOLS_DIR)/share/jdk7-drops 103 else 104 DROPS_DIR = $(_SLASHJAVA)/devtools/share/jdk7-drops 105 endif 106 endif 107 108 # Add in path to drops already downloaded 109 ANT_OPTIONS += -Ddrops.dir=$(DROPS_DIR) 110 111 ifdef ALT_OUTPUTDIR 112 OUTPUTDIR = $(ALT_OUTPUTDIR) 113 ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR) 114 else 115 OUTPUTDIR = .. 116 endif 117 118 ifdef ALT_LANGTOOLS_DIST 119 ifdef ALT_BOOTDIR 120 ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) 121 ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR) 122 endif 123 ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap 124 else 125 ifdef ALT_JDK_IMPORT_PATH 126 ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH) 127 ANT_OPTIONS += -Djdk.home=$(ALT_JDK_IMPORT_PATH) 128 endif 129 endif 130 131 ifdef ANT_HOME 132 ANT = $(ANT_HOME)/bin/ant 133 ifneq ($(shell test -x $(ANT); echo $$?), 0) 134 $(error "$(ANT) not found; please update ANT_HOME") 135 endif 136 else 137 ANT = ant 138 ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0) 139 $(error "'ant' not found; please set ANT_HOME or put 'ant' on your PATH") 140 endif 141 endif 142 143 # Default target and expected 'do everything' target 144 default: all 145 146 # All ant targets of interest 147 ANT_TARGETS = all source drop_included build dist clobber clean sanity 148 149 # Create a make target for each 150 $(ANT_TARGETS): 151 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) -version 152 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@ 153 154 # Help target 155 define helpenvline 156 @echo " $1";echo " $2" 157 endef 158 help: 159 @echo "----------------------------------------------------------" 160 @echo " " 161 @echo "Help information for this Makefile:" 162 @echo " " 163 @echo " Targets (see ant project information for descriptions):" 164 @echo " $(ANT_TARGETS)" 165 @echo " " 166 @echo " Environment or command line variables (all optional):" 167 $(call helpenvline, ALT_DROPS_DIR,\ 168 "Directory that contains the drop source bundles i.e. drops.dir") 169 $(call helpenvline, ALT_BOOTDIR,\ 170 "JAVA_HOME to use when running ant") 171 $(call helpenvline, ALT_LANGTOOLS_DIST,\ 172 "path to langtools repository dist directory") 173 $(call helpenvline, ALT_OUTPUTDIR,\ 174 "path to root of output") 175 $(call helpenvline, DEBUG_CLASSFILES,\ 176 "if set makes sure ant property javac.debug is true") 177 $(call helpenvline, JAVAC_SOURCE_ARG,\ 178 "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source") 179 $(call helpenvline, JAVAC_TARGET_ARG,\ 180 "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target") 181 $(call helpenvline, SOURCE_LANGUAGE_VERSION,\ 182 "if set uses this to set ant property javac.source") 183 $(call helpenvline, QUIET,\ 184 "if set will pass -quiet to ant") 185 $(call helpenvline, TARGET_CLASS_VERSION,\ 186 "JAVA_HOME to use when running ant") 187 $(call helpenvline, VARIANT,\ 188 "if set to OPT means optimized build will set javac.debug to false") 189 $(call helpenvline, VERBOSE,\ 190 "if set will pass -verbose to ant") 191 @echo " " 192 @echo "----------------------------------------------------------" 193 @echo " " 194 @echo "Ant project file help information:" 195 @echo " " 196 @$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p 197 @echo " " 198 @echo "----------------------------------------------------------" 199 200 # Targets for Sun's internal JPRT build system 201 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip 202 jprt_build_product jprt_build_debug jprt_build_fastdebug: all 203 $(RM) $(JPRT_ARCHIVE_BUNDLE) 204 ( cd $(OUTPUTDIR)/dist && \ 205 zip -q -r $(JPRT_ARCHIVE_BUNDLE) . ) 206 207 # Declare these phony (not filenames) 208 .PHONY: $(ANT_TARGETS) \ 209 jprt_build_product jprt_build_debug jprt_build_fastdebug