|
1 | 1 | #
|
2 |
| -# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. |
| 2 | +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 | 4 | #
|
5 | 5 | # This code is free software; you can redistribute it and/or modify it
|
|
23 | 23 | # questions.
|
24 | 24 | #
|
25 | 25 |
|
26 |
| -# Makefile 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 |
| -ifdef QUIET |
37 |
| - ANT_OPTIONS += -quiet |
38 |
| -endif |
39 |
| - |
40 |
| -ifdef VERBOSE |
41 |
| - ANT_OPTIONS += -verbose |
42 |
| -endif |
43 |
| - |
44 |
| -ifeq ($(VARIANT), OPT) |
45 |
| - ifneq ($(DEBUG_CLASSFILES), true) |
46 |
| - ANT_OPTIONS += -Djavac.debug=false |
47 |
| - endif |
48 |
| -endif |
49 |
| - |
50 |
| -# Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN) |
51 |
| -# and the somewhat misnamed CLASS_VERSION (-target NN) |
52 |
| -ifdef TARGET_CLASS_VERSION |
53 |
| - ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION) |
54 |
| -else |
55 |
| - ifdef JAVAC_TARGET_ARG |
56 |
| - ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG) |
57 |
| - endif |
58 |
| -endif |
59 |
| - |
60 |
| -ifdef SOURCE_LANGUAGE_VERSION |
61 |
| - ANT_OPTIONS += -Djavac.source=$(SOURCE_LANGUAGE_VERSION) |
| 26 | +# Locate this Makefile |
| 27 | +ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))), ) |
| 28 | + makefile_path := $(CURDIR)/$(lastword $(MAKEFILE_LIST)) |
62 | 29 | else
|
63 |
| - ifdef JAVAC_SOURCE_ARG |
64 |
| - ANT_OPTIONS += -Djavac.source=$(JAVAC_SOURCE_ARG) |
65 |
| - endif |
66 |
| -endif |
67 |
| - |
68 |
| -# If downloads are allowed |
69 |
| -ifeq ($(ALLOW_DOWNLOADS),true) |
70 |
| - ANT_OPTIONS += -Dallow.downloads=true |
| 30 | + makefile_path := $(lastword $(MAKEFILE_LIST)) |
71 | 31 | endif
|
| 32 | +repo_dir := $(patsubst %/make/Makefile, %, $(makefile_path)) |
72 | 33 |
|
73 |
| -# Figure out the platform we are using |
74 |
| -_SYSTEM_UNAME := $(shell uname) |
75 |
| -_PLATFORM_KIND = unix |
76 |
| -ifeq ($(_SYSTEM_UNAME), Windows_NT) |
77 |
| - _PLATFORM_KIND = windows |
78 |
| -endif |
79 |
| -ifneq (,$(findstring CYGWIN,$(_SYSTEM_UNAME))) |
80 |
| - _PLATFORM_KIND = windows |
81 |
| -endif |
| 34 | +# What is the name of this subsystem (langtools, corba, etc)? |
| 35 | +subsystem_name := $(notdir $(repo_dir)) |
82 | 36 |
|
83 |
| -# Where is /java in case we need it |
84 |
| -ifdef ALT_SLASH_JAVA |
85 |
| - _SLASHJAVA = $(ALT_SLASH_JAVA) |
| 37 | +# Try to locate top-level makefile |
| 38 | +top_level_makefile := $(repo_dir)/../Makefile |
| 39 | +ifneq ($(wildcard $(top_level_makefile)), ) |
| 40 | + $(info Will run $(subsystem_name) target on top-level Makefile) |
| 41 | + $(info WARNING: This is a non-recommended way of building!) |
| 42 | + $(info ===================================================) |
86 | 43 | else
|
87 |
| - ifeq ($(_PLATFORM_KIND), windows) |
88 |
| - _SLASHJAVA=J:/ |
89 |
| - else |
90 |
| - _SLASHJAVA=/java |
91 |
| - endif |
| 44 | + $(info Cannot locate top-level Makefile. Is this repo not checked out as part of a complete forest?) |
| 45 | + $(error Build from top-level Makefile instead) |
92 | 46 | endif
|
93 | 47 |
|
94 |
| -ifdef ALT_OUTPUTDIR |
95 |
| - OUTPUTDIR = $(ALT_OUTPUTDIR) |
96 |
| - ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR) |
97 |
| -else |
98 |
| - OUTPUTDIR = .. |
99 |
| -endif |
100 |
| - |
101 |
| -ifdef ALT_LANGTOOLS_DIST |
102 |
| - ifdef ALT_BOOTDIR |
103 |
| - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) |
104 |
| - ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR) |
105 |
| - endif |
106 |
| - ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap |
107 |
| -else |
108 |
| - ifdef ALT_JDK_IMPORT_PATH |
109 |
| - ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH) |
110 |
| - ANT_OPTIONS += -Djdk.home=$(ALT_JDK_IMPORT_PATH) |
111 |
| - endif |
112 |
| -endif |
113 |
| - |
114 |
| -ifdef ANT_HOME |
115 |
| - ANT = $(ANT_HOME)/bin/ant |
116 |
| - ifneq ($(shell test -x $(ANT); echo $$?), 0) |
117 |
| - $(error "$(ANT) not found; please update ANT_HOME") |
118 |
| - endif |
119 |
| -else |
120 |
| - ANT = ant |
121 |
| - ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0) |
122 |
| - $(error "'ant' not found; please set ANT_HOME or put 'ant' on your PATH") |
123 |
| - endif |
124 |
| -endif |
125 |
| - |
126 |
| -# Default target and expected 'do everything' target |
127 |
| -default: all |
128 |
| - |
129 |
| -# All ant targets of interest |
130 |
| -ANT_TARGETS = all build dist clobber clean sanity |
131 |
| - |
132 |
| -# Create a make target for each |
133 |
| -$(ANT_TARGETS): |
134 |
| - cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) -version |
135 |
| - cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@ |
136 |
| - |
137 |
| -# Just for compat reasons, delete in future. |
138 |
| -drop_included: |
139 |
| -source: |
140 |
| - |
141 |
| -# Help target |
142 |
| -define helpenvline |
143 |
| -@echo " $1";echo " $2" |
144 |
| -endef |
145 |
| -help: |
146 |
| - @echo "----------------------------------------------------------" |
147 |
| - @echo " " |
148 |
| - @echo "Help information for this Makefile:" |
149 |
| - @echo " " |
150 |
| - @echo " Targets (see ant project information for descriptions):" |
151 |
| - @echo " $(ANT_TARGETS)" |
152 |
| - @echo " " |
153 |
| - @echo " Environment or command line variables (all optional):" |
154 |
| - $(call helpenvline, ALT_BOOTDIR,\ |
155 |
| - "JAVA_HOME to use when running ant") |
156 |
| - $(call helpenvline, ALT_LANGTOOLS_DIST,\ |
157 |
| - "path to langtools repository dist directory") |
158 |
| - $(call helpenvline, ALT_OUTPUTDIR,\ |
159 |
| - "path to root of output") |
160 |
| - $(call helpenvline, DEBUG_CLASSFILES,\ |
161 |
| - "if set makes sure ant property javac.debug is true") |
162 |
| - $(call helpenvline, JAVAC_SOURCE_ARG,\ |
163 |
| - "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source") |
164 |
| - $(call helpenvline, JAVAC_TARGET_ARG,\ |
165 |
| - "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target") |
166 |
| - $(call helpenvline, SOURCE_LANGUAGE_VERSION,\ |
167 |
| - "if set uses this to set ant property javac.source") |
168 |
| - $(call helpenvline, QUIET,\ |
169 |
| - "if set will pass -quiet to ant") |
170 |
| - $(call helpenvline, TARGET_CLASS_VERSION,\ |
171 |
| - "JAVA_HOME to use when running ant") |
172 |
| - $(call helpenvline, VARIANT,\ |
173 |
| - "if set to OPT means optimized build will set javac.debug to false") |
174 |
| - $(call helpenvline, VERBOSE,\ |
175 |
| - "if set will pass -verbose to ant") |
176 |
| - @echo " " |
177 |
| - @echo "----------------------------------------------------------" |
178 |
| - @echo " " |
179 |
| - @echo "Ant project file help information:" |
180 |
| - @echo " " |
181 |
| - @$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p |
182 |
| - @echo " " |
183 |
| - @echo "----------------------------------------------------------" |
184 |
| - |
185 |
| -# Targets for Sun's internal JPRT build system |
186 |
| -JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip |
187 |
| -jprt_build_product jprt_build_debug jprt_build_fastdebug: all |
188 |
| - $(RM) $(JPRT_ARCHIVE_BUNDLE) |
189 |
| - ( cd $(OUTPUTDIR)/dist && \ |
190 |
| - zip -q -r $(JPRT_ARCHIVE_BUNDLE) . ) |
191 |
| - |
192 |
| -# Declare these phony (not filenames) |
193 |
| -.PHONY: $(ANT_TARGETS) \ |
194 |
| - jprt_build_product jprt_build_debug jprt_build_fastdebug |
| 48 | +all: |
| 49 | + @$(MAKE) -f $(top_level_makefile) $(subsystem_name) |
0 commit comments