make/Makefile

Thu, 10 Mar 2011 13:22:51 -0800

author
ohair
date
Thu, 10 Mar 2011 13:22:51 -0800
changeset 188
ba12732b1453
parent 170
86f60e5b3975
child 194
de11bd049d6f
permissions
-rw-r--r--

7025412: make381 issues with quotes in jdk/make/docs/Makefile and other places
Reviewed-by: mchung

     1 #
     2 # Copyright (c) 2007, 2010, 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 #
    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 # If downloads are allowed
    69 ifeq ($(ALLOW_DOWNLOADS),true)
    70   ANT_OPTIONS += -Dallow.downloads=true
    71 endif
    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
    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
    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
   108 # Add in path to drops already downloaded
   109 ANT_OPTIONS += -Ddrops.dir=$(DROPS_DIR)
   111 ifdef ALT_OUTPUTDIR
   112   OUTPUTDIR = $(ALT_OUTPUTDIR)
   113   ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR)
   114 else
   115   OUTPUTDIR = ..
   116 endif
   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
   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
   143 # Default target and expected 'do everything' target
   144 default: all
   146 # All ant targets of interest
   147 ANT_TARGETS = all source drop_included build dist clobber clean sanity
   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) $@
   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 "----------------------------------------------------------"
   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) . )
   207 # Declare these phony (not filenames)
   208 .PHONY: $(ANT_TARGETS) \
   209 	jprt_build_product jprt_build_debug jprt_build_fastdebug

mercurial