langtools/make/Makefile
author aph
Wed, 06 May 2009 18:04:08 +0100
changeset 2850 307d7719ccb7
parent 2849 5535b1718db1
child 2988 094272984b53
permissions -rw-r--r--
6837665: Deal with windows ant problem where commas in -D options do not work Summary: Rewrite to avoid commas in -D options Reviewed-by: ohair
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
06bc494ca11e Initial load
duke
parents:
diff changeset
     1
#
06bc494ca11e Initial load
duke
parents:
diff changeset
     2
# Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
06bc494ca11e Initial load
duke
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
06bc494ca11e Initial load
duke
parents:
diff changeset
     4
#
06bc494ca11e Initial load
duke
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
06bc494ca11e Initial load
duke
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
06bc494ca11e Initial load
duke
parents:
diff changeset
     7
# published by the Free Software Foundation.  Sun designates this
06bc494ca11e Initial load
duke
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
06bc494ca11e Initial load
duke
parents:
diff changeset
     9
# by Sun in the LICENSE file that accompanied this code.
06bc494ca11e Initial load
duke
parents:
diff changeset
    10
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
06bc494ca11e Initial load
duke
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
06bc494ca11e Initial load
duke
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
06bc494ca11e Initial load
duke
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
06bc494ca11e Initial load
duke
parents:
diff changeset
    15
# accompanied this code).
06bc494ca11e Initial load
duke
parents:
diff changeset
    16
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
06bc494ca11e Initial load
duke
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
06bc494ca11e Initial load
duke
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
06bc494ca11e Initial load
duke
parents:
diff changeset
    20
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    21
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
06bc494ca11e Initial load
duke
parents:
diff changeset
    22
# CA 95054 USA or visit www.sun.com if you need additional information or
06bc494ca11e Initial load
duke
parents:
diff changeset
    23
# have any questions.
06bc494ca11e Initial load
duke
parents:
diff changeset
    24
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    25
06bc494ca11e Initial load
duke
parents:
diff changeset
    26
# Makefile for langtools: wrapper around Ant build.xml file
06bc494ca11e Initial load
duke
parents:
diff changeset
    27
06bc494ca11e Initial load
duke
parents:
diff changeset
    28
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    29
# On Solaris, the 'make' utility from Sun will not work with these makefiles.
06bc494ca11e Initial load
duke
parents:
diff changeset
    30
#    This little rule is only understood by Sun's make, and is harmless
06bc494ca11e Initial load
duke
parents:
diff changeset
    31
#    when seen by the GNU make tool. If using Sun's make, this causes the
06bc494ca11e Initial load
duke
parents:
diff changeset
    32
#    make command to fail.
06bc494ca11e Initial load
duke
parents:
diff changeset
    33
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    34
SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
06bc494ca11e Initial load
duke
parents:
diff changeset
    35
06bc494ca11e Initial load
duke
parents:
diff changeset
    36
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    37
# Minimal platform defs
06bc494ca11e Initial load
duke
parents:
diff changeset
    38
# Need FullPath because we can't rely on gnumake abspath, until we use v3.81
06bc494ca11e Initial load
duke
parents:
diff changeset
    39
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    40
06bc494ca11e Initial load
duke
parents:
diff changeset
    41
SYSTEM_UNAME := $(shell uname)
06bc494ca11e Initial load
duke
parents:
diff changeset
    42
06bc494ca11e Initial load
duke
parents:
diff changeset
    43
ifeq ($(SYSTEM_UNAME), Windows_NT)
06bc494ca11e Initial load
duke
parents:
diff changeset
    44
DEV_NULL = NUL
06bc494ca11e Initial load
duke
parents:
diff changeset
    45
else
06bc494ca11e Initial load
duke
parents:
diff changeset
    46
ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
06bc494ca11e Initial load
duke
parents:
diff changeset
    47
DEV_NULL = NUL
06bc494ca11e Initial load
duke
parents:
diff changeset
    48
USING_CYGWIN = true
06bc494ca11e Initial load
duke
parents:
diff changeset
    49
else
06bc494ca11e Initial load
duke
parents:
diff changeset
    50
DEV_NULL = /dev/null
06bc494ca11e Initial load
duke
parents:
diff changeset
    51
endif 
06bc494ca11e Initial load
duke
parents:
diff changeset
    52
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    53
06bc494ca11e Initial load
duke
parents:
diff changeset
    54
ifdef USING_CYGWIN
06bc494ca11e Initial load
duke
parents:
diff changeset
    55
