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 # Where is /java/devtools in case we need it 90 ifdef ALT_JDK_DEVTOOLS_DIR 91 _DEVTOOLS = $(ALT_JDK_DEVTOOLS_DIR) 92 else 93 _DEVTOOLS = $(_SLASHJAVA)/devtools 94 endif 95 96 # Add in path to devtools 97 ANT_OPTIONS += -Ddevtools=$(_DEVTOOLS) 98 99 ifdef ALT_OUTPUTDIR 100 OUTPUTDIR = $(ALT_OUTPUTDIR) 101 ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR) 102 else 103 OUTPUTDIR = .. 104 endif 105 106 ifdef ALT_LANGTOOLS_DIST 107 ifdef ALT_BOOTDIR 108 ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) 109 endif 110 ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap 111 else 112 ifdef ALT_JDK_IMPORT_PATH 113 ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH) 114 endif 115 endif 116 117 ifdef ANT_HOME 118 ANT = $(ANT_HOME)/bin/ant 119 ifneq ($(shell test -x $(ANT); echo $$?), 0) 120 $(error "$(ANT) not found; please update ANT_HOME") 121 endif 122 else 123 ANT = ant 124 ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0) 125 $(error "\"ant\" not found; please set ANT_HOME or put \"ant\" on your PATH") 126 endif 127 endif 128 129 # Default target and expected 'do everything' target 130 default: all 131 132 # All ant targets of interest 133 ANT_TARGETS = all source drop_included build dist clobber clean sanity 134 135 # Create a make target for each 136 $(ANT_TARGETS): 137 cd .. && $(ANT_JAVA_HOME) $(ANT) -version 138 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@ 139 140 # Help target 141 define helpenvline 142 @echo " $1";echo " $2" 143 endef 144 help: 145 @echo "----------------------------------------------------------" 146 @echo " " 147 @echo "Help information for this Makefile:" 148 @echo " " 149 @echo " Targets (see ant project information for descriptions):" 150 @echo " $(ANT_TARGETS)" 151 @echo " " 152 @echo " Environment or command line variables (all optional):" 153 $(call helpenvline, ALT_BOOTDIR,\ 154 "JAVA_HOME to use when running ant") 155 $(call helpenvline, ALT_LANGTOOLS_DIST,\ 156 "path to langtools repository dist directory") 157 $(call helpenvline, ALT_OUTPUTDIR,\ 158 "path to root of output") 159 $(call helpenvline, DEBUG_CLASSFILES,\ 160 "if set makes sure ant property javac.debug is true") 161 $(call helpenvline, JAVAC_SOURCE_ARG,\ 162 "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source") 163 $(call helpenvline, JAVAC_TARGET_ARG,\ 164 "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target") 165 $(call helpenvline, SOURCE_LANGUAGE_VERSION,\ 166 "if set uses this to set ant property javac.source") 167 $(call helpenvline, QUIET,\ 168 "if set will pass -quiet to ant") 169 $(call helpenvline, TARGET_CLASS_VERSION,\ 170 "JAVA_HOME to use when running ant") 171 $(call helpenvline, VARIANT,\ 172 "if set to OPT means optimized build will set javac.debug to false") 173 $(call helpenvline, VERBOSE,\ 174 "if set will pass -verbose to ant") 175 @echo " " 176 @echo "----------------------------------------------------------" 177 @echo " " 178 @echo "Ant project file help information:" 179 @echo " " 180 @$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p 181 @echo " " 182 @echo "----------------------------------------------------------" 183 184 # Targets for Sun's internal JPRT build system 185 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip 186 jprt_build_product jprt_build_debug jprt_build_fastdebug: all 187 $(RM) $(JPRT_ARCHIVE_BUNDLE) 188 ( cd $(OUTPUTDIR)/dist && \ 189 zip -q -r $(JPRT_ARCHIVE_BUNDLE) . ) 190 191 # Declare these phony (not filenames) 192 .PHONY: $(ANT_TARGETS) \ 193 jprt_build_product jprt_build_debug jprt_build_fastdebug