Makefile revision 276
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
1fa26403d7679235a30fbf6289f68fed5872df30Mark Andrews# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# This code is free software; you can redistribute it and/or modify it
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# under the terms of the GNU General Public License version 2 only, as
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# published by the Free Software Foundation. Oracle designates this
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# particular file as subject to the "Classpath" exception as provided
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# by Oracle in the LICENSE file that accompanied this code.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# This code is distributed in the hope that it will be useful, but WITHOUT
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# version 2 for more details (a copy is included in the LICENSE file that
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# accompanied this code).
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# You should have received a copy of the GNU General Public License version
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# 2 along with this work; if not, write to the Free Software Foundation,
af5073d03288a53b646ec3b807ac25ced64d7879Mark Andrews# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
af5073d03288a53b646ec3b807ac25ced64d7879Mark Andrews# or visit www.oracle.com if you need additional information or have any
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Openjdk sources (only used if SKIP_OPENJDK_BUILD!=true)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews if [ -r $(OPENJDK_SOURCETREE)/Makefile ]; then \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# For start and finish echo lines
91216cff91b34c9ff6e846dc23f248219cafe660Andreas GustafssonTITLE_TEXT = Control $(PLATFORM) $(ARCH) $(RELEASE)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsSTART_ECHO = echo "$(TITLE_TEXT) $@ build started: $(DATE_STAMP)"
91216cff91b34c9ff6e846dc23f248219cafe660Andreas GustafssonFINISH_ECHO = echo "$(TITLE_TEXT) $@ build finished: $(DATE_STAMP)"
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# What "all" means
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Everything for a full product build
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Generic build of basic repo series
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington generic_build_repo_series:: $(JDK_JAVA_EXE)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# The debug build, fastdebug or debug. Needs special handling.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Note that debug builds do NOT do INSTALL steps, but must be done
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# after the product build and before the INSTALL step of the product build.
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# DEBUG_NAME is fastdebug or debug
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# The resulting j2sdk-image is used by the install makefiles to create a
09344332cf7840e7e219215128fd52ea4c3d6942Mark Andrews# debug install bundle jdk-*-debug-** bundle (tar or zip)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# which will install in the debug or fastdebug subdirectory of the
fd42a013f17611b34cd49cc0abee0a6b0d251a6bMark Andrews# normal product install area.
09344332cf7840e7e219215128fd52ea4c3d6942Mark Andrews# The install process needs to know what the DEBUG_NAME is, so
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# look for INSTALL_DEBUG_NAME in the install rules.
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# NOTE: On windows, do not use $(ABS_BOOTDIR_OUTPUTDIR)-$(DEBUG_NAME).
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Due to the use of short paths in $(ABS_OUTPUTDIR), this may
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# not be the same location.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Location of fresh bootdir output
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsFRESH_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/j2sdk-image
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsFRESH_DEBUG_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-$(DEBUG_NAME)/j2sdk-image
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Create boot image?
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews ifneq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64)
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Create the bootdir to use in the build
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington product_build:: create_fresh_product_bootdir
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fastdebug_build:: create_fresh_fastdebug_bootdir
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Define variables to be used now for the boot jdk
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Use the supplied ALT_BOOTDIR as the boot
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# NOTE: On windows, do not use $(ABS_OUTPUTDIR)-$(DEBUG_NAME).
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Due to the use of short paths in $(ABS_OUTPUTDIR), this may
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# not be the same location.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ALT_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-$(DEBUG_NAME) \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(MAKE) DEBUG_NAME=debug generic_debug_build
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews $(MAKE) DEBUG_NAME=fastdebug generic_debug_build
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Build final image
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# Check on whether we really can build the openjdk, need source etc.
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington @$(ECHO) "================================================="
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington @if [ ! -r $(OPENJDK_BUILDDIR)/Makefile ] ; then \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews $(ECHO) "ERROR: No openjdk source tree available at: $(OPENJDK_BUILDDIR)"; \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(ECHO) "OpenJDK will be built after JDK is built"; \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(ECHO) " OPENJDK_BUILDDIR=$(OPENJDK_BUILDDIR)"; \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "================================================="
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# If we have bundle rules, we have a chance here to do a complete cycle
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# build, of production and open build.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# FIXUP: We should create the openjdk source bundle and build that?
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# But how do we reliable create or get at a formal openjdk source tree?
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# The one we have needs to be trimmed of built bits and closed dirs.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# The repositories might not be available.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# The openjdk source bundle is probably not available.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington = openjdk-$(JDK_MINOR_VERSION)-$(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsOPENJDK_BUILD_BINARY_ZIP=$(ABS_BIN_BUNDLEDIR)/$(OPENJDK_BUILD_NAME).zip
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonifeq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64)
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "================================================="
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) " Using: ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR)"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "================================================="
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "================================================="
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) " Binary Bundle: $(OPENJDK_BUILD_BINARY_ZIP)"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "================================================="
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(RM) -r $(OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-debug/*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(RM) -r $(OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-fastdebug/*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington -($(RMDIR) -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1; $(TRUE))
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Quick jdk verification build
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) SKIP_FASTDEBUG_BUILD=true BUILD_HOTSPOT=false all
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Quick jdk verification fastdebug build
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) DEBUG_NAME=fastdebug BUILD_HOTSPOT=false BUILD_DEPLOY=false \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews BUILD_INSTALL=false BUILD_SPONSORS=false generic_debug_build
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Quick deploy verification fastdebug build
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Product build (skip debug builds)
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Check target
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Help target
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewshelp: intro_help target_help variable_help notes_help examples_help
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Intro help message
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsMakefile for the JDK builds (all the JDK). \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Target help
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews--- Common Targets --- \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsall -- build the core JDK (default target) \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewshelp -- Print out help information \n\
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtoncheck -- Check make variable values for correctness \n\
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonsanity -- Perform detailed sanity checks on system and settings \n\
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonfastdebug_build -- build the core JDK in 'fastdebug' mode (-g -O) \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsdebug_build -- build the core JDK in 'debug' mode (-g) \n\
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsclean -- remove all built and imported files \n\
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonclobber -- same as clean \n\
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Variable help (only common ones used by this Makefile)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsvariable_help: variable_help_intro variable_list variable_help_end
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# One line descriptions for the variables
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsPARALLEL_COMPILE_JOBS.desc = Solaris/Linux parallel compile run count
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsSLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsJDK_IMPORT_PATH.desc = JDK used to import components of the build
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsCACERTS_FILE.desc = Location of certificates file
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsDEVTOOLS_PATH.desc = Directory containing zip and gnumake
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsCUPS_HEADERS_PATH.desc = Include directory location for CUPS header files
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsMSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Make variables to print out (description and value)
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Make variables that should refer to directories that exist
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews# Make variables that should refer to files that exist
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews# Some are windows specific
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# For pattern rules below, so all are treated the same
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsDO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsDO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark AndrewsDO_CHECKFIL_LIST=$(VARIABLE_CHECKFIL_LIST:%=%.checkfil)
ca9a8f6d0b0f2a400a96f868193471510364336fMark Andrews# Complete variable check
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsvariable_check: $(DO_CHECKDIR_LIST) $(DO_CHECKFIL_LIST)
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsvariable_list: $(DO_PRINTVAL_LIST) variable_check
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Pattern rule for printing out a variable
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Pattern rule for checking to see if a variable with a directory exists
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews @if [ ! -d $($*) ] ; then \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Pattern rule for checking to see if a variable with a file exists
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews @if [ ! -f $($*) ] ; then \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Misc notes on help
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews--- Notes --- \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews- All builds use same output directory unless overridden with \n\
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington \t ALT_OUTPUTDIR=<dir>, changing from product to fastdebug you may want \n\
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington \t to use the clean target first. \n\
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews \t builds or previous release JDK builds will work. \n\
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington- The fastest builds have been when the sources and the BOOTDIR are on \n\
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington \t local disk. \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews--- Examples --- \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) ALT_OUTPUTDIR=/tmp/foobar fastdebug_build \n\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk1.6.0 \n\
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Source bundling
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# rule to test
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington################################################################
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(RM) $(OUTPUTDIR)/test_failures.txt $(OUTPUTDIR)/test_log.txt
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtontest_summary: $(OUTPUTDIR)/test_failures.txt
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "#################################################"
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews @( $(EGREP) '^TEST STATS:' $(OUTPUTDIR)/test_log.txt \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews @$(ECHO) "For complete details see: $(OUTPUTDIR)/test_log.txt"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington @$(ECHO) "#################################################"
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews @if [ -s $< ] ; then \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $(ECHO) "ERROR: Test failure count: `$(CAT) $< | $(WC) -l`"; \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Get failure list from log
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews$(OUTPUTDIR)/test_failures.txt: $(OUTPUTDIR)/test_log.txt
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews @( $(EGREP) '^FAILED:' $< || $(ECHO) "" ) | $(NAWK) 'length>0' > $@
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# Get log file of all tests run
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson if [ -d "$(ABS_OUTPUTDIR)/j2sdk-image" ] ; then \
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson elif [ -d "$(ABS_OUTPUTDIR)/bin" ] ; then \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews elif [ "$(PRODUCT_HOME)" != "" -a -d "$(PRODUCT_HOME)/bin" ] ; then \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews $(MAKE) NO_STOPPING=- PRODUCT_HOME=$(JDK_TO_TEST) $(TEST_TARGETS) \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# JPRT rule to build
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews################################################################
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews################################################################
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews.PHONY: all test test_run test_start test_summary test_clean \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews# Force target