define FullPath
06bc494ca11e Initial load
duke
parents:
diff changeset
    56
$(shell cygpath -a -s -m $1 2> $(DEV_NULL))
06bc494ca11e Initial load
duke
parents:
diff changeset
    57
endef
06bc494ca11e Initial load
duke
parents:
diff changeset
    58
else
06bc494ca11e Initial load
duke
parents:
diff changeset
    59
define FullPath
06bc494ca11e Initial load
duke
parents:
diff changeset
    60
$(shell cd $1 2> $(DEV_NULL) && pwd)
06bc494ca11e Initial load
duke
parents:
diff changeset
    61
endef
06bc494ca11e Initial load
duke
parents:
diff changeset
    62
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    63
06bc494ca11e Initial load
duke
parents:
diff changeset
    64
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    65
# Makefile args
06bc494ca11e Initial load
duke
parents:
diff changeset
    66
#
06bc494ca11e Initial load
duke
parents:
diff changeset
    67
06bc494ca11e Initial load
duke
parents:
diff changeset
    68
ifdef QUIET
06bc494ca11e Initial load
duke
parents:
diff changeset
    69
  ANT_OPTIONS += -quiet
06bc494ca11e Initial load
duke
parents:
diff changeset
    70
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    71
06bc494ca11e Initial load
duke
parents:
diff changeset
    72
ifdef VERBOSE
06bc494ca11e Initial load
duke
parents:
diff changeset
    73
  ANT_OPTIONS += -verbose -diagnostics
06bc494ca11e Initial load
duke
parents:
diff changeset
    74
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    75
06bc494ca11e Initial load
duke
parents:
diff changeset
    76
ifdef JDK_VERSION
06bc494ca11e Initial load
duke
parents:
diff changeset
    77
  ANT_OPTIONS += -Djdk.version=$(JDK_VERSION)
06bc494ca11e Initial load
duke
parents:
diff changeset
    78
endif 
06bc494ca11e Initial load
duke
parents:
diff changeset
    79
06bc494ca11e Initial load
duke
parents:
diff changeset
    80
ifdef FULL_VERSION
06bc494ca11e Initial load
duke
parents:
diff changeset
    81
  ANT_OPTIONS += -Dfull.version='$(FULL_VERSION)' # will contain spaces
06bc494ca11e Initial load
duke
parents:
diff changeset
    82
endif 
06bc494ca11e Initial load
duke
parents:
diff changeset
    83
06bc494ca11e Initial load
duke
parents:
diff changeset
    84
ifdef MILESTONE
1650
980a667baa29 6778493: Fix (langtools) ant build to honor fcs MILESTONE setting
jjg
parents: 10
diff changeset
    85
ifneq ($(MILESTONE),fcs)
10
06bc494ca11e Initial load
duke
parents:
diff changeset
    86
  ANT_OPTIONS += -Dmilestone=$(MILESTONE)
1650
980a667baa29 6778493: Fix (langtools) ant build to honor fcs MILESTONE setting
jjg
parents: 10
diff changeset
    87
else
980a667baa29 6778493: Fix (langtools) ant build to honor fcs MILESTONE setting
jjg
parents: 10
diff changeset
    88
  ANT_OPTIONS += -Drelease=$(JDK_VERSION)
980a667baa29 6778493: Fix (langtools) ant build to honor fcs MILESTONE setting
jjg
parents: 10
diff changeset
    89
endif
10
06bc494ca11e Initial load
duke
parents:
diff changeset
    90
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    91
06bc494ca11e Initial load
duke
parents:
diff changeset
    92
ifdef BUILD_NUMBER
06bc494ca11e Initial load
duke
parents:
diff changeset
    93
  ANT_OPTIONS += -Dbuild.number=$(BUILD_NUMBER)
06bc494ca11e Initial load
duke
parents:
diff changeset
    94
else
06bc494ca11e Initial load
duke
parents:
diff changeset
    95
  ifdef JDK_BUILD_NUMBER
06bc494ca11e Initial load
duke
parents:
diff changeset
    96
    ANT_OPTIONS += -Dbuild.number=$(JDK_BUILD_NUMBER)
06bc494ca11e Initial load
duke
parents:
diff changeset
    97
  endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    98
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
    99
06bc494ca11e Initial load
duke
parents:
diff changeset
   100
ifeq ($(VARIANT), DBG)
06bc494ca11e Initial load
duke
parents:
diff changeset
   101
  ANT_OPTIONS += -Djavac.debug=true
