Makefile revision 5023
2N/A# Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. 2N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2N/A# This code is free software; you can redistribute it and/or modify it 2N/A# under the terms of the GNU General Public License version 2 only, as 2N/A# published by the Free Software Foundation. Oracle designates this 2N/A# particular file as subject to the "Classpath" exception as provided 2N/A# by Oracle in the LICENSE file that accompanied this code. 2N/A# This code is distributed in the hope that it will be useful, but WITHOUT 2N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 2N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 2N/A# version 2 for more details (a copy is included in the LICENSE file that 2N/A# accompanied this code). 2N/A# You should have received a copy of the GNU General Public License version 2N/A# 2 along with this work; if not, write to the Free Software Foundation, 2N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2N/A# Makefile for building and packaging all of the JDK and the JRE. See 2N/A# also included files. 2N/A# Make sure we are clear what the default target is Makefile for the main JDK workspace. \n\ Default behavior is to use the BOOTDIR javac to bootstrap the build and \n\ import in pre-built components like the VM from the JDK_IMPORT_PATH. \n\ --- Common Targets --- \n\ all -- build the core JDK (default target) \n\ help -- Print out help information \n\ check -- Check make variable values for correctness \n\ sanity -- Perform detailed sanity checks on system and settings \n\ openjdk -- synonym for 'OPENJDK=true all' \n\ fastdebug -- build the core JDK in 'fastdebug' mode (-g -O) \n\ debug -- build the core JDK in 'debug' mode (-g) \n\ clean -- remove all built and imported files \n\ clobber -- same as clean \n\ docs -- run javadoc to generate the JDK documentation \n\ images -- build the jdk and jre image directories \n\ import -- copy in the pre-built components (e.g. VM) \n\ import_product -- copy in the product components \n\ import_fastdebug -- copy in the fastdebug components \n\ import_debug -- copy in the debug components \n\ create_links -- create softlinks in Solaris 32bit build to 64bit dirs \n\ # Variable help (only common ones used by this workspace) @
$(ECHO) "--- Common Variables ---"# One line descriptions for the variables # Make variables to print out (description and value) # Make variables that should refer to directories that exist # Make variables that should refer to files that exist # Some are windows specific # For pattern rules below, so all are treated the same # Complete variable check # Pattern rule for printing out a variable # Pattern rule for checking to see if a variable with a directory exists @
if [ ! -d
$($*) ] ;
then \
$(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
# Pattern rule for checking to see if a variable with a file exists @
if [ ! -f
$($*) ] ;
then \
$(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
- All builds use same output directory unless overridden with \n\ \t ALT_OUTPUTDIR=<dir>, changing from product to fastdebug you may want \n\ \t to use the clean target first. \n\ - LANGTOOLS_DIST must refer to a langtools dist area, used to build. \n\ - CORBA_DIST must refer to a corba dist area. \n\ - JAXP_DIST must refer to a jaxp dist area. \n\ - JAXWS_DIST must refer to a jaxws dist area. \n\ - JDK_IMPORT_PATH must refer to a compatible build, not all past promoted \n\ \t builds or previous release JDK builds will work. \n\ - The 'debug' target and 'import_debug' only works when a debug promoted \n\ \t build is available, and they currently are not. \n\ - The fastest builds have been when the workspace and the BOOTDIR are on \n\ # Just in case anyone uses this old name, same as 'build' # Special debug rules (You may also want to set ALT_OUTPUTDIR) # Rules to re-import VM and other JDK files # Alternate classes implementation # Release engineering targets. # this should be the last rule in this file: # Developer rule that links 32 and 64 bit builds on Solaris by creating # softlinks in the 32bit outputdir to the 64bit outputdir. echo "Creating link for $$sd"; \
$(ECHO) "Build both 32 and 64 bit versions first"; \
@
$(ECHO) "#################################################" || $(ECHO) "No TEST STATS seen in log" ) @
$(ECHO) "#################################################" $(ECHO) "ERROR: Test failure count: `$(CAT) $< | $(WC) -l`"; \
$(ECHO) "Success! No failures detected"; \
# Get failure list from log @
( $(EGREP) '^FAILED:' $< || $(ECHO) "" ) |
$(NAWK) 'length>0' > $@
# Get log file of all tests run # Phonies to avoid accidents.