make/Makefile

Wed, 11 Nov 2009 11:19:10 -0800

author
ohair
date
Wed, 11 Nov 2009 11:19:10 -0800
changeset 95
4023edcd8433
parent 92
600bc3d048be
child 116
4ac192952d75
permissions
-rw-r--r--

6900341: jaxp/jaxws ant scripts using ant runtime in classpath, needs to be explicit
Reviewed-by: tbell

     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 #
    26 # Makefile wrapper around Ant build.xml file
    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
    36 ifdef QUIET
    37   ANT_OPTIONS += -quiet
    38 endif
    40 ifdef VERBOSE
    41   ANT_OPTIONS += -verbose
    42 endif
    44 ifeq ($(VARIANT), OPT)
    45   ifneq ($(DEBUG_CLASSFILES), true)
    46     ANT_OPTIONS += -Djavac.debug=false
    47   endif
    48 endif
    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
    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 
    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
    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
    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
   103 # Add in path to drops already downloaded
   104 ANT_OPTIONS += -Ddrops.dir=$(DROPS_DIR)
   106 ifdef ALT_OUTPUTDIR
   107   OUTPUTDIR = $(ALT_OUTPUTDIR)
   108   ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR)
   109 else
   110   OUTPUTDIR = ..
   111 endif
   113 ifdef ALT_LANGTOOLS_DIST
   114   ifdef ALT_BOOTDIR
   115     ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
   116     ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR)
   117   endif
   118   ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap
   119 else
   120   ifdef ALT_JDK_IMPORT_PATH
   121     ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH)
   122     ANT_OPTIONS += -Djdk.home=$(ALT_JDK_IMPORT_PATH)
   123   endif
   124 endif
   126 ifdef ANT_HOME
   127   ANT = $(ANT_HOME)/bin/ant
   128   ifneq ($(shell test -x $(ANT); echo $$?), 0)
   129     $(error "$(ANT) not found; please update ANT_HOME")
   130   endif
   131 else
   132   ANT = ant
   133   ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0)
   134     $(error "\"ant\" not found; please set ANT_HOME or put \"ant\" on your PATH")
   135   endif
   136 endif
   138 # Default target and expected 'do everything' target
   139 default: all
   141 # All ant targets of interest
   142 ANT_TARGETS = all source drop_included build dist clobber clean sanity
   144 # Create a make target for each
   145 $(ANT_TARGETS):
   146 	cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) -version
   147 	cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@
   149 # Help target
   150 define helpenvline
   151 @echo "    $1";echo "        $2"
   152 endef
   153 help:
   154 	@echo "----------------------------------------------------------"
   155 	@echo " "
   156 	@echo "Help information for this Makefile:"
   157 	@echo " "
   158 	@echo "  Targets (see ant project information for descriptions):"
   159 	@echo "    $(ANT_TARGETS)"
   160 	@echo " "
   161 	@echo "  Environment or command line variables (all optional):"
   162 	$(call helpenvline, ALT_BOOTDIR,\
   163 	       "JAVA_HOME to use when running ant")
   164 	$(call helpenvline, ALT_LANGTOOLS_DIST,\
   165 	       "path to langtools repository dist directory")
   166 	$(call helpenvline, ALT_OUTPUTDIR,\
   167 	       "path to root of output")
   168 	$(call helpenvline, DEBUG_CLASSFILES,\
   169 	       "if set makes sure ant property javac.debug is true")
   170 	$(call helpenvline, JAVAC_SOURCE_ARG,\
   171 	       "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source")
   172 	$(call helpenvline, JAVAC_TARGET_ARG,\
   173 	       "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target")
   174 	$(call helpenvline, SOURCE_LANGUAGE_VERSION,\
   175 	       "if set uses this to set ant property javac.source")
   176 	$(call helpenvline, QUIET,\
   177 	       "if set will pass -quiet to ant")
   178 	$(call helpenvline, TARGET_CLASS_VERSION,\
   179 	       "JAVA_HOME to use when running ant")
   180 	$(call helpenvline, VARIANT,\
   181 	       "if set to OPT means optimized build will set javac.debug to false")
   182 	$(call helpenvline, VERBOSE,\
   183 	       "if set will pass -verbose to ant")
   184 	@echo " "
   185 	@echo "----------------------------------------------------------"
   186 	@echo " "
   187 	@echo "Ant project file help information:"
   188 	@echo " "
   189 	@$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p
   190 	@echo " "
   191 	@echo "----------------------------------------------------------"
   193 # Targets for Sun's internal JPRT build system
   194 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip
   195 jprt_build_product jprt_build_debug jprt_build_fastdebug: all
   196 	$(RM) $(JPRT_ARCHIVE_BUNDLE)
   197 	( cd $(OUTPUTDIR)/dist && \
   198 	   zip -q -r $(JPRT_ARCHIVE_BUNDLE) . )
   200 # Declare these phony (not filenames)
   201 .PHONY: $(ANT_TARGETS) \
   202 	jprt_build_product jprt_build_debug jprt_build_fastdebug

mercurial