06bc494ca11e Initial load
duke
parents:
diff changeset
   102
else
06bc494ca11e Initial load
duke
parents:
diff changeset
   103
  ifeq ($(VARIANT), OPT)
06bc494ca11e Initial load
duke
parents:
diff changeset
   104
    ANT_OPTIONS += -Djavac.debug=false
06bc494ca11e Initial load
duke
parents:
diff changeset
   105
  endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   106
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   107
2848
98fc22703cbc 6829575: 100028: Debug information is incomplete or missing
aph
parents: 1650
diff changeset
   108
ifeq ($(DEBUG_CLASSFILES), true)
98fc22703cbc 6829575: 100028: Debug information is incomplete or missing
aph
parents: 1650
diff changeset
   109
  ANT_OPTIONS += -Djavac.debug=true
2850
307d7719ccb7 6837665: Deal with windows ant problem where commas in -D options do not work
aph
parents: 2849
diff changeset
   110
  ANT_OPTIONS += -Ddebug.classfiles=true
2848
98fc22703cbc 6829575: 100028: Debug information is incomplete or missing
aph
parents: 1650
diff changeset
   111
endif
98fc22703cbc 6829575: 100028: Debug information is incomplete or missing
aph
parents: 1650
diff changeset
   112
10
06bc494ca11e Initial load
duke
parents:
diff changeset
   113
# Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN)
06bc494ca11e Initial load
duke
parents:
diff changeset
   114
# and the somewhat misnamed CLASS_VERSION (-target NN)
06bc494ca11e Initial load
duke
parents:
diff changeset
   115
ifdef TARGET_CLASS_VERSION
06bc494ca11e Initial load
duke
parents:
diff changeset
   116
  ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION)
06bc494ca11e Initial load
duke
parents:
diff changeset
   117
else
06bc494ca11e Initial load
duke
parents:
diff changeset
   118
  ifdef JAVAC_TARGET_ARG 
06bc494ca11e Initial load
duke
parents:
diff changeset
   119
    ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG)
06bc494ca11e Initial load
duke
parents:
diff changeset
   120
  endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   121
endif 
06bc494ca11e Initial load
duke
parents:
diff changeset
   122
06bc494ca11e Initial load
duke
parents:
diff changeset
   123
ifdef ALT_BOOTDIR
06bc494ca11e Initial load
duke
parents:
diff changeset
   124
  ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR)
06bc494ca11e Initial load
duke
parents:
diff changeset
   125
  ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
06bc494ca11e Initial load
duke
parents:
diff changeset
   126
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   127
06bc494ca11e Initial load
duke
parents:
diff changeset
   128
ifdef ALT_OUTPUTDIR
06bc494ca11e Initial load
duke
parents:
diff changeset
   129
  OUTPUTDIR = $(ALT_OUTPUTDIR)
06bc494ca11e Initial load
duke
parents:
diff changeset
   130
  ANT_OPTIONS += -Dbuild.dir=$(ALT_OUTPUTDIR)/build
06bc494ca11e Initial load
duke
parents:
diff changeset
   131
  ANT_OPTIONS += -Ddist.dir=$(ALT_OUTPUTDIR)/dist
06bc494ca11e Initial load
duke
parents:
diff changeset
   132
else
06bc494ca11e Initial load
duke
parents:
diff changeset
   133
  OUTPUTDIR = ..
06bc494ca11e Initial load
duke
parents:
diff changeset
   134
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   135
#ABS_OUTPUTDIR = $(abspath $(OUTPUTDIR))
06bc494ca11e Initial load
duke
parents:
diff changeset
   136
ABS_OUTPUTDIR = $(call FullPath,$(OUTPUTDIR))
06bc494ca11e Initial load
duke
parents:
diff changeset
   137
06bc494ca11e Initial load
duke
parents:
diff changeset
   138
ANT_TMPDIR = $(ABS_OUTPUTDIR)/build/ant-tmp
06bc494ca11e Initial load
duke
parents:
diff changeset
   139
ANT_OPTS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)'
06bc494ca11e Initial load
duke
parents:
diff changeset
   140
06bc494ca11e Initial load
duke
parents:
diff changeset
   141
ifdef FINDBUGS_HOME
06bc494ca11e Initial load
duke
parents:
diff changeset
   142
  ANT_OPTIONS += -Dfindbugs.home=$(FINDBUGS_HOME)
06bc494ca11e Initial load
duke
parents:
diff changeset
   143
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   144
06bc494ca11e Initial load
duke
parents:
diff changeset
   145
