10
+ − 1
#
+ − 2
# Copyright 2007 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
#
+ − 25
+ − 26
# Makefile for langtools: wrapper around Ant build.xml file
+ − 27
+ − 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
+ − 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
ifeq ($(SYSTEM_UNAME), Windows_NT)
+ − 44
DEV_NULL = NUL
+ − 45
else
+ − 46
ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
+ − 47
DEV_NULL = NUL
+ − 48
USING_CYGWIN = true
+ − 49
else
+ − 50
DEV_NULL = /dev/null
+ − 51
endif
+ − 52
endif
+ − 53
+ − 54
ifdef USING_CYGWIN
+ − 55
define FullPath
+ − 56
$(shell cygpath -a -s -m $1 2> $(DEV_NULL))
+ − 57
endef
+ − 58
else
+ − 59
define FullPath
+ − 60
$(shell cd $1 2> $(DEV_NULL) && pwd)
+ − 61
endef
+ − 62
endif
+ − 63
+ − 64
#
+ − 65
# Makefile args
+ − 66
#
+ − 67
+ − 68
ifdef QUIET
+ − 69
ANT_OPTIONS += -quiet
+ − 70
endif
+ − 71
+ − 72
ifdef VERBOSE
+ − 73
ANT_OPTIONS += -verbose -diagnostics
+ − 74
endif
+ − 75
+ − 76
ifdef JDK_VERSION
+ − 77
ANT_OPTIONS += -Djdk.version=$(JDK_VERSION)
+ − 78
endif
+ − 79
+ − 80
ifdef FULL_VERSION
+ − 81
ANT_OPTIONS += -Dfull.version='$(FULL_VERSION)' # will contain spaces
+ − 82
endif
+ − 83
+ − 84
ifdef MILESTONE
+ − 85
ANT_OPTIONS += -Dmilestone=$(MILESTONE)
+ − 86
endif
+ − 87
+ − 88
ifdef BUILD_NUMBER
+ − 89
ANT_OPTIONS += -Dbuild.number=$(BUILD_NUMBER)
+ − 90
else
+ − 91
ifdef JDK_BUILD_NUMBER
+ − 92
ANT_OPTIONS += -Dbuild.number=$(JDK_BUILD_NUMBER)
+ − 93
endif
+ − 94
endif
+ − 95
+ − 96
ifeq ($(VARIANT), DBG)
+ − 97
ANT_OPTIONS += -Djavac.debug=true
+ − 98
else
+ − 99
ifeq ($(VARIANT), OPT)
+ − 100
ANT_OPTIONS += -Djavac.debug=false
+ − 101
endif
+ − 102
endif
+ − 103
+ − 104
# Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN)
+ − 105
# and the somewhat misnamed CLASS_VERSION (-target NN)
+ − 106
ifdef TARGET_CLASS_VERSION
+ − 107
ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION)
+ − 108
else
+ − 109
ifdef JAVAC_TARGET_ARG
+ − 110
ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG)
+ − 111
endif
+ − 112
endif
+ − 113
+ − 114
ifdef ALT_BOOTDIR
+ − 115
ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR)
+ − 116
ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
+ − 117
endif
+ − 118
+ − 119
ifdef ALT_OUTPUTDIR
+ − 120
OUTPUTDIR = $(ALT_OUTPUTDIR)
+ − 121
ANT_OPTIONS += -Dbuild.dir=$(ALT_OUTPUTDIR)/build
+ − 122
ANT_OPTIONS += -Ddist.dir=$(ALT_OUTPUTDIR)/dist
+ − 123
else
+ − 124
OUTPUTDIR = ..
+ − 125
endif
+ − 126
#ABS_OUTPUTDIR = $(abspath $(OUTPUTDIR))
+ − 127
ABS_OUTPUTDIR = $(call FullPath,$(OUTPUTDIR))
+ − 128
+ − 129
ANT_TMPDIR = $(ABS_OUTPUTDIR)/build/ant-tmp
+ − 130
ANT_OPTS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)'
+ − 131
+ − 132
ifdef FINDBUGS_HOME
+ − 133
ANT_OPTIONS += -Dfindbugs.home=$(FINDBUGS_HOME)
+ − 134
endif
+ − 135
+ − 136
ifdef ANT_HOME
+ − 137
ANT = $(ANT_HOME)/bin/ant
+ − 138
ifneq ($(shell test -x $(ANT) && echo OK), OK)
+ − 139
$(error $(ANT) not found -- please update ANT_HOME)
+ − 140
endif
+ − 141
else
+ − 142
ANT = ant
+ − 143
ifneq ($(shell test -x "`which $(ANT)`" && echo OK), OK)
+ − 144
$(error 'ant' not found -- please set ANT_HOME or put 'ant' on your PATH)
+ − 145
endif
+ − 146
endif
+ − 147
+ − 148
# Default target and expected 'do everything' target
+ − 149
all: build
+ − 150
+ − 151
# Standard make clobber target
+ − 152
clobber: clean
+ − 153
+ − 154
# All ant targets of interest
+ − 155
ANT_TARGETS = build clean sanity post-sanity diagnostics # for now
+ − 156
+ − 157
# Create a make target for each
+ − 158
$(ANT_TARGETS):
+ − 159
@ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
+ − 160
$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $(OUTPUTDIR)/build/ant-diagnostics.log
+ − 161
$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@
+ − 162
+ − 163
#-------------------------------------------------------------------
+ − 164
#
+ − 165
# Targets for Sun's internal JPRT build system
+ − 166
+ − 167
CD = cd
+ − 168
ZIP = zip
+ − 169
+ − 170
JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
+ − 171
+ − 172
jprt_build_product jprt_build_debug jprt_build_fastdebug: all
+ − 173
( $(CD) $(OUTPUTDIR) && \
+ − 174
$(ZIP) -q -r $(JPRT_ARCHIVE_BUNDLE) build dist )
+ − 175
+ − 176
#-------------------------------------------------------------------
+ − 177
+ − 178
# Declare these phony (not filenames)
+ − 179
.PHONY: $(ANT_TARGETS) all clobber \
+ − 180
jprt_build_product jprt_build_debug jprt_build_fastdebug