spec.gmk.in revision 1234:d52ae6b38836
1240116Smarcel#
2240116Smarcel# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
3240116Smarcel# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4240116Smarcel#
5240116Smarcel# This code is free software; you can redistribute it and/or modify it
6240116Smarcel# under the terms of the GNU General Public License version 2 only, as
7240116Smarcel# published by the Free Software Foundation.  Oracle designates this
8240116Smarcel# particular file as subject to the "Classpath" exception as provided
9240116Smarcel# by Oracle in the LICENSE file that accompanied this code.
10240116Smarcel#
11240116Smarcel# This code is distributed in the hope that it will be useful, but WITHOUT
12240116Smarcel# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13240116Smarcel# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14240116Smarcel# version 2 for more details (a copy is included in the LICENSE file that
15240116Smarcel# accompanied this code).
16240116Smarcel#
17240116Smarcel# You should have received a copy of the GNU General Public License version
18240116Smarcel# 2 along with this work; if not, write to the Free Software Foundation,
19240116Smarcel# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20240116Smarcel#
21240116Smarcel# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22240116Smarcel# or visit www.oracle.com if you need additional information or have any
23240116Smarcel# questions.
24240116Smarcel#
25240116Smarcel
26273929Sjmmv# Configured @DATE_WHEN_CONFIGURED@ to build
27273929Sjmmv# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
28240116Smarcel#   (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
29240116Smarcel# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
30240116Smarcel#   (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
31240116Smarcel# using 'configure @CONFIGURE_COMMAND_LINE@'
32240116Smarcel
33240116Smarcel# When calling macros, the spaces between arguments are
34240116Smarcel# often semantically important! Sometimes we need to subst
35240116Smarcel# spaces and commas, therefore we need the following macros.
36240116SmarcelX:=
37240116SmarcelSPACE:=$(X) $(X)
38273929SjmmvCOMMA:=,
39240116SmarcelDOLLAR:=$$
40273929SjmmvHASH:=\#
41273929SjmmvLEFT_PAREN:=(
42273929SjmmvRIGHT_PAREN:=)
43273929SjmmvSQUOTE:='
44273929Sjmmv#'
45273929SjmmvDQUOTE:="
46240116Smarcel#"
47240116Smarceldefine NEWLINE
48240116Smarcel
49240116Smarcel
50240116Smarcelendef
51240116Smarcel
52240116Smarcel# The command line given to configure.
53240116SmarcelCONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
54240116Smarcel
55240116Smarcel# A self-referential reference to this file.
56240116SmarcelSPEC:=@SPEC@
57240116Smarcel
58240116Smarcel# Specify where the spec file is.
59240116SmarcelMAKE_ARGS="SPEC=$(SPEC)"
60240116Smarcel
61240116SmarcelMAKE:=@MAKE@
62240116Smarcel
63240116Smarcel# Pass along the verbosity and log level settings.
64240116Smarcelifeq (,$(findstring VERBOSE=,$(MAKE)))
65240116Smarcel  MAKE:=$(MAKE) $(VERBOSE) VERBOSE="$(VERBOSE)" LOG_LEVEL="$(LOG_LEVEL)"
66240116Smarcelendif
67240116Smarcel
68240116Smarcel# No implicit variables or rules!
69240116Smarcelifeq (,$(findstring -R,$(MAKE)))
70240116Smarcel  MAKE:=$(MAKE) -R
71240116Smarcelendif
72240116Smarcel
73240116Smarcel# Specify where the common include directory for makefiles is.
74240116Smarcelifeq (,$(findstring -I @TOPDIR@/make/common,$(MAKE)))
75240116Smarcel  MAKE:=$(MAKE) -I @TOPDIR@/make/common
76240116Smarcelendif
77240116Smarcel
78240116SmarcelOUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@
79240116SmarcelOUTPUT_SYNC:=@OUTPUT_SYNC@
80240116Smarcel
81240116Smarcel# The "human readable" name of this configuration
82240116SmarcelCONF_NAME:=@CONF_NAME@
83240116Smarcel
84240116Smarcel# The built jdk will run in this target system.
85240116SmarcelOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
86240116SmarcelOPENJDK_TARGET_OS_TYPE:=@OPENJDK_TARGET_OS_TYPE@
87240116SmarcelOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
88240116Smarcel
89240116SmarcelOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
90240116SmarcelOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
91240116SmarcelOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
92240116SmarcelOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
93240116Smarcel
94240116SmarcelCOMPILE_TYPE:=@COMPILE_TYPE@
95240116Smarcel
96240116Smarcel# Legacy support
97240116SmarcelOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
98240116SmarcelOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
99240116SmarcelOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
100240116SmarcelOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
101240116SmarcelOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
102240116SmarcelOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
103240116SmarcelOPENJDK_TARGET_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@
104240116Smarcel
105240116Smarcel# We are building on this build system.
106240116Smarcel# When not cross-compiling, it is the same as the target.
107240116SmarcelOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
108240116SmarcelOPENJDK_BUILD_OS_TYPE:=@OPENJDK_BUILD_OS_TYPE@
109240116SmarcelOPENJDK_BUILD_OS_ENV:=@OPENJDK_BUILD_OS_ENV@
110240116Smarcel
111240116SmarcelOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
112240116SmarcelOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
113240116SmarcelOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
114240116SmarcelOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
115240116Smarcel
116240116Smarcel# Legacy OS values for use in release file.
117240116SmarcelREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
118240116SmarcelREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
119240116Smarcel
120240116Smarcel@SET_OPENJDK@
121240116SmarcelLIBM:=-lm
122240116SmarcelLIBDL:=@LIBDL@
123240116Smarcel
124240116Smarcel# colon or semicolon
125240116SmarcelPATH_SEP:=@PATH_SEP@
126240116Smarcel
127240116Smarcelifeq ($(OPENJDK_TARGET_OS), windows)
128240116Smarcel  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
129240116Smarcel  # environment variables (in Windows path style), and the PATH needs to
130240116Smarcel  # be adjusted to include Visual Studio tools (but this needs to be in
131240116Smarcel  # cygwin/msys style).
132240116Smarcel  export PATH:=@VS_PATH@
133240116Smarcel  export INCLUDE:=@VS_INCLUDE@
134240116Smarcel  export LIB:=@VS_LIB@
135240116Smarcelendif
136240116Smarcel
137240116SmarcelSYSROOT_CFLAGS := @SYSROOT_CFLAGS@
138240116SmarcelSYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@
139240116Smarcel
140240116Smarcel# Paths to the source code
141240116SmarcelADD_SRC_ROOT:=@ADD_SRC_ROOT@
142240116SmarcelOVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@
143240116Smarcel
144240116Smarcel# The top-level directory of the forest (SRC_ROOT is a traditional alias)
145240116SmarcelTOPDIR:=@TOPDIR@
146240116SmarcelSRC_ROOT:=@TOPDIR@
147240116Smarcel
148240116SmarcelOUTPUT_ROOT:=@OUTPUT_ROOT@
149240116SmarcelJDK_TOPDIR:=@JDK_TOPDIR@
150240116SmarcelLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
151240116SmarcelCORBA_TOPDIR:=@CORBA_TOPDIR@
152240116SmarcelJAXP_TOPDIR:=@JAXP_TOPDIR@
153240116SmarcelJAXWS_TOPDIR:=@JAXWS_TOPDIR@
154240116SmarcelHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
155240116SmarcelNASHORN_TOPDIR:=@NASHORN_TOPDIR@
156240116SmarcelCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
157240116Smarcel
158240116Smarcel# Information gathered from the version.numbers file.
159240116SmarcelJDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@
160240116SmarcelJDK_MINOR_VERSION:=@JDK_MINOR_VERSION@
161240116SmarcelJDK_MICRO_VERSION:=@JDK_MICRO_VERSION@
162240116SmarcelJDK_UPDATE_VERSION:=@JDK_UPDATE_VERSION@
163240116SmarcelJDK_BUILD_NUMBER:=@JDK_BUILD_NUMBER@
164240116SmarcelMILESTONE:=@MILESTONE@
165240116SmarcelLAUNCHER_NAME:=@LAUNCHER_NAME@
166240116SmarcelPRODUCT_NAME:=@PRODUCT_NAME@
167240116SmarcelPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
168240116SmarcelJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
169240116SmarcelCOMPANY_NAME:=@COMPANY_NAME@
170240116SmarcelMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
171240116SmarcelMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
172240116SmarcelUSER_RELEASE_SUFFIX=@USER_RELEASE_SUFFIX@
173240116Smarcel
174240116Smarcel# Different version strings generated from the above information.
175240116SmarcelJDK_VERSION:=@JDK_VERSION@
176240116SmarcelRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
177240116SmarcelCOOKED_BUILD_NUMBER:=@COOKED_BUILD_NUMBER@
178240116Smarcel# These variables need to be generated here so that MILESTONE and
179240116Smarcel# JDK_BUILD_NUMBER can be overridden on the make command line.
180240116Smarcelifeq ($(MILESTONE), fcs)
181240116Smarcel  RELEASE=$(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
182240116Smarcelelse
183240116Smarcel  RELEASE=$(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
184240116Smarcelendif
185240116Smarcel
186240116Smarcelifneq ($(USER_RELEASE_SUFFIX), )
187240116Smarcel  FULL_VERSION=$(RELEASE)-$(USER_RELEASE_SUFFIX)-$(JDK_BUILD_NUMBER)
188240116Smarcelelse
189240116Smarcel  FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER)
190240116Smarcelendif
191240116SmarcelJRE_RELEASE_VERSION:=$(FULL_VERSION)
192240116Smarcel
193240116Smarcel# How to compile the code: release, fastdebug or slowdebug
194240116SmarcelDEBUG_LEVEL:=@DEBUG_LEVEL@
195240116Smarcel
196240116Smarcel# This is the JDK variant to build.
197240116Smarcel# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
198240116SmarcelJDK_VARIANT:=@JDK_VARIANT@
199240116Smarcel
200240116Smarcel# Should we compile support for running with a graphical UI? (ie headful)
201240116Smarcel# Should we compile support for running without? (ie headless)
202240116SmarcelSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
203240116SmarcelSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
204240116Smarcel# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
205240116Smarcel@BUILD_HEADLESS@
206240116Smarcel
207240116Smarcel# These are the libjvms that we want to build.
208240116Smarcel# The java launcher uses the default.
209240116Smarcel# The others can be selected by specifying -client -server -minimal1 -kernel -zero or -zeroshark
210240116Smarcel# on the java launcher command line.
211240116SmarcelJVM_VARIANTS:=@JVM_VARIANTS@
212240116SmarcelJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
213240116SmarcelJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
214240116SmarcelJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
215240116SmarcelJVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@
216240116SmarcelJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
217240116SmarcelJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
218240116SmarcelJVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
219240116Smarcel
220240116Smarcel# Universal binaries on macosx
221240116SmarcelMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
222240116Smarcel
223240116Smarcel# Legacy setting: -debug or -fastdebug
224240116Smarcel# Still used in version string...
225240116SmarcelBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
226240116Smarcel
227240116Smarcel# JDK_OUTPUTDIR specifies where a working jvm is built.
228240116Smarcel# You can run $(JDK_OUTPUTDIR)/bin/java
229240116Smarcel# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
230240116Smarcel# yet the same as a default installation.
231240116Smarcel#
232240116Smarcel# When you run "make install" it will create the standardized
233240116Smarcel# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
234240116Smarcel# Then it will copy the contents of the jdk into the installation
235240116Smarcel# directory.
236240116Smarcel
237240116SmarcelBUILD_OUTPUT:=@BUILD_OUTPUT@
238240116Smarcel# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
239240116SmarcelLANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools
240240116SmarcelCORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba
241240116SmarcelJAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
242240116SmarcelJAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws
243240116SmarcelHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
244240116SmarcelJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
245240116SmarcelNASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn
246240116SmarcelIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
247240116SmarcelTESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/testmake
248240116SmarcelMAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
249240116Smarcel
250240116SmarcelLANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist
251240116SmarcelCORBA_DIST=$(CORBA_OUTPUTDIR)/dist
252240116SmarcelJAXP_DIST=$(JAXP_OUTPUTDIR)/dist
253240116SmarcelJAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist
254240116SmarcelHOTSPOT_DIST=@HOTSPOT_DIST@
255240116SmarcelNASHORN_DIST=$(NASHORN_OUTPUTDIR)/dist
256240116Smarcel
257240116SmarcelBUILD_HOTSPOT=@BUILD_HOTSPOT@
258240116Smarcel
259240116Smarcel# The boot jdk to use. These are overridden in bootcycle-spec.gmk. Make sure to keep
260240116Smarcel# them in sync.
261240116SmarcelBOOT_JDK:=@BOOT_JDK@
262240116SmarcelBOOT_RTJAR:=@BOOT_RTJAR@
263240116SmarcelBOOT_TOOLSJAR=$(BOOT_JDK)/lib/tools.jar
264240116Smarcel
265240116Smarcel# When compiling Java source to be run by the boot jdk
266240116Smarcel# use these extra flags, eg -source 6 -target 6
267240116SmarcelBOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
268240116Smarcel
269240116Smarcel# Information about the build system
270240116SmarcelNUM_CORES:=@NUM_CORES@
271240116SmarcelMEMORY_SIZE:=@MEMORY_SIZE@
272240116Smarcel# Enable sjavac support = use a javac server,
273240116Smarcel# multi core javac compilation and dependency tracking.
274240116SmarcelENABLE_SJAVAC:=@ENABLE_SJAVAC@
275240116Smarcel# Store sjavac server synchronization files here, and
276240116Smarcel# the sjavac server log files.
277240116SmarcelSJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@
278240116Smarcel
279240116Smarcel# Number of parallel jobs to use for compilation
280240116SmarcelJOBS?=@JOBS@
281240116Smarcel
282240116SmarcelFREETYPE_LIBS:=@FREETYPE_LIBS@
283240116SmarcelFREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
284240116SmarcelFREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
285240116SmarcelCUPS_CFLAGS:=@CUPS_CFLAGS@
286240116SmarcelALSA_LIBS:=@ALSA_LIBS@
287240116SmarcelALSA_CFLAGS:=@ALSA_CFLAGS@
288240116Smarcel
289240116SmarcelPACKAGE_PATH=@PACKAGE_PATH@
290240116Smarcel
291240116Smarcel# Source file for cacerts
292240116SmarcelCACERTS_FILE=@CACERTS_FILE@
293258289Sjmmv
294240116Smarcel# Enable unlimited crypto policy
295240116SmarcelUNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
296240116Smarcel
297240116Smarcel# Enable RMIConnector IIOP transport
298240116SmarcelRMICONNECTOR_IIOP=@RMICONNECTOR_IIOP@
299240116Smarcel
300240116Smarcel# Necessary additional compiler flags to compile X11
301240116SmarcelX_CFLAGS:=@X_CFLAGS@
302240116SmarcelX_LIBS:=@X_LIBS@
303240116Smarcel
304240116Smarcel# The lowest required version of macosx to enforce compatiblity for
305240116SmarcelMACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
306240116Smarcel
307258289Sjmmv# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
308240116SmarcelTOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
309240116Smarcel
310240116Smarcel# Option used to tell the compiler whether to create 32- or 64-bit executables
311240116SmarcelCOMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@
312240116SmarcelCOMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@
313240116Smarcel
314240116SmarcelCC_OUT_OPTION:=@CC_OUT_OPTION@
315240116SmarcelEXE_OUT_OPTION:=@EXE_OUT_OPTION@
316240116SmarcelLD_OUT_OPTION:=@LD_OUT_OPTION@
317240116SmarcelAR_OUT_OPTION:=@AR_OUT_OPTION@
318240116Smarcel
319240116Smarcel# Flags used for overriding the default opt setting for a C/C++ source file.
320240116SmarcelC_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
321258289SjmmvC_O_FLAG_HI:=@C_O_FLAG_HI@
322258289SjmmvC_O_FLAG_NORM:=@C_O_FLAG_NORM@
323240116SmarcelC_O_FLAG_NONE:=@C_O_FLAG_NONE@
324240116SmarcelCXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
325240116SmarcelCXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
326240116SmarcelCXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
327240116SmarcelCXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
328240116Smarcel
329240116SmarcelC_FLAG_DEPS:=@C_FLAG_DEPS@
330240116SmarcelCXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
331240116Smarcel
332240116SmarcelCFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
333240116Smarcel
334240116Smarcel# Tools that potentially need to be cross compilation aware.
335240116SmarcelCC:=@FIXPATH@ @CCACHE@ @CC@
336240116Smarcel
337240116Smarcel# CFLAGS used to compile the jdk native libraries (C-code)
338240116SmarcelCFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
339240116SmarcelCXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
340240116Smarcel
341240116Smarcel# CFLAGS used to compile the jdk native launchers (C-code)
342240116SmarcelCFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
343240116SmarcelCXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
344240116Smarcel
345240116SmarcelCXX:=@FIXPATH@ @CCACHE@ @CXX@
346240116Smarcel#CXXFLAGS:=@CXXFLAGS@
347240116Smarcel
348240116SmarcelOBJC:=@CCACHE@ @OBJC@
349240116Smarcel#OBJCFLAGS:=@OBJCFLAGS@
350240116Smarcel
351240116SmarcelCPP:=@FIXPATH@ @CPP@
352240116Smarcel#CPPFLAGS:=@CPPFLAGS@
353240116Smarcel
354240116Smarcel# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
355240116SmarcelLD:=@FIXPATH@ @LD@
356240116Smarcel
357258289Sjmmv# Xcode SDK path
358240116SmarcelSDKROOT:=@SDKROOT@
359240116Smarcel
360258289Sjmmv# The linker on older SuSE distros (e.g. on SLES 10) complains with:
361258289Sjmmv# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
362240116Smarcel# if feeded with a version script which contains named tags.
363240116SmarcelUSING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@
364240116Smarcel
365240116Smarcel# LDFLAGS used to link the jdk native libraries (C-code)
366240116SmarcelLDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
367240116SmarcelLDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
368240116Smarcel
369240116Smarcel# On some platforms the linker cannot be used to create executables, thus
370240116Smarcel# the need for a separate LDEXE command.
371240116SmarcelLDEXE:=@FIXPATH@ @LDEXE@
372240116Smarcel
373240116Smarcel# LDFLAGS used to link the jdk native launchers (C-code)
374240116SmarcelLDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
375240116SmarcelLDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
376240116Smarcel
377240116Smarcel# LDFLAGS specific to C++ linking.
378240116SmarcelLDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
379240116Smarcel
380240116Smarcel# Sometimes a different linker is needed for c++ libs
381240116SmarcelLDCXX:=@FIXPATH@ @LDCXX@
382240116Smarcel# The flags for linking libstdc++ linker.
383240116SmarcelLIBCXX:=@LIBCXX@
384240116Smarcel
385240116Smarcel# Sometimes a different linker is needed for c++ executables
386240116SmarcelLDEXECXX:=@FIXPATH@ @LDEXECXX@
387240116Smarcel
388240116Smarcel# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
389240116Smarcel# build platform.
390240116SmarcelBUILD_CC:=@FIXPATH@ @BUILD_CC@
391240116SmarcelBUILD_LD:=@FIXPATH@ @BUILD_LD@
392240116Smarcel
393240116SmarcelAS:=@FIXPATH@ @AS@
394240116Smarcel
395240116Smarcel# AR is used to create a static library (is ar in unix, lib.exe in windows)
396240116SmarcelAR:=@FIXPATH@ @AR@
397240116SmarcelARFLAGS:=@ARFLAGS@
398240116Smarcel
399240116SmarcelNM:=@NM@
400240116SmarcelGNM:=@GNM@
401240116SmarcelSTRIP:=@STRIP@
402240116SmarcelMCS:=@MCS@
403240116Smarcel
404240116SmarcelLIPO:=@LIPO@
405240116Smarcel
406240116Smarcel# Command to create a shared library
407258289SjmmvSHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@
408240116Smarcel
409240116Smarcel# Options to linker to specify a mapfile.
410258289Sjmmv# (Note absence of := assignment, because we do not want to evaluate the macro body here)
411240116SmarcelSET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
412240116Smarcel
413240116Smarcel# Options for C/CXX compiler to be used if linking is performed
414240116Smarcel#   using reorder file
415240116SmarcelC_FLAG_REORDER:=@C_FLAG_REORDER@
416240116SmarcelCXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
417240116Smarcel
418240116Smarcel#
419240116Smarcel# Options for generating debug symbols
420240116SmarcelENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
421240116SmarcelCFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
422240116SmarcelCXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
423240116SmarcelZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
424240116Smarcel
425240116Smarcel#
426240116Smarcel# Compress (or not) jars
427240116SmarcelCOMPRESS_JARS=@COMPRESS_JARS@
428240116Smarcel
429240116Smarcel# Options to linker to specify the library name.
430240116Smarcel# (Note absence of := assignment, because we do not want to evaluate the macro body here)
431240116SmarcelSET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
432240116Smarcel
433240116Smarcel# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
434240116Smarcel# (Note absence of := assignment, because we do not want to evaluate the macro body here)
435240116SmarcelSET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
436240116SmarcelSET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
437240116Smarcel
438240116Smarcel# Different OS:es have different ways of naming shared libraries.
439240116Smarcel# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
440240116Smarcel#    "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
441240116Smarcel# (Note absence of := assignment, because we do not want to evaluate the macro body here)
442240116SmarcelSHARED_LIBRARY=@SHARED_LIBRARY@
443240116SmarcelSTATIC_LIBRARY=@STATIC_LIBRARY@
444240116SmarcelLIBRARY_PREFIX:=@LIBRARY_PREFIX@
445240116SmarcelSHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
446240116SmarcelSTATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
447240116SmarcelEXE_SUFFIX:=@EXE_SUFFIX@
448240116SmarcelOBJ_SUFFIX:=@OBJ_SUFFIX@
449240116Smarcel
450240116SmarcelPOST_STRIP_CMD:=@POST_STRIP_CMD@
451240116SmarcelPOST_MCS_CMD:=@POST_MCS_CMD@
452258289Sjmmv
453240116SmarcelJAVA_FLAGS:=@JAVA_FLAGS@
454240116SmarcelJAVA_FLAGS_BIG:=@JAVA_FLAGS_BIG@
455258289SjmmvJAVA_FLAGS_SMALL:=@JAVA_FLAGS_SMALL@
456240116SmarcelJAVA_TOOL_FLAGS_SMALL:=@JAVA_TOOL_FLAGS_SMALL@
457240116SmarcelSJAVAC_SERVER_JAVA_FLAGS:=@SJAVAC_SERVER_JAVA_FLAGS@
458240116Smarcel
459240116Smarcel# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk 
460240116Smarcel# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD
461240116Smarcel# versions of the variables directly.
462240116SmarcelJAVA_CMD:=@JAVA@
463240116SmarcelJAVAC_CMD:=@JAVAC@
464240116SmarcelJAVAH_CMD:=@JAVAH@
465240116SmarcelJAR_CMD:=@JAR@
466240116SmarcelNATIVE2ASCII_CMD:=@NATIVE2ASCII@
467240116SmarcelJARSIGNER_CMD:=@JARSIGNER@
468240116SmarcelSJAVAC_SERVER_JAVA_CMD:=@SJAVAC_SERVER_JAVA@
469240116Smarcel# These variables are meant to be used. They are defined with = instead of := to make
470240116Smarcel# it possible to override only the *_CMD variables.
471240116SmarcelJAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
472240116SmarcelJAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
473240116SmarcelJAVAC=@FIXPATH@ $(JAVAC_CMD)
474240116SmarcelJAVAH=@FIXPATH@ $(JAVAH_CMD)
475240116SmarcelJAR=@FIXPATH@ $(JAR_CMD)
476240116SmarcelNATIVE2ASCII=@FIXPATH@ $(NATIVE2ASCII_CMD) $(JAVA_TOOL_FLAGS_SMALL)
477240116SmarcelJARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
478240116Smarcel# A specific java binary with specific options can be used to run
479240116Smarcel# the long running background sjavac servers and other long running tasks.
480240116SmarcelSJAVAC_SERVER_JAVA=@FIXPATH@ $(SJAVAC_SERVER_JAVA_CMD) $(SJAVAC_SERVER_JAVA_FLAGS)
481240116Smarcel
482240116Smarcel# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
483240116Smarcel# overriding that value by using ?=.
484240116SmarcelJAVAC_FLAGS?=@JAVAC_FLAGS@
485240116Smarcel
486240116Smarcel# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
487240116SmarcelINTERIM_LANGTOOLS_JAR := $(LANGTOOLS_OUTPUTDIR)/dist/interim_langtools.jar
488240116SmarcelINTERIM_LANGTOOLS_ARGS := "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR)
489240116SmarcelNEW_JAVAC   = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main
490240116SmarcelNEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javadoc.Main
491240116Smarcel
492240116Smarcel# The interim corba jar is needed for running rmic
493240116SmarcelINTERIM_CORBA_JAR := $(CORBA_OUTPUTDIR)/dist/interim_corba.jar
494240116Smarcel
495240116Smarcel# Base flags for RC
496240116Smarcel# Guarding this against resetting value. Legacy make files include spec multiple
497240116Smarcel# times.
498240116Smarcelifndef RC_FLAGS
499258289Sjmmv  RC_FLAGS:=@RC_FLAGS@
500240116Smarcelendif
501240116Smarcel
502258289Sjmmv# Tools adhering to a minimal and common standard of posix compliance.
503240116SmarcelAWK:=@AWK@
504240116SmarcelBASENAME:=@BASENAME@
505240116SmarcelBASH:=@BASH@
506240116SmarcelCAT:=@CAT@
507240116SmarcelCCACHE:=@CCACHE@
508240116Smarcel# CD is going away, but remains to cater for legacy makefiles.
509240116SmarcelCD:=cd
510240116SmarcelCHMOD:=@CHMOD@
511240116SmarcelCODESIGN:=@CODESIGN@
512240116SmarcelCOMM:=@COMM@
513240116SmarcelCP:=@CP@
514240116SmarcelCPIO:=@CPIO@
515240116SmarcelCUT:=@CUT@
516240116SmarcelDATE:=@DATE@
517240116SmarcelDIFF:=@DIFF@
518240116SmarcelDIRNAME:=@DIRNAME@
519240116SmarcelDSYMUTIL:=@DSYMUTIL@
520240116SmarcelFIND:=@FIND@
521240116SmarcelFIND_DELETE:=@FIND_DELETE@
522240116SmarcelECHO:=@ECHO@
523240116SmarcelEGREP:=@EGREP@
524240116SmarcelFGREP:=@FGREP@
525240116SmarcelGREP:=@GREP@
526240116SmarcelHEAD:=@HEAD@
527240116SmarcelLS:=@LS@
528240116SmarcelLN:=@LN@
529240116SmarcelMKDIR:=@MKDIR@
530240116SmarcelMV:=@MV@
531240116SmarcelNAWK:=@NAWK@
532240116SmarcelPRINTF:=@PRINTF@
533240116SmarcelPWD:=@THEPWDCMD@
534240116SmarcelRM:=@RM@
535240116SmarcelSED:=@SED@
536240116SmarcelSH:=@SH@
537240116SmarcelSORT:=@SORT@
538240116SmarcelTAR:=@TAR@
539240116SmarcelTAIL:=@TAIL@
540240116SmarcelTEE:=@TEE@
541240116SmarcelTIME:=@TIME@
542240116SmarcelIS_GNU_TIME:=@IS_GNU_TIME@
543240116SmarcelTR:=@TR@
544258289SjmmvTOUCH:=@TOUCH@
545240116SmarcelUNIQ:=@UNIQ@
546240116SmarcelWC:=@WC@
547258289SjmmvXARGS:=@XARGS@
548240116SmarcelZIPEXE:=@ZIP@
549240116SmarcelZIP:=@ZIP@
550240116SmarcelUNZIP:=@UNZIP@
551240116SmarcelMT:=@FIXPATH@ @MT@
552240116SmarcelRC:=@FIXPATH@ @RC@
553240116SmarcelDUMPBIN:=@FIXPATH@ @DUMPBIN@
554240116SmarcelCYGPATH:=@CYGPATH@
555240116SmarcelLDD:=@LDD@
556240116SmarcelOTOOL:=@OTOOL@
557240116SmarcelREADELF:=@READELF@
558240116SmarcelEXPR:=@EXPR@
559240116SmarcelFILE:=@FILE@
560240116SmarcelHG:=@HG@
561240116SmarcelOBJCOPY:=@OBJCOPY@
562240116SmarcelSETFILE:=@SETFILE@
563240116SmarcelXATTR:=@XATTR@
564240116SmarcelJT_HOME:=@JT_HOME@
565240116SmarcelJTREGEXE:=@JTREGEXE@
566240116SmarcelXCODEBUILD=@XCODEBUILD@
567240116SmarcelFIXPATH:=@FIXPATH@
568240116Smarcel
569240116Smarcel# Where the build output is stored for your convenience.
570240116SmarcelBUILD_LOG:=@BUILD_LOG@
571240116SmarcelBUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@
572240116Smarcel# Disable the build log wrapper on sjavac+windows until
573240116Smarcel# we have solved how to prevent the log wrapper to wait
574240116Smarcel# for the background sjavac server process.
575240116Smarcelifeq (@ENABLE_SJAVAC@X@OPENJDK_BUILD_OS@,yesXwindows)
576240116Smarcel  BUILD_LOG_WRAPPER:=
577240116Smarcelelse
578240116Smarcel  BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
579240116Smarcelendif
580240116Smarcel
581240116Smarcel# Build setup
582240116SmarcelENABLE_JFR=@ENABLE_JFR@
583240116SmarcelENABLE_INTREE_EC=@ENABLE_INTREE_EC@
584240116SmarcelUSE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
585240116SmarcelUSE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
586240116SmarcelUSE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
587240116SmarcelLIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
588240116SmarcelMSVCR_DLL:=@MSVCR_DLL@
589240116Smarcel
590258289Sjmmv
591240116Smarcel# ADD_SRCS takes a single argument with source roots
592240116Smarcel# and appends any corresponding source roots found
593240116Smarcel# below --with-add-source-root and below
594240116Smarcel# --with-override-source-root. It is the responsibility
595240116Smarcel# of the next macro to get rid of superfluous files.
596258289SjmmvADD_SRCS=$1
597240116Smarcelifneq (,$(ADD_SRC_ROOT))
598240116Smarcel  # Append wildcard rule to pickup any matching source roots found below ADD_SRC_ROOT
599240116Smarcel  ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(ADD_SRC_ROOT),$1))
600240116Smarcelendif
601240116Smarcelifneq (,$(OVERRIDE_SRC_ROOT))
602240116Smarcel  # Append wildcard rule to pickup any matching source roots found below OVERRIDE_SRC_ROOT
603240116Smarcel  ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(OVERRIDE_SRC_ROOT),$1))
604240116Smarcelendif
605240116Smarcel
606240116Smarcel# OVR_SRCS creates a filter expression to filter out sources in
607240116Smarcel# the original source directory that lie inside directories below
608240116Smarcel# --with-override-source-root.
609240116Smarcel# Use := here since we want to scan for these files here. To avoid recomputation later.
610240116Smarcel# We cannot do the scan in configure, since that would force us to rerun configure when
611240116Smarcel# we add overridden sources.
612240116Smarcelifneq (,$(OVERRIDE_SRC_ROOT))
613240116Smarcel  OVR_SRCS:=$(addsuffix %,$(subst $(OVERRIDE_SRC_ROOT),$(SRC_ROOT),$(sort $(dir $(shell $(FIND) $(OVERRIDE_SRC_ROOT) -type f)))))
614240116Smarcelelse
615240116Smarcel  OVR_SRCS:=
616240116Smarcelendif
617240116Smarcel
618240116Smarcel####################################################
619240116Smarcel#
620240116Smarcel# INSTALLATION
621240116Smarcel#
622240116Smarcel
623240116Smarcel# Common prefix for all installed files. Defaults to /usr/local,
624240116Smarcel# but /opt/myjdk is another common version.
625240116SmarcelINSTALL_PREFIX=@prefix@
626240116Smarcel
627240116Smarcel# Directories containing architecture-dependent files should be relative to exec_prefix
628240116SmarcelINSTALL_EXECPREFIX=@exec_prefix@
629240116Smarcel
630240116Smarcel# java,javac,javah,javap etc are installed here.
631240116SmarcelINSTALL_BINDIR=@bindir@
632240116Smarcel
633240116Smarcel# Read only architecture-independent data
634240116SmarcelINSTALL_DATADIR=@datadir@
635240116Smarcel
636240116Smarcel# Root of above.
637240116SmarcelINSTALL_DATAROOTDIR=@datarootdir@
638240116Smarcel
639240116Smarcel# Doc files, other than info and man.
640240116SmarcelINSTALL_DOCDIR=@docdir@
641240116Smarcel
642258289Sjmmv# Html documentation
643240116SmarcelINSTALL_HTMLDIR=@htmldir@
644240116Smarcel
645240116Smarcel# Installing C header files, JNI headers for example.
646240116SmarcelINSTALL_INCLUDEDIR=@includedir@
647240116Smarcel
648258289Sjmmv# Installing library files....
649240116SmarcelINSTALL_INCLUDEDIR=@libdir@
650240116Smarcel
651240116Smarcel# Executables that other programs run.
652240116SmarcelINSTALL_LIBEXECDIR=@libexecdir@
653240116Smarcel
654240116Smarcel# Locale-dependent but architecture-independent data, such as message catalogs.
655240116SmarcelINSTALL_LOCALEDIR=@localedir@
656240116Smarcel
657240116Smarcel# Modifiable single-machine data
658240116SmarcelINSTALL_LOCALSTATEDIR=@localstatedir@
659240116Smarcel
660240116Smarcel# Man pages
661240116SmarcelINSTALL_MANDIR=@mandir@
662240116Smarcel
663240116Smarcel# Modifiable architecture-independent data.
664240116SmarcelINSTALL_SHAREDSTATEDIR=@sharedstatedir@
665240116Smarcel
666240116Smarcel# Read-only single-machine data
667240116SmarcelINSTALL_SYSCONFDIR=@sysconfdir@
668240116Smarcel
669240116Smarcel####################################################
670240116Smarcel#
671240116Smarcel# Libraries
672240116Smarcel#
673240116Smarcel
674240116SmarcelUSE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
675240116SmarcelLCMS_CFLAGS:=@LCMS_CFLAGS@
676240116SmarcelLCMS_LIBS:=@LCMS_LIBS@
677240116Smarcel
678240116SmarcelUSE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
679240116SmarcelPNG_LIBS:=@PNG_LIBS@
680240116SmarcelPNG_CFLAGS:=@PNG_CFLAGS@
681240116Smarcel
682240116Smarcel
683240116Smarcel####################################################
684240116Smarcel#
685240116Smarcel# Misc
686240116Smarcel#
687240116Smarcel
688240116Smarcel# Name of Service Agent library
689240116SmarcelSALIB_NAME=@SALIB_NAME@
690240116Smarcel
691240116SmarcelINCLUDE_SA=@INCLUDE_SA@
692258289Sjmmv
693240116SmarcelOS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
694258289SjmmvOS_VERSION_MINOR:=@OS_VERSION_MINOR@
695240116SmarcelOS_VERSION_MICRO:=@OS_VERSION_MICRO@
696240116Smarcel
697240116Smarcel# Images directory definitions
698258289SjmmvJDK_IMAGE_SUBDIR:=j2sdk-image
699240116SmarcelJRE_IMAGE_SUBDIR:=j2re-image
700240116SmarcelJDK_OVERLAY_IMAGE_SUBDIR:=j2sdk-overlay-image
701240116SmarcelJRE_OVERLAY_IMAGE_SUBDIR:=j2re-overlay-image
702240116Smarcel# Colon left out to be able to override output dir for bootcycle-images
703240116SmarcelJDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
704240116SmarcelJRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
705240116SmarcelJDK_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR)
706240116SmarcelJRE_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR)
707240116Smarcel
708240116Smarcel# Macosx bundles directory definitions
709240116SmarcelJDK_BUNDLE_SUBDIR=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
710240116SmarcelJRE_BUNDLE_SUBDIR=j2re-bundle/jre$(JDK_VERSION).jre/Contents
711240116SmarcelJDK_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR)
712240116SmarcelJRE_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR)
713240116Smarcel
714240116Smarcel# This macro is called to allow inclusion of closed source counterparts.
715240116Smarcel# Unless overridden in closed sources, it expands to nothing.
716240116Smarcel# Usage: This function is called in an open makefile, with the following 
717240116Smarcel# arguments:
718240116Smarcel# $1 the name of the repo, or empty if the top-level repo.
719240116Smarcel# $2 the name of the makefile
720240116Smarceldefine IncludeCustomExtension
721240116Smarcelendef
722240116Smarcel
723240116Smarcel# Include the custom-spec.gmk file if it exists
724240116Smarcel-include $(dir @SPEC@)/custom-spec.gmk
725240116Smarcel