ifdef ANT_HOME
06bc494ca11e Initial load
duke
parents:
diff changeset
   146
  ANT = $(ANT_HOME)/bin/ant
06bc494ca11e Initial load
duke
parents:
diff changeset
   147
  ifneq ($(shell test -x $(ANT) && echo OK), OK)
06bc494ca11e Initial load
duke
parents:
diff changeset
   148
    $(error $(ANT) not found -- please update ANT_HOME)
06bc494ca11e Initial load
duke
parents:
diff changeset
   149
  endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   150
else
06bc494ca11e Initial load
duke
parents:
diff changeset
   151
  ANT = ant
06bc494ca11e Initial load
duke
parents:
diff changeset
   152
  ifneq ($(shell test -x "`which $(ANT)`" && echo OK), OK)
06bc494ca11e Initial load
duke
parents:
diff changeset
   153
    $(error 'ant' not found -- please set ANT_HOME or put 'ant' on your PATH)
06bc494ca11e Initial load
duke
parents:
diff changeset
   154
  endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   155
endif
06bc494ca11e Initial load
duke
parents:
diff changeset
   156
06bc494ca11e Initial load
duke
parents:
diff changeset
   157
# Default target and expected 'do everything' target
06bc494ca11e Initial load
duke
parents:
diff changeset
   158
all: build
06bc494ca11e Initial load
duke
parents:
diff changeset
   159
06bc494ca11e Initial load
duke
parents:
diff changeset
   160
# Standard make clobber target
06bc494ca11e Initial load
duke
parents:
diff changeset
   161
clobber: clean
06bc494ca11e Initial load
duke
parents:
diff changeset
   162
06bc494ca11e Initial load
duke
parents:
diff changeset
   163
# All ant targets of interest
06bc494ca11e Initial load
duke
parents:
diff changeset
   164
ANT_TARGETS = build clean sanity post-sanity diagnostics # for now
06bc494ca11e Initial load
duke
parents:
diff changeset
   165
06bc494ca11e Initial load
duke
parents:
diff changeset
   166
# Create a make target for each
06bc494ca11e Initial load
duke
parents:
diff changeset
   167
$(ANT_TARGETS):
06bc494ca11e Initial load
duke
parents:
diff changeset
   168
	@ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR)
06bc494ca11e Initial load
duke
parents:
diff changeset
   169
	$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $(OUTPUTDIR)/build/ant-diagnostics.log
06bc494ca11e Initial load
duke
parents:
diff changeset
   170
	$(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@
06bc494ca11e Initial load
duke
parents:
diff changeset
   171
06bc494ca11e Initial load
duke
parents:
diff changeset
   172
#-------------------------------------------------------------------
06bc494ca11e Initial load
duke
parents:
diff changeset
   173
#
06bc494ca11e Initial load
duke
parents:
diff changeset
   174
# Targets for Sun's internal JPRT build system
06bc494ca11e Initial load
duke
parents:
diff changeset
   175
06bc494ca11e Initial load
duke
parents:
diff changeset
   176
CD = cd
06bc494ca11e Initial load
duke
parents:
diff changeset
   177
ZIP = zip
06bc494ca11e Initial load
duke
parents:
diff changeset
   178
06bc494ca11e Initial load
duke
parents:
diff changeset
   179
JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
06bc494ca11e Initial load
duke
parents:
diff changeset
   180
06bc494ca11e Initial load
duke
parents:
diff changeset
   181
jprt_build_product jprt_build_debug jprt_build_fastdebug: all
06bc494ca11e Initial load
duke
parents:
diff changeset
   182
	( $(CD) $(OUTPUTDIR) && \
06bc494ca11e Initial load
duke
parents:
diff changeset
   183
	  $(ZIP) -q -r $(JPRT_ARCHIVE_BUNDLE) build dist )
06bc494ca11e Initial load
duke
parents:
diff changeset
   184
06bc494ca11e Initial load
duke
parents:
diff changeset
   185
#-------------------------------------------------------------------
06bc494ca11e Initial load
duke
parents:
diff changeset
   186
06bc494ca11e Initial load
duke
parents:
diff changeset
   187
# Declare these phony (not filenames)
06bc494ca11e Initial load
duke
parents:
diff changeset
   188
.PHONY: $(ANT_TARGETS) all clobber \
06bc494ca11e Initial load
duke
parents:
diff changeset
   189
	jprt_build_product jprt_build_debug jprt_build_fastdebug