spec.gmk.in revision 1783:096dd665a6ff
14Srgrimes#
2110379Sphk# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
34Srgrimes# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44Srgrimes#
54Srgrimes# This code is free software; you can redistribute it and/or modify it
64Srgrimes# under the terms of the GNU General Public License version 2 only, as
74Srgrimes# published by the Free Software Foundation.  Oracle designates this
84Srgrimes# particular file as subject to the "Classpath" exception as provided
94Srgrimes# by Oracle in the LICENSE file that accompanied this code.
104Srgrimes#
114Srgrimes# This code is distributed in the hope that it will be useful, but WITHOUT
124Srgrimes# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
134Srgrimes# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14110379Sphk# version 2 for more details (a copy is included in the LICENSE file that
154Srgrimes# accompanied this code).
164Srgrimes#
17110379Sphk# You should have received a copy of the GNU General Public License version
184Srgrimes# 2 along with this work; if not, write to the Free Software Foundation,
194Srgrimes# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
204Srgrimes#
214Srgrimes# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
224Srgrimes# or visit www.oracle.com if you need additional information or have any
234Srgrimes# questions.
244Srgrimes#
254Srgrimes
264Srgrimes# Configured @DATE_WHEN_CONFIGURED@ to build
27115683Sobrien# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
28115683Sobrien#   (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
29115683Sobrien# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
30237433Skib#   (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
3116299Spst# using 'configure @CONFIGURE_COMMAND_LINE@'
3213228Swollman
332056Swollman# The command line given to configure.
34167905SnjlCONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
35167905Snjl
36221214Sjkim# A self-referential reference to this file.
37167905SnjlSPEC:=@SPEC@
382056Swollman
39113348Sdes# SPACE is defined in MakeBase.gmk, but it is also used in := rules here for some
402056Swollman# toolchains, and is needed if MakeBase.gmk is not included before this file.
4158377SphkX:=
422056SwollmanSPACE:=$(X) $(X)
4385835Siwasaki
44113348Sdes# What make to use for main processing, after bootstrapping top-level Makefile.
45237433SkibMAKE := @MAKE@
464180Sbde
47216272Sjkim# The default make arguments
4832054SphkMAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \
4932054Sphk    MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" LOG_LEVEL=$(LOG_LEVEL)
5015508Sbde
51167905SnjlOUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@
52167905SnjlOUTPUT_SYNC:=@OUTPUT_SYNC@
53216163Sjkim
54184102Sjkim# Override the shell with bash
55220579SjkimBASH:=@BASH@
56220579SjkimBASH_ARGS:=@BASH_ARGS@
57167905SnjlSHELL:=$(BASH) $(BASH_ARGS)
581390Ssos
59184102Sjkim# The "human readable" name of this configuration
60184108SjkimCONF_NAME:=@CONF_NAME@
61184108Sjkim
62184102Sjkim# The built jdk will run in this target system.
63113348SdesOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
64249324SneelOPENJDK_TARGET_OS_TYPE:=@OPENJDK_TARGET_OS_TYPE@
65121307SsilbyOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
66113348Sdes
67113348SdesOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
68249625SmavOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
69249625SmavOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
70249625SmavOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
71249625Smav
72249625SmavCOMPILE_TYPE:=@COMPILE_TYPE@
73113348Sdes
74113348Sdes# Legacy support
75246212SkibOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
76246212SkibOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
77246212SkibOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
78246212SkibOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
79246212SkibOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
80219473SjkimOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
81219473SjkimOPENJDK_TARGET_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@
82219473Sjkim
83219473Sjkim# We are building on this build system.
84219473Sjkim# When not cross-compiling, it is the same as the target.
85220577SjkimOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
86220577SjkimOPENJDK_BUILD_OS_TYPE:=@OPENJDK_BUILD_OS_TYPE@
87220577SjkimOPENJDK_BUILD_OS_ENV:=@OPENJDK_BUILD_OS_ENV@
88220577Sjkim
89220577SjkimOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
90167905SnjlOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
91167905SnjlOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
92167905SnjlOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
93167905Snjl
94222866Sjkim# Legacy OS values for use in release file.
95238973SkibREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
96238973SkibREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
97238973Skib
98238973Skib@SET_OPENJDK@
99238973SkibLIBM:=@LIBM@
100167905SnjlLIBDL:=@LIBDL@
10117353Sbde
10240610Sphk# colon or semicolon
10333690SphkPATH_SEP:=@PATH_SEP@
10436741Sphk
105167905Snjl# Save the original path before replacing it with the Visual Studio tools
10633690SphkORIGINAL_PATH:=@ORIGINAL_PATH@
107167905Snjlifeq ($(OPENJDK_TARGET_OS), windows)
108118987Sphk  # On Windows, the Visual Studio toolchain needs the PATH to be adjusted
10933690Sphk  # to include Visual Studio tools (this needs to be in cygwin/msys style).
11033690Sphk  export PATH:=@VS_PATH@
111221214Sjkimendif
112221214Sjkim
113221214SjkimSYSROOT_CFLAGS := @SYSROOT_CFLAGS@
114221214SjkimSYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@
115221214Sjkim
116221214Sjkim# The top-level directory of the forest (SRC_ROOT is a traditional alias)
117221214SjkimTOPDIR:=@TOPDIR@
118221214Sjkim# These two versions of TOPDIR are used in string comparisons
119221214SjkimORIGINAL_TOPDIR:=@ORIGINAL_TOPDIR@
120221331SjkimCANONICAL_TOPDIR:=@CANONICAL_TOPDIR@
121221214SjkimSRC_ROOT:=@TOPDIR@
122221214Sjkim
123221214SjkimOUTPUT_ROOT:=@OUTPUT_ROOT@
124221214SjkimJDK_TOPDIR:=@JDK_TOPDIR@
125221214SjkimLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
126221214SjkimCORBA_TOPDIR:=@CORBA_TOPDIR@
127221214SjkimJAXP_TOPDIR:=@JAXP_TOPDIR@
128221214SjkimJAXWS_TOPDIR:=@JAXWS_TOPDIR@
129221214SjkimHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
130221214SjkimNASHORN_TOPDIR:=@NASHORN_TOPDIR@
131221214SjkimCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
132221214Sjkim
133221214Sjkim# New (JEP-223) version information
134221214Sjkim
135221214Sjkim## Building blocks of the version string
136221214Sjkim# First three version numbers, with well-specified meanings (numerical)
137221214SjkimVERSION_MAJOR := @VERSION_MAJOR@
138221214SjkimVERSION_MINOR := @VERSION_MINOR@
139221214SjkimVERSION_SECURITY := @VERSION_SECURITY@
140221214Sjkim# Optional fourth element for use by OpenJDK consumers (numerical)
141221214SjkimVERSION_PATCH := @VERSION_PATCH@
142221214Sjkim# The pre-release identifier (string)
143221214SjkimVERSION_PRE := @VERSION_PRE@
144221214Sjkim# The build number (numerical)
145221214SjkimVERSION_BUILD := @VERSION_BUILD@
146221214Sjkim# Optional build information (string)
147221214SjkimVERSION_OPT := @VERSION_OPT@
148221214Sjkim
149221214Sjkim## Composite variables
150221214Sjkim# The version number as a dot separated sequence of numbers, e.g. 9.0.1
151221214SjkimVERSION_NUMBER := @VERSION_NUMBER@
152221214Sjkim# VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
153221214SjkimVERSION_NUMBER_FOUR_POSITIONS := @VERSION_NUMBER_FOUR_POSITIONS@
154221214Sjkim# The complete version string, with additional build information
155221214SjkimVERSION_STRING := @VERSION_STRING@
156221214Sjkim# The short version string, without trailing zeroes and just PRE, if present.
157221214SjkimVERSION_SHORT := @VERSION_SHORT@
158221214Sjkim# The Java specification version. It should be equal to version number.
159221214SjkimVERSION_SPECIFICATION := @VERSION_NUMBER@
160221214Sjkim# A GA version is defined by the PRE string being empty. Rather than testing for
161221214Sjkim# that, this variable defines it with true/false.
162221214SjkimVERSION_IS_GA := @VERSION_IS_GA@
163221214Sjkim
164221214Sjkim# Convenience CFLAGS settings for passing version information into native programs.
165221214SjkimVERSION_CFLAGS := \
166221214Sjkim    -DVERSION_MAJOR=$(VERSION_MAJOR) \
167221214Sjkim    -DVERSION_MINOR=$(VERSION_MINOR) \
168221214Sjkim    -DVERSION_SECURITY=$(VERSION_SECURITY) \
169221214Sjkim    -DVERSION_PATCH=$(VERSION_PATCH) \
170221214Sjkim    -DVERSION_PRE='"$(VERSION_PRE)"' \
171221214Sjkim    -DVERSION_BUILD=$(VERSION_BUILD) \
172221214Sjkim    -DVERSION_OPT='"$(VERSION_OPT)"' \
173221214Sjkim    -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \
174221214Sjkim    -DVERSION_STRING='"$(VERSION_STRING)"' \
175221214Sjkim    -DVERSION_SHORT='"$(VERSION_SHORT)"' \
176221214Sjkim    -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \
177221214Sjkim    #
178221214Sjkim
179221214Sjkim# Platform naming variables
180221214SjkimLAUNCHER_NAME:=@LAUNCHER_NAME@
181221214SjkimPRODUCT_NAME:=@PRODUCT_NAME@
182221214SjkimPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
183221214SjkimJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
184221214SjkimCOMPANY_NAME:=@COMPANY_NAME@
185221214SjkimMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
186221214SjkimMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
187221214Sjkim
188221214Sjkim# Different naming strings generated from the above information.
189220577SjkimRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
190220577Sjkim
1911390Ssos# How to compile the code: release, fastdebug or slowdebug
192220577SjkimDEBUG_LEVEL:=@DEBUG_LEVEL@
193220577Sjkim
194220577Sjkim# This is the JDK variant to build.
195220577Sjkim# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
196220577SjkimJDK_VARIANT:=@JDK_VARIANT@
1971390Ssos
198220577Sjkim# Should we compile support for running with a graphical UI? (ie headful)
199220577Sjkim# Should we compile support for running without? (ie headless)
200220577SjkimSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
201220577SjkimSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
202220577Sjkim# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
203220577Sjkim@BUILD_HEADLESS@
204220577Sjkim
205220577Sjkim# These are the libjvms that we want to build.
206220577Sjkim# The java launcher uses the default.
207220577Sjkim# The others can be selected by specifying -client -server -minimal1 -kernel -zero or -zeroshark
208220577Sjkim# on the java launcher command line.
209220577SjkimJVM_VARIANTS:=@JVM_VARIANTS@
210220577SjkimJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
211220577SjkimJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
212220577SjkimJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
213220577SjkimJVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@
214220577SjkimJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
215220577SjkimJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
216220577SjkimJVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
217220577Sjkim
218220577Sjkim# Universal binaries on macosx
219220577SjkimMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
220220577Sjkim
221220577Sjkim# Legacy setting: -debug or -fastdebug
222220577Sjkim# Still used in version string...
223220577SjkimBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
224220577Sjkim
225220577Sjkim# JDK_OUTPUTDIR specifies where a working jvm is built.
226220577Sjkim# You can run $(JDK_OUTPUTDIR)/bin/java
227220577Sjkim# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
228220577Sjkim# yet the same as a default installation.
229220577Sjkim#
230220577Sjkim# When you run "make install" it will create the standardized
231220577Sjkim# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
232220577Sjkim# Then it will copy the contents of the jdk into the installation
233220577Sjkim# directory.
234220577Sjkim
235220577SjkimBUILD_OUTPUT:=@BUILD_OUTPUT@
236220577Sjkim# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
237220577SjkimSUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/support
238220577SjkimBUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
239220577Sjkim
240220577SjkimHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
241220577SjkimJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
242220577SjkimIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
243220577SjkimTESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
244220577SjkimMAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
245220577Sjkim# This does not get overridden in a bootcycle build
246220577SjkimCONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
24732054Sphk
248220577SjkimHOTSPOT_DIST=@HOTSPOT_DIST@
249220577Sjkim
250220577SjkimBUILD_HOTSPOT=@BUILD_HOTSPOT@
251220579Sjkim
252220577Sjkim# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
25315508Sbde# it in sync.
254221214SjkimBOOT_JDK:=@BOOT_JDK@
255221214Sjkim
256221214Sjkim# When compiling Java source to be run by the boot jdk
257221214Sjkim# use these extra flags, eg -source 6 -target 6
258221214SjkimBOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
259221214Sjkim
260221214Sjkim# Information about the build system
261221214SjkimNUM_CORES:=@NUM_CORES@
262221214SjkimMEMORY_SIZE:=@MEMORY_SIZE@
263221214Sjkim# Enable sjavac support = use a javac server,
264221214Sjkim# multi core javac compilation and dependency tracking.
265221214SjkimENABLE_SJAVAC:=@ENABLE_SJAVAC@
266221214SjkimENABLE_JAVAC_SERVER:=@ENABLE_JAVAC_SERVER@
267221214Sjkim# Store sjavac server synchronization files here, and
268221214Sjkim# the sjavac server log files.
269221214SjkimSJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
270221214Sjkim
271221214Sjkim# Number of parallel jobs to use for compilation
272221214SjkimJOBS?=@JOBS@
273216272Sjkim
274216272SjkimFREETYPE_LIBS:=@FREETYPE_LIBS@
275219469SjkimFREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
276219469SjkimFREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
277219469SjkimCUPS_CFLAGS:=@CUPS_CFLAGS@
278216272SjkimALSA_LIBS:=@ALSA_LIBS@
279238973SkibALSA_CFLAGS:=@ALSA_CFLAGS@
280238973Skib
281238973SkibPACKAGE_PATH=@PACKAGE_PATH@
282238973Skib
283216272Sjkim# Source file for cacerts
284216272SjkimCACERTS_FILE=@CACERTS_FILE@
285219469Sjkim
286219469Sjkim# Enable unlimited crypto policy
287219469SjkimUNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
288216272Sjkim
289216272SjkimGCOV_ENABLED=@GCOV_ENABLED@
290219469Sjkim
291216272Sjkim# Necessary additional compiler flags to compile X11
292238973SkibX_CFLAGS:=@X_CFLAGS@
293238973SkibX_LIBS:=@X_LIBS@
294238973Skib
295238973Skib# The lowest required version of macosx to enforce compatiblity for
296216272SjkimMACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
297216272Sjkim
298219469Sjkim# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
299219469SjkimTOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
300216272Sjkim
301216272Sjkim# Option used to tell the compiler whether to create 32- or 64-bit executables
302216272SjkimCOMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@
303238973SkibCOMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@
304238973Skib
305238973SkibCC_OUT_OPTION:=@CC_OUT_OPTION@
306238973SkibEXE_OUT_OPTION:=@EXE_OUT_OPTION@
307216272SjkimLD_OUT_OPTION:=@LD_OUT_OPTION@
308216272SjkimAR_OUT_OPTION:=@AR_OUT_OPTION@
309216272Sjkim
310220577Sjkim# Flags used for overriding the default opt setting for a C/C++ source file.
311220577SjkimC_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
312220577SjkimC_O_FLAG_HI:=@C_O_FLAG_HI@
313220577SjkimC_O_FLAG_NORM:=@C_O_FLAG_NORM@
314220577SjkimC_O_FLAG_NONE:=@C_O_FLAG_NONE@
315220577SjkimCXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
316220577SjkimCXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
317220577SjkimCXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
318220577SjkimCXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
319220577Sjkim
320220577SjkimC_FLAG_DEPS:=@C_FLAG_DEPS@
321220577SjkimCXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
322220577Sjkim
323220577SjkimDISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
324220577SjkimCFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
325220577Sjkim
326220577Sjkim# A global flag (true or false) determining if native warnings are considered errors.
327220577SjkimWARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
328220577Sjkim
329220577SjkimCFLAGS_CCACHE:=@CFLAGS_CCACHE@
330220577Sjkim
331220577Sjkim# Tools that potentially need to be cross compilation aware.
332220577SjkimCC:=@FIXPATH@ @CCACHE@ @CC@
333220577Sjkim
334220577Sjkim# CFLAGS used to compile the jdk native libraries (C-code)
335167905SnjlCFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
336216274SjkimCXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
337216274Sjkim
338216274Sjkim# CFLAGS used to compile the jdk native launchers (C-code)
339167905SnjlCFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
340220577SjkimCXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
341221178Sjkim
342167905SnjlCXX:=@FIXPATH@ @CCACHE@ @CXX@
343216274Sjkim#CXXFLAGS:=@CXXFLAGS@
344216274Sjkim
345216274SjkimCPP:=@FIXPATH@ @CPP@
346167905Snjl#CPPFLAGS:=@CPPFLAGS@
347184108Sjkim
348184108Sjkim# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
349167905SnjlLD:=@FIXPATH@ @LD@
350167905Snjl
351167905Snjl# Xcode SDK path
352167905SnjlSDKROOT:=@SDKROOT@
353118550Sphk
35434617Sphk# The linker on older SuSE distros (e.g. on SLES 10) complains with:
355221703Sjkim# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
356221703Sjkim# if feeded with a version script which contains named tags.
357238973SkibUSING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@
358238973Skib
359238973Skib# LDFLAGS used to link the jdk native libraries (C-code)
360238973SkibLDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
361238973SkibJDKLIB_LIBS:=@JDKLIB_LIBS@
362238973Skib
363238973Skib# LDFLAGS used to link the jdk native launchers (C-code)
364238973SkibLDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
365238973SkibJDKEXE_LIBS:=@JDKEXE_LIBS@
366238973Skib
367238975Skib# LDFLAGS specific to C++ linking.
368238973SkibLDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
369238973Skib
370238973Skib# Sometimes a different linker is needed for c++ libs
371238973SkibLDCXX:=@FIXPATH@ @LDCXX@
372238973Skib# The flags for linking libstdc++ linker.
373238973SkibLIBCXX:=@LIBCXX@
374238973Skib
375238973Skib# Compiler and linker flags used when building native tests
376239133SjimharrisCFLAGS_TESTLIB:=@CFLAGS_TESTLIB@
377238973SkibCXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@
378238973SkibCFLAGS_TESTEXE:=@CFLAGS_TESTEXE@
379238973SkibCXXFLAGS_TESTEXE:=@CXXFLAGS_TESTEXE@
380239133SjimharrisLDFLAGS_TESTLIB:=@LDFLAGS_TESTLIB@
381221703SjkimLDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
382221703Sjkim
383221703Sjkim# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
384221703Sjkim# build platform.
385221703SjkimBUILD_CC:=@FIXPATH@ @BUILD_CC@
386221703SjkimBUILD_LD:=@FIXPATH@ @BUILD_LD@
387221703SjkimBUILD_SYSROOT_CFLAGS:=@BUILD_SYSROOT_CFLAGS@
388221703SjkimBUILD_SYSROOT_LDFLAGS:=@BUILD_SYSROOT_LDFLAGS@
389221703Sjkim
390221703SjkimAS:=@FIXPATH@ @AS@
391221703Sjkim
392239133Sjimharris# AR is used to create a static library (is ar in unix, lib.exe in windows)
393239133SjimharrisAR:=@FIXPATH@ @AR@
394221703SjkimARFLAGS:=@ARFLAGS@
395221703Sjkim
396221703SjkimNM:=@NM@
397221703SjkimGNM:=@GNM@
398221703SjkimSTRIP:=@STRIP@
399221703Sjkim
400221703SjkimLIPO:=@LIPO@
401221703Sjkim
402221703Sjkim# Options to linker to specify a mapfile.
403221703Sjkim# (Note absence of := assignment, because we do not want to evaluate the macro body here)
404221703SjkimSET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
405221703Sjkim
406221703Sjkim# Options for C/CXX compiler to be used if linking is performed
407221703Sjkim#   using reorder file
408221703SjkimC_FLAG_REORDER:=@C_FLAG_REORDER@
409221703SjkimCXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
410221703Sjkim
411249625Smav#
412249625Smav# Options for generating debug symbols
413249625SmavENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
414249625SmavCFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
415249625SmavCXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
416249625SmavZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
417249625Smav
418249625Smav#
419249625Smav# Compress (or not) jars
420249625SmavCOMPRESS_JARS=@COMPRESS_JARS@
421249625Smav
422249625Smav# Options to linker to specify the library name.
423249625Smav# (Note absence of := assignment, because we do not want to evaluate the macro body here)
424249625SmavSET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
425249625Smav
426249625Smav# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
427249625Smav# (Note absence of := assignment, because we do not want to evaluate the macro body here)
428249625SmavSET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
429249625SmavSET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
430249625Smav
431249625Smav# Different OS:es have different ways of naming shared libraries.
432249625Smav# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
433249625Smav#    "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
434249625Smav# (Note absence of := assignment, because we do not want to evaluate the macro body here)
435249625SmavSHARED_LIBRARY=@SHARED_LIBRARY@
436249625SmavSTATIC_LIBRARY=@STATIC_LIBRARY@
437249625SmavLIBRARY_PREFIX:=@LIBRARY_PREFIX@
438249625SmavSHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
439249625SmavSTATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
440249625SmavEXE_SUFFIX:=@EXE_SUFFIX@
441249625SmavOBJ_SUFFIX:=@OBJ_SUFFIX@
442249625Smav
443249625SmavSTRIPFLAGS:=@STRIPFLAGS@
444249625Smav
445249625SmavJAVA_FLAGS:=@JAVA_FLAGS@
446249625SmavJAVA_FLAGS_BIG:=@JAVA_FLAGS_BIG@
447249625SmavJAVA_FLAGS_SMALL:=@JAVA_FLAGS_SMALL@
448249625SmavJAVA_TOOL_FLAGS_SMALL:=@JAVA_TOOL_FLAGS_SMALL@
449249625SmavSJAVAC_SERVER_JAVA_FLAGS:=@SJAVAC_SERVER_JAVA_FLAGS@
450249625Smav
451249625Smav# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk
452249625Smav# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD
453249625Smav# versions of the variables directly.
454221703SjkimJAVA_CMD:=@JAVA@
455246212SkibJAVAC_CMD:=@JAVAC@
456221703SjkimJAVAH_CMD:=@JAVAH@
457239133SjimharrisJAR_CMD:=@JAR@
458249625SmavJARSIGNER_CMD:=@JARSIGNER@
459221703SjkimSJAVAC_SERVER_JAVA_CMD:=@SJAVAC_SERVER_JAVA@
460246212Skib# These variables are meant to be used. They are defined with = instead of := to make
461221703Sjkim# it possible to override only the *_CMD variables.
462221703SjkimJAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
463221703SjkimJAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
464249625SmavJAVAC=@FIXPATH@ $(JAVAC_CMD)
465249625SmavJAVAH=@FIXPATH@ $(JAVAH_CMD)
466221703SjkimJAR=@FIXPATH@ $(JAR_CMD)
467221703SjkimJARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
468221703Sjkim# A specific java binary with specific options can be used to run
469221703Sjkim# the long running background sjavac servers and other long running tasks.
470221703SjkimSJAVAC_SERVER_JAVA=@FIXPATH@ $(SJAVAC_SERVER_JAVA_CMD) $(SJAVAC_SERVER_JAVA_FLAGS)
471249625Smav
472249625Smav# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
473249625Smav# overriding that value by using ?=.
474249625SmavJAVAC_FLAGS?=@JAVAC_FLAGS@
475249625Smav
476249625Smav# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
477221703Sjkim# Use = assignment to be able to override in bootcycle-spec.gmk
478221703SjkimINTERIM_LANGTOOLS_JAR = $(BUILDTOOLS_OUTPUTDIR)/interim_langtools.jar
479249625SmavINTERIM_LANGTOOLS_ARGS = "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR)
480249625SmavNEW_JAVAC   = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main
481249625SmavNEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javadoc.Main
482222869Sjkim
483222869Sjkim# Base flags for RC
484222869Sjkim# Guarding this against resetting value. Legacy make files include spec multiple
485222869Sjkim# times.
486222869Sjkimifndef RC_FLAGS
487222869Sjkim  RC_FLAGS:=@RC_FLAGS@
488222869Sjkimendif
489222869Sjkim
490222869Sjkim# Tools adhering to a minimal and common standard of posix compliance.
491222869SjkimAWK:=@AWK@
492222869SjkimBASENAME:=@BASENAME@
493222869SjkimCAT:=@CAT@
494222869SjkimCCACHE:=@CCACHE@
495222869Sjkim# CD is going away, but remains to cater for legacy makefiles.
496222869SjkimCD:=cd
497222869SjkimCHMOD:=@CHMOD@
498222869SjkimCODESIGN:=@CODESIGN@
499222869SjkimCOMM:=@COMM@
500222869SjkimCP:=@CP@
501222869SjkimCPIO:=@CPIO@
502222869SjkimCUT:=@CUT@
503222869SjkimDATE:=@DATE@
504222869SjkimDIFF:=@DIFF@
505221703SjkimDIRNAME:=@DIRNAME@
506221703SjkimDSYMUTIL:=@DSYMUTIL@
507221703SjkimFIND:=@FIND@
508221703SjkimFIND_DELETE:=@FIND_DELETE@
509246212SkibECHO:=@ECHO@
510246212SkibEGREP:=@EGREP@
511246212SkibFGREP:=@FGREP@
512246212SkibGREP:=@GREP@
513246212SkibHEAD:=@HEAD@
514246212SkibLS:=@LS@
515246212SkibLN:=@LN@
516246212SkibMKDIR:=@MKDIR@
517246212SkibMV:=@MV@
518246212SkibNAWK:=@NAWK@
519246212SkibNICE:=@NICE@
520246212SkibPATCH:=@PATCH@
521246212SkibPRINTF:=@PRINTF@
522221703SjkimPWD:=@THEPWDCMD@
523221703SjkimRM:=@RM@
524221703SjkimRMDIR:=@RMDIR@
525118550SphkSED:=@SED@
526118550SphkSH:=@SH@
527222866SjkimSORT:=@SORT@
528222866SjkimTAR:=@TAR@
529209103SmavTAIL:=@TAIL@
530219673SjkimTEE:=@TEE@
531209103SmavTIME:=@TIME@
532209103SmavIS_GNU_TIME:=@IS_GNU_TIME@
53334617SphkTR:=@TR@
534222866SjkimTOUCH:=@TOUCH@
535222866SjkimUNIQ:=@UNIQ@
536222866SjkimWC:=@WC@
537222866SjkimXARGS:=@XARGS@
538222866SjkimZIPEXE:=@ZIP@
539222866SjkimZIP:=@ZIP@
540160964SyarUNZIP:=@UNZIP@
54149186SmsmithMT:=@FIXPATH@ @MT@
54234617SphkRC:=@FIXPATH@ @RC@
54334617SphkDUMPBIN:=@FIXPATH@ @DUMPBIN@
544160964SyarCYGPATH:=@CYGPATH@
54534617SphkLDD:=@LDD@
54649186SmsmithOTOOL:=@OTOOL@
54749186SmsmithREADELF:=@READELF@
54834617SphkEXPR:=@EXPR@
54985835SiwasakiFILE:=@FILE@
550118987SphkHG:=@HG@
55185835SiwasakiOBJCOPY:=@OBJCOPY@
552110370SphkSETFILE:=@SETFILE@
553221703SjkimXATTR:=@XATTR@
55464031SphkJT_HOME:=@JT_HOME@
55534617SphkJTREGEXE:=@JTREGEXE@
556223426SjkimXCODEBUILD=@XCODEBUILD@
557223426SjkimFIXPATH:=@FIXPATH@
558223426Sjkim
559223426Sjkim# Build setup
560223426SjkimENABLE_JFR=@ENABLE_JFR@
561223426SjkimENABLE_INTREE_EC=@ENABLE_INTREE_EC@
562223426SjkimUSE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
563223426SjkimUSE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
564224042SjkimUSE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
565223426SjkimLIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
566223426SjkimMSVCR_DLL:=@MSVCR_DLL@
567223426SjkimMSVCP_DLL:=@MSVCP_DLL@
568223426Sjkim
569223426Sjkim####################################################
570118987Sphk#
571246212Skib# INSTALLATION
572246212Skib#
573246212Skib
574246212Skib# Common prefix for all installed files. Defaults to /usr/local,
575225069Ssilby# but /opt/myjdk is another common version.
576118987SphkINSTALL_PREFIX=@prefix@
577246212Skib
578246212Skib# Directories containing architecture-dependent files should be relative to exec_prefix
579246212SkibINSTALL_EXECPREFIX=@exec_prefix@
580222869Sjkim
581246212Skib# java,javac,javah,javap etc are installed here.
582222869SjkimINSTALL_BINDIR=@bindir@
583221703Sjkim
584246212Skib# Read only architecture-independent data
585222866SjkimINSTALL_DATADIR=@datadir@
586246212Skib
587246212Skib# Root of above.
588246212SkibINSTALL_DATAROOTDIR=@datarootdir@
589246212Skib
590246212Skib# Doc files, other than info and man.
591246212SkibINSTALL_DOCDIR=@docdir@
592246212Skib
593246212Skib# Html documentation
594246212SkibINSTALL_HTMLDIR=@htmldir@
595246212Skib
596246212Skib# Installing C header files, JNI headers for example.
597246212SkibINSTALL_INCLUDEDIR=@includedir@
598246212Skib
599246212Skib# Installing library files....
600222866SjkimINSTALL_INCLUDEDIR=@libdir@
601222866Sjkim
602222866Sjkim# Executables that other programs run.
603222884SjkimINSTALL_LIBEXECDIR=@libexecdir@
604222866Sjkim
605222866Sjkim# Locale-dependent but architecture-independent data, such as message catalogs.
606219461SjkimINSTALL_LOCALEDIR=@localedir@
607222866Sjkim
608222866Sjkim# Modifiable single-machine data
60958377SphkINSTALL_LOCALSTATEDIR=@localstatedir@
61033690Sphk
6114Srgrimes# Man pages
612221703SjkimINSTALL_MANDIR=@mandir@
6134Srgrimes
614167905Snjl# Modifiable architecture-independent data.
615167905SnjlINSTALL_SHAREDSTATEDIR=@sharedstatedir@
616167905Snjl
617167905Snjl# Read-only single-machine data
618167905SnjlINSTALL_SYSCONFDIR=@sysconfdir@
619167905Snjl
620167905Snjl####################################################
621167905Snjl#
622167905Snjl# Libraries
623167905Snjl#
624167905Snjl
625167905SnjlUSE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
626167905SnjlLCMS_CFLAGS:=@LCMS_CFLAGS@
627167905SnjlLCMS_LIBS:=@LCMS_LIBS@
628167905Snjl
629167905SnjlUSE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
630167905SnjlPNG_LIBS:=@PNG_LIBS@
631167905SnjlPNG_CFLAGS:=@PNG_CFLAGS@
632167905Snjl
633167905Snjl
634167905Snjl####################################################
635167905Snjl#
636167905Snjl# Misc
637167905Snjl#
638167905Snjl
639167905Snjl# Name of Service Agent library
640167905SnjlSALIB_NAME=@SALIB_NAME@
641167905Snjl
642167905SnjlINCLUDE_SA=@INCLUDE_SA@
643167905Snjl
644167905SnjlOS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
645167905SnjlOS_VERSION_MINOR:=@OS_VERSION_MINOR@
646167905SnjlOS_VERSION_MICRO:=@OS_VERSION_MICRO@
647167905Snjl
648167905Snjl# Images directory definitions
649167905SnjlJDK_IMAGE_SUBDIR:=jdk
650167905SnjlJRE_IMAGE_SUBDIR:=jre
651167905Snjl
652167905Snjl# Colon left out to be able to override output dir for bootcycle-images
653167905SnjlJDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
654167905SnjlJRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
655167905Snjl
656167905Snjl# Test image, as above
657167905SnjlTEST_IMAGE_SUBDIR:=test
658167905SnjlTEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
659216274Sjkim
660167905Snjl# Symbols image
661167905SnjlSYMBOLS_IMAGE_SUBDIR:=symbols
662167905SnjlSYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
663184102Sjkim
664167905Snjl# Macosx bundles directory definitions
665167905SnjlJDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents
666167905SnjlJRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents
667167905SnjlJDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
668167905SnjlJRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
669167905Snjl
670167905Snjl# This macro is called to allow inclusion of closed source counterparts.
671220433Sjkim# Unless overridden in closed sources, it expands to nothing.
672216276Sjkim# Usage: This function is called in an open makefile, with the following
673216276Sjkim# arguments:
674219473Sjkim# $1 the name of the repo, or empty if the top-level repo.
675167905Snjl# $2 the name of the makefile
676167905Snjldefine IncludeCustomExtension
677167905Snjlendef
678220433Sjkim
679220433Sjkim# Include the custom-spec.gmk file if it exists
680222866Sjkim-include $(dir @SPEC@)/custom-spec.gmk
681222866Sjkim