1 #
   2 # Copyright (c) 2010, 2013, 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 #
  25 
  26 # Makefile for nashorn: wrapper around Ant build.xml file
  27 
  28 #
  29 # On Solaris, the standard 'make' utility will not work with these makefiles.
  30 #    This little rule is only understood by Solaris make, and is harmless
  31 #    when seen by the GNU make tool. If using Solaris 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 #
  37 # Minimal platform defs
  38 # Need FullPath because we can't rely on gnumake abspath, until we use v3.81
  39 #
  40 
  41 SYSTEM_UNAME := $(shell uname)
  42 
  43 # Where is unwanted output to be delivered?
  44 # On Windows, MKS uses the special file "NUL", cygwin uses the customary unix file.
  45 ifeq ($(SYSTEM_UNAME), Windows_NT)
  46 DEV_NULL = NUL
  47 else
  48 DEV_NULL = /dev/null 
  49 endif
  50 
  51 ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
  52 USING_CYGWIN = true
  53 endif
  54 
  55 ifdef USING_CYGWIN
  56 define FullPath
  57 $(shell cygpath -a -s -m $1 2> $(DEV_NULL))
  58 endef
  59 else
  60 define FullPath
  61 $(shell cd $1 2> $(DEV_NULL) && pwd)
  62 endef
  63 endif
  64 
  65 #
  66 # Makefile args
  67 #
  68 
  69 ifdef QUIET
  70   ANT_OPTIONS += -quiet
  71 endif
  72 
  73 ifdef VERBOSE
  74   ANT_OPTIONS += -verbose -debug
  75 endif
  76 
  77 ifdef JDK_VERSION
  78   ANT_OPTIONS += -Djdk.version=$(JDK_VERSION)
  79 endif 
  80 
  81 ifdef FULL_VERSION
  82   ANT_OPTIONS += -Dfull.version='$(FULL_VERSION)' # will contain spaces
  83 endif 
  84 
  85 ifdef MILESTONE
  86 ifneq ($(MILESTONE),fcs)
  87   ANT_OPTIONS += -Dmilestone=$(MILESTONE)
  88 else
  89   ANT_OPTIONS += -Drelease=$(JDK_VERSION)
  90 endif
  91 endif
  92 
  93 ifdef BUILD_NUMBER
  94   ANT_OPTIONS += -Dbuild.number=$(BUILD_NUMBER)
  95 else
  96   ifdef JDK_BUILD_NUMBER
  97     ANT_OPTIONS += -Dbuild.number=$(JDK_BUILD_NUMBER)
  98   endif
  99 endif
 100 
 101 ifeq ($(VARIANT), DBG)
 102   ANT_OPTIONS += -Djavac.debug=true
 103 else
 104   ifeq ($(VARIANT), OPT)
 105     ANT_OPTIONS += -Djavac.debug=false
 106   endif
 107 endif
 108 
 109 ifeq ($(DEBUG_CLASSFILES), true)
 110   ANT_OPTIONS += -Djavac.debug=true
 111   ANT_OPTIONS += -Ddebug.classfiles=true
 112 endif
 113 
 114 # Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN)
 115 # and the somewhat misnamed CLASS_VERSION (-target NN)
 116 ifdef TARGET_CLASS_VERSION
 117   ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION)
 118 else
 119   ifdef JAVAC_TARGET_ARG 
 120     ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG)
 121   endif
 122 endif 
 123 
 124 ifdef SOURCE_LANGUAGE_VERSION
 125   ANT_OPTIONS += -Djavac.source=$(SOURCE_LANGUAGE_VERSION)
 126 else
 127   ifdef JAVAC_SOURCE_ARG 
 128     ANT_OPTIONS += -Djavac.source=$(JAVAC_SOURCE_ARG)
 129   endif
 130 endif 
 131 
 132 ifdef ALT_BOOTDIR
 133   ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR)
 134   ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
 135 endif
 136 
 137 # To facilitate bootstrapping, much of langtools can be compiled with (just)
 138 # a boot JDK. However, some source files need to be compiled against 
 139 # new JDK API. In a bootstrap build, an import JDK may not be available,
 140 # so build.xml can also build against the source files in a jdk repo,
 141 # in which case it will automatically generate stub files for the new JDK API.
 142 ifdef JDK_TOPDIR
 143   ANT_OPTIONS += -Dimport.jdk=$(JDK_TOPDIR)
 144 else 
 145   ifdef ALT_JDK_TOPDIR
 146     ANT_OPTIONS += -Dimport.jdk=$(ALT_JDK_TOPDIR)
 147   else 
 148     ifdef ALT_JDK_IMPORT_PATH
 149       ANT_OPTIONS += -Dimport.jdk=$(ALT_JDK_IMPORT_PATH)
 150     endif
 151   endif
 152 endif
 153 
 154 ifdef ALT_OUTPUTDIR
 155   OUTPUTDIR = $(ALT_OUTPUTDIR)
 156   ANT_OPTIONS += -Dbuild.dir=$(ALT_OUTPUTDIR)/build
 157   ANT_OPTIONS += -Ddist.dir=$(ALT_OUTPUTDIR)/dist
 158 else
 159   OUTPUTDIR = ..
 160 endif
 161 #ABS_OUTPUTDIR = $(abspath $(OUTPUTDIR))
 162 ABS_OUTPUTDIR = $(call FullPath,$(OUTPUTDIR))
 163 
 164 ANT_TMPDIR = $(ABS_OUTPUTDIR)/build/ant-tmp
 165 ANT_OPTS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)'
 166 
 167 ifdef FINDBUGS_HOME
 168   ANT_OPTIONS += -Dfindbugs.home=$(FINDBUGS_HOME)
 169 endif
 170 
 171 ifdef ANT_HOME
 172   ANT = $(ANT_HOME)/bin/ant
 173   ifneq ($(shell test -x $(ANT) && echo OK), OK)
 174     $(error $(ANT) not found -- please update ANT_HOME)
 175   endif
 176 else
 177   ANT = ant
 178   ifneq ($(shell test -x "`which $(ANT)`" && echo OK), OK)
 179     $(error 'ant' not found -- please set ANT_HOME or put 'ant' on your PATH)
 180   endif
 181 endif
 182 
 183 # Default target and expected 'do everything' target
 184 # comments docs to avoid too many ASM warnings
 185 # all: test docs
 186 
 187 all: test
 188 
 189 # Standard make clobber target
 190 clobber: clean
 191 
 192 # All ant targets of interest
 193 ANT_TARGETS = clean externals update-externals jar javadoc shelldoc docs test test262 test262parallel # for now
 194 
 195 # Create diagnostics log (careful, ant 1.8.0 -diagnostics always does an exit 1)
 196 $(OUTPUTDIR)/build/ant-diagnostics.log:
 197         @mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
 198         @$(RM) $@
 199         $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $@ ; \
 200           $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -version >> $@
 201 
 202 # Create a make target for each
 203 $(ANT_TARGETS): $(OUTPUTDIR)/build/ant-diagnostics.log
 204         @ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
 205         $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@
 206 
 207 #-------------------------------------------------------------------
 208 #
 209 # Targets for Oracle's internal JPRT build system
 210 
 211 CD = cd
 212 ZIP = zip
 213 
 214 JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
 215 
 216 jprt_build_product jprt_build_debug jprt_build_fastdebug: all
 217         ( $(CD) $(OUTPUTDIR) && \
 218           $(ZIP) -q -r $(JPRT_ARCHIVE_BUNDLE) build dist )
 219 
 220 #-------------------------------------------------------------------
 221 
 222 # Declare these phony (not filenames)
 223 .PHONY: $(ANT_TARGETS) all clobber \
 224         jprt_build_product jprt_build_debug jprt_build_fastdebug
--- EOF ---