spec.gmk.in revision 1829:5a7e1695ac8c
152400Sbillf#
252400Sbillf# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
352400Sbillf# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
452400Sbillf#
552400Sbillf# This code is free software; you can redistribute it and/or modify it
652400Sbillf# under the terms of the GNU General Public License version 2 only, as
752400Sbillf# published by the Free Software Foundation.  Oracle designates this
8110377Sdougb# particular file as subject to the "Classpath" exception as provided
973651Sdougb# by Oracle in the LICENSE file that accompanied this code.
1052400Sbillf#
1152495Sbillf# This code is distributed in the hope that it will be useful, but WITHOUT
1252400Sbillf# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1368507Sdougb# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1452400Sbillf# version 2 for more details (a copy is included in the LICENSE file that
1552400Sbillf# accompanied this code).
1652533Sbillf#
1752400Sbillf# You should have received a copy of the GNU General Public License version
1891193Sdougb# 2 along with this work; if not, write to the Free Software Foundation,
1967949Sdougb# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2052400Sbillf#
2152400Sbillf# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2252400Sbillf# or visit www.oracle.com if you need additional information or have any
2352400Sbillf# questions.
2452400Sbillf#
2552400Sbillf
2652400Sbillf# Configured @DATE_WHEN_CONFIGURED@ to build
2767949Sdougb# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
2891193Sdougb#   (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
2991193Sdougb# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
3052400Sbillf#   (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
3152400Sbillf# using 'configure @CONFIGURE_COMMAND_LINE@'
3252400Sbillf
3352400Sbillf# The command line given to configure.
3452400SbillfCONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
3567949Sdougb
3652400Sbillf# A self-referential reference to this file.
3752400SbillfSPEC:=@SPEC@
3852400Sbillf
3952400Sbillf# SPACE is defined in MakeBase.gmk, but it is also used in := rules here for some
4052400Sbillf# toolchains, and is needed if MakeBase.gmk is not included before this file.
4152400SbillfX:=
4252400SbillfSPACE:=$(X) $(X)
4367859Sdougb
4467949Sdougb# What make to use for main processing, after bootstrapping top-level Makefile.
4552400SbillfMAKE := @MAKE@
4652400Sbillf
4758910Salfred# The default make arguments
4858910SalfredMAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \
4958910Salfred    MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" LOG_LEVEL=$(LOG_LEVEL)
5067850Sdougb
5167850SdougbOUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@
5267850SdougbOUTPUT_SYNC:=@OUTPUT_SYNC@
5367850Sdougb
5467850Sdougb# Override the shell with bash
5567850SdougbBASH:=@BASH@
5667850SdougbBASH_ARGS:=@BASH_ARGS@
5767850SdougbSHELL:=$(BASH) $(BASH_ARGS)
5867850Sdougb
5967850Sdougb# The "human readable" name of this configuration
6067850SdougbCONF_NAME:=@CONF_NAME@
6167850Sdougb
6267949Sdougb# The built jdk will run in this target system.
6367850SdougbOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
6467850SdougbOPENJDK_TARGET_OS_TYPE:=@OPENJDK_TARGET_OS_TYPE@
6567850SdougbOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
6667850Sdougb
6767850SdougbOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
6867850SdougbOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
6967850SdougbOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
7067850SdougbOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
7167859Sdougb
7267859SdougbCOMPILE_TYPE:=@COMPILE_TYPE@
7358910Salfred
7467850Sdougb# Legacy support
7567850SdougbOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
7667850SdougbOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
7767850SdougbOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
7867850SdougbOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
7967850SdougbOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
8067859SdougbOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
8167850SdougbOPENJDK_TARGET_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@
8267859Sdougb
8367850Sdougb# We are building on this build system.
8467850Sdougb# When not cross-compiling, it is the same as the target.
8567850SdougbOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
8667850SdougbOPENJDK_BUILD_OS_TYPE:=@OPENJDK_BUILD_OS_TYPE@
8767859SdougbOPENJDK_BUILD_OS_ENV:=@OPENJDK_BUILD_OS_ENV@
8867850Sdougb
8967850SdougbOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
9067850SdougbOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
9167850SdougbOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
9267850SdougbOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
9367850Sdougb
9467850Sdougb# Legacy OS values for use in release file.
9567850SdougbREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
9667850SdougbREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
9767850Sdougb
9867850Sdougb@SET_OPENJDK@
9967850SdougbLIBM:=@LIBM@
10067850SdougbLIBDL:=@LIBDL@
10167850Sdougb
10258910Salfred# colon or semicolon
10358910SalfredPATH_SEP:=@PATH_SEP@
10458910Salfred
10558910Salfred# Save the original path before replacing it with the Visual Studio tools
10658910SalfredORIGINAL_PATH:=@ORIGINAL_PATH@
10758910Salfredifeq ($(OPENJDK_TARGET_OS), windows)
10867850Sdougb  # On Windows, the Visual Studio toolchain needs the PATH to be adjusted
10958910Salfred  # to include Visual Studio tools (this needs to be in cygwin/msys style).
11077323Sdougb  export PATH:=@VS_PATH@
11177323Sdougbendif
11267949Sdougb
11367850SdougbSYSROOT_CFLAGS := @SYSROOT_CFLAGS@
11490564SdougbSYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@
115109993Sdillon
116109993Sdillon# The top-level directory of the forest (SRC_ROOT is a traditional alias)
117109993SdillonTOPDIR:=@TOPDIR@
118109993Sdillon# These two versions of TOPDIR are used in string comparisons
119109993SdillonORIGINAL_TOPDIR:=@ORIGINAL_TOPDIR@
120110377SdougbCANONICAL_TOPDIR:=@CANONICAL_TOPDIR@
121109993SdillonSRC_ROOT:=@TOPDIR@
122109993Sdillon
12367850SdougbOUTPUT_ROOT:=@OUTPUT_ROOT@
12467850SdougbJDK_TOPDIR:=@JDK_TOPDIR@
125109993SdillonLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
12667850SdougbCORBA_TOPDIR:=@CORBA_TOPDIR@
12791193SdougbJAXP_TOPDIR:=@JAXP_TOPDIR@
12867949SdougbJAXWS_TOPDIR:=@JAXWS_TOPDIR@
12967949SdougbHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
13067949SdougbNASHORN_TOPDIR:=@NASHORN_TOPDIR@
13167949SdougbCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
13267949Sdougb
13368507Sdougb# New (JEP-223) version information
13467949Sdougb
13567949Sdougb## Building blocks of the version string
13667949Sdougb# First three version numbers, with well-specified meanings (numerical)
13767949SdougbVERSION_MAJOR := @VERSION_MAJOR@
13867949SdougbVERSION_MINOR := @VERSION_MINOR@
13967949SdougbVERSION_SECURITY := @VERSION_SECURITY@
14067949Sdougb# Optional fourth element for use by OpenJDK consumers (numerical)
14167949SdougbVERSION_PATCH := @VERSION_PATCH@
14267949Sdougb# The pre-release identifier (string)
14367949SdougbVERSION_PRE := @VERSION_PRE@
14467949Sdougb# The build number (numerical)
14567949SdougbVERSION_BUILD := @VERSION_BUILD@
14667850Sdougb# Optional build information (string)
14767859SdougbVERSION_OPT := @VERSION_OPT@
14867850Sdougb
14967850Sdougb## Composite variables
15067850Sdougb# The version number as a dot separated sequence of numbers, e.g. 9.0.1
15167850SdougbVERSION_NUMBER := @VERSION_NUMBER@
15277326Sdougb# VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
153109993SdillonVERSION_NUMBER_FOUR_POSITIONS := @VERSION_NUMBER_FOUR_POSITIONS@
15467850Sdougb# The complete version string, with additional build information
15567850SdougbVERSION_STRING := @VERSION_STRING@
15667850Sdougb# The short version string, without trailing zeroes and just PRE, if present.
15767850SdougbVERSION_SHORT := @VERSION_SHORT@
15867850Sdougb# The Java specification version. It should be equal to version number.
15967859SdougbVERSION_SPECIFICATION := @VERSION_NUMBER@
16067859Sdougb# A GA version is defined by the PRE string being empty. Rather than testing for
16167859Sdougb# that, this variable defines it with true/false.
16267850SdougbVERSION_IS_GA := @VERSION_IS_GA@
16367850Sdougb
16467850Sdougb# Convenience CFLAGS settings for passing version information into native programs.
16567850SdougbVERSION_CFLAGS := \
16667850Sdougb    -DVERSION_MAJOR=$(VERSION_MAJOR) \
16767850Sdougb    -DVERSION_MINOR=$(VERSION_MINOR) \
16867850Sdougb    -DVERSION_SECURITY=$(VERSION_SECURITY) \
16967850Sdougb    -DVERSION_PATCH=$(VERSION_PATCH) \
17067850Sdougb    -DVERSION_PRE='"$(VERSION_PRE)"' \
17167850Sdougb    -DVERSION_BUILD=$(VERSION_BUILD) \
17267850Sdougb    -DVERSION_OPT='"$(VERSION_OPT)"' \
17367850Sdougb    -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \
17467850Sdougb    -DVERSION_STRING='"$(VERSION_STRING)"' \
17567850Sdougb    -DVERSION_SHORT='"$(VERSION_SHORT)"' \
17667850Sdougb    -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \
17767850Sdougb    #
17867850Sdougb
17967850Sdougb# Platform naming variables
18067850SdougbLAUNCHER_NAME:=@LAUNCHER_NAME@
18167850SdougbPRODUCT_NAME:=@PRODUCT_NAME@
18267850SdougbPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
18367850SdougbJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
18467850SdougbCOMPANY_NAME:=@COMPANY_NAME@
18567850SdougbMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
18667850SdougbMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
18767850Sdougb
18867850Sdougb# Different naming strings generated from the above information.
18967850SdougbRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
19067850Sdougb
19167850Sdougb# How to compile the code: release, fastdebug or slowdebug
19267850SdougbDEBUG_LEVEL:=@DEBUG_LEVEL@
19367850Sdougb
19467850Sdougb# This is the JDK variant to build.
19567850Sdougb# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
19667850SdougbJDK_VARIANT:=@JDK_VARIANT@
19767850Sdougb
19867850Sdougb# Should we compile support for running with a graphical UI? (ie headful)
19967850Sdougb# Should we compile support for running without? (ie headless)
20067850SdougbSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
20167850SdougbSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
20267850Sdougb# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
20367850Sdougb@BUILD_HEADLESS@
20467850Sdougb
20567859Sdougb# These are the libjvms that we want to build.
20667850Sdougb# The java launcher uses the default.
20767850Sdougb# The others can be selected by specifying -client -server -minimal1 -zero or -zeroshark
20867850Sdougb# on the java launcher command line.
20967850SdougbJVM_VARIANTS:=@JVM_VARIANTS@
21067850SdougbJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
21167850SdougbJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
21267850SdougbJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
21367850SdougbJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
21458910SalfredJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
21558910SalfredJVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
21697960Sdougb
21797960Sdougb# Universal binaries on macosx
21897960SdougbMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
21997960Sdougb
22097960Sdougb# Legacy setting: -debug or -fastdebug
22197960Sdougb# Still used in version string...
22252400SbillfBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
22352400Sbillf
22452400Sbillf# JDK_OUTPUTDIR specifies where a working jvm is built.
22552400Sbillf# You can run $(JDK_OUTPUTDIR)/bin/java
22673651Sdougb# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
22773651Sdougb# yet the same as a default installation.
22873651Sdougb#
22973651Sdougb# When you run "make install" it will create the standardized
23073651Sdougb# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
23173651Sdougb# Then it will copy the contents of the jdk into the installation
23252400Sbillf# directory.
23352400Sbillf
23467949SdougbBUILD_OUTPUT:=@BUILD_OUTPUT@
23552400Sbillf# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
23652400SbillfSUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/support
23752400SbillfBUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
23852400Sbillf
23952400SbillfHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
24091193SdougbJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
24152400SbillfIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
24252400SbillfTESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
24352400SbillfMAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
244110377Sdougb# This does not get overridden in a bootcycle build
24552400SbillfCONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
24652400Sbillf
24752400SbillfHOTSPOT_DIST=@HOTSPOT_DIST@
24852400Sbillf
24952400SbillfBUILD_HOTSPOT=@BUILD_HOTSPOT@
25052400Sbillf
25152400Sbillf# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
25252400Sbillf# it in sync.
25352400SbillfBOOT_JDK:=@BOOT_JDK@
25452400Sbillf
25552400Sbillf# When compiling Java source to be run by the boot jdk
25652400Sbillf# use these extra flags, eg -source 6 -target 6
25752400SbillfBOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
25852400Sbillf
25952400Sbillf# Information about the build system
26052400SbillfNUM_CORES:=@NUM_CORES@
26152400SbillfMEMORY_SIZE:=@MEMORY_SIZE@
26252400Sbillf# Enable sjavac support = use a javac server,
26352400Sbillf# multi core javac compilation and dependency tracking.
26452400SbillfENABLE_SJAVAC:=@ENABLE_SJAVAC@
26552400SbillfENABLE_JAVAC_SERVER:=@ENABLE_JAVAC_SERVER@
26667949Sdougb# Store sjavac server synchronization files here, and
26767949Sdougb# the sjavac server log files.
26867949SdougbSJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
26996045Sdougb
27096045Sdougb# Number of parallel jobs to use for compilation
27196045SdougbJOBS?=@JOBS@
27291193SdougbTEST_JOBS?=@TEST_JOBS@
27391193Sdougb
27496045Sdougb# Default make target
27596045SdougbDEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
27691193Sdougb
27752400SbillfFREETYPE_LIBS:=@FREETYPE_LIBS@
27852400SbillfFREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
27952400SbillfFREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
28052400SbillfCUPS_CFLAGS:=@CUPS_CFLAGS@
28152400SbillfALSA_LIBS:=@ALSA_LIBS@
28252400SbillfALSA_CFLAGS:=@ALSA_CFLAGS@
28352400SbillfLIBFFI_LIBS:=@LIBFFI_LIBS@
28452400SbillfLIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
28552400Sbillf
28652400SbillfPACKAGE_PATH=@PACKAGE_PATH@
28752400Sbillf
28852400Sbillf# Source file for cacerts
28952400SbillfCACERTS_FILE=@CACERTS_FILE@
29052400Sbillf
29152400Sbillf# Enable unlimited crypto policy
29267949SdougbUNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
29367949Sdougb
29467949SdougbGCOV_ENABLED=@GCOV_ENABLED@
29552400Sbillf
29652400Sbillf# Necessary additional compiler flags to compile X11
29752400SbillfX_CFLAGS:=@X_CFLAGS@
29852400SbillfX_LIBS:=@X_LIBS@
29952400Sbillf
30052400Sbillf# The lowest required version of macosx to enforce compatiblity for
30152400SbillfMACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
30252400Sbillf
30352400Sbillf# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
30452400SbillfTOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
30552400SbillfTOOLCHAIN_VERSION := @TOOLCHAIN_VERSION@
30652400Sbillf
30752400Sbillf# Option used to tell the compiler whether to create 32- or 64-bit executables
30864467SbrianCOMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@
30952400SbillfCOMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@
31064467Sbrian
31167859Sdougb# Option used to pass a command file to the compiler
31252400SbillfCOMPILER_COMMAND_FILE_FLAG:=@COMPILER_COMMAND_FILE_FLAG@
31352400Sbillf
31464467SbrianCC_OUT_OPTION:=@CC_OUT_OPTION@
31564467SbrianEXE_OUT_OPTION:=@EXE_OUT_OPTION@
31652400SbillfLD_OUT_OPTION:=@LD_OUT_OPTION@
31752400SbillfAR_OUT_OPTION:=@AR_OUT_OPTION@
31852400Sbillf
31952400Sbillf# Flags used for overriding the default opt setting for a C/C++ source file.
32052400SbillfC_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
32167859SdougbC_O_FLAG_HI:=@C_O_FLAG_HI@
32267859SdougbC_O_FLAG_NORM:=@C_O_FLAG_NORM@
32367859SdougbC_O_FLAG_NONE:=@C_O_FLAG_NONE@
32452400SbillfCXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
32558910SalfredCXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
32652400SbillfCXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
32752400SbillfCXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
32858910Salfred
32964467SbrianC_FLAG_DEPS:=@C_FLAG_DEPS@
33064467SbrianCXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
33164467Sbrian
33258910SalfredDISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
33364467SbrianCFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
33464467Sbrian
33564467Sbrian# A global flag (true or false) determining if native warnings are considered errors.
33664467SbrianWARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
33764467Sbrian
33864467SbrianCFLAGS_CCACHE:=@CFLAGS_CCACHE@
33958910Salfred
34052400Sbillf# Tools that potentially need to be cross compilation aware.
34160420SbsdCC:=@FIXPATH@ @CCACHE@ @ICECC@ @CC@
34252400Sbillf
34352400Sbillf# CFLAGS used to compile the jdk native libraries (C-code)
34458910SalfredCFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
34558910SalfredCXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
34658910Salfred
34752400Sbillf# CFLAGS used to compile the jdk native launchers (C-code)
34852400SbillfCFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
34958910SalfredCXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
35052400Sbillf
35152400SbillfCXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
35252400Sbillf#CXXFLAGS:=@CXXFLAGS@
35352400Sbillf
35452400SbillfCPP:=@FIXPATH@ @CPP@
35552400Sbillf#CPPFLAGS:=@CPPFLAGS@
35652400Sbillf
35752400Sbillf# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
35852400SbillfLD:=@FIXPATH@ @LD@
35952400Sbillf
36052400Sbillf# Xcode SDK path
36152400SbillfSDKROOT:=@SDKROOT@
36252400Sbillf
36352400Sbillf# The linker on older SuSE distros (e.g. on SLES 10) complains with:
36452400Sbillf# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
36552400Sbillf# if feeded with a version script which contains named tags.
36652400SbillfUSING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@
36752400Sbillf
36852400Sbillf# LDFLAGS used to link the jdk native libraries (C-code)
36952400SbillfLDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
37052400SbillfJDKLIB_LIBS:=@JDKLIB_LIBS@
37152400Sbillf
37296045Sdougb# LDFLAGS used to link the jdk native launchers (C-code)
37396045SdougbLDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
37496045SdougbJDKEXE_LIBS:=@JDKEXE_LIBS@
375110377Sdougb
37696045Sdougb# LDFLAGS specific to C++ linking.
37796045SdougbLDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
37896045Sdougb
37996045Sdougb# Sometimes a different linker is needed for c++ libs
38096045SdougbLDCXX:=@FIXPATH@ @LDCXX@
38196045Sdougb# The flags for linking libstdc++ linker.
38296045SdougbLIBCXX:=@LIBCXX@
38396045Sdougb
38496045Sdougb# Compiler and linker flags used when building native tests
38596045SdougbCFLAGS_TESTLIB:=@CFLAGS_TESTLIB@
38696045SdougbCXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@
38796045SdougbCFLAGS_TESTEXE:=@CFLAGS_TESTEXE@
38897380SdougbCXXFLAGS_TESTEXE:=@CXXFLAGS_TESTEXE@
38997380SdougbLDFLAGS_TESTLIB:=@LDFLAGS_TESTLIB@
39097380SdougbLDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
39196045Sdougb
39296045Sdougb# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
39396045Sdougb# build platform.
39496045SdougbBUILD_CC:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CC@
39596045SdougbBUILD_CXX:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CXX@
39673651SdougbBUILD_LD:=@FIXPATH@ @BUILD_LD@
39773651SdougbBUILD_LDCXX:=@FIXPATH@ @BUILD_LDCXX@
39873651SdougbBUILD_AS:=@FIXPATH@ @BUILD_AS@
39973651SdougbBUILD_AR:=@FIXPATH@ @BUILD_AR@
40099152SdougbBUILD_NM:=@FIXPATH@ @BUILD_NM@
401101362SdougbBUILD_SYSROOT_CFLAGS:=@BUILD_SYSROOT_CFLAGS@
402101362SdougbBUILD_SYSROOT_LDFLAGS:=@BUILD_SYSROOT_LDFLAGS@
403101362Sdougb
40499152SdougbAS:=@FIXPATH@ @AS@
40599152Sdougb
40652400Sbillf# AR is used to create a static library (is ar in unix, lib.exe in windows)
40752400SbillfAR:=@FIXPATH@ @AR@
40852400SbillfARFLAGS:=@ARFLAGS@
40952400Sbillf
41052400SbillfNM:=@NM@
41152400SbillfGNM:=@GNM@
41252400SbillfSTRIP:=@STRIP@
41352400Sbillf
41452400SbillfLIPO:=@LIPO@
41567859Sdougb
41652400Sbillf# Options to linker to specify a mapfile.
41752400Sbillf# (Note absence of := assignment, because we do not want to evaluate the macro body here)
41852400SbillfSET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
41952400Sbillf
42052400Sbillf# Options for C/CXX compiler to be used if linking is performed
42152400Sbillf#   using reorder file
42252400SbillfC_FLAG_REORDER:=@C_FLAG_REORDER@
42352400SbillfCXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
42452400Sbillf
42552400Sbillf#
42667859Sdougb# Options for generating debug symbols
42767859SdougbENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
42867859SdougbCFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
42967859SdougbCXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
43067859SdougbZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
43167859SdougbNATIVE_DEBUG_SYMBOLS:=@NATIVE_DEBUG_SYMBOLS@
43267859SdougbDEBUG_BINARIES:=@DEBUG_BINARIES@
43367859SdougbSTRIP_POLICY:=@STRIP_POLICY@
43499152Sdougb
43567859Sdougb#
43652400Sbillf# Compress (or not) jars
43767859SdougbCOMPRESS_JARS=@COMPRESS_JARS@
43867859Sdougb
43967859Sdougb# Options to linker to specify the library name.
44067859Sdougb# (Note absence of := assignment, because we do not want to evaluate the macro body here)
44167859SdougbSET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
44267859Sdougb
44367859SdougbSHARED_LIBRARY_FLAGS=@SHARED_LIBRARY_FLAGS@
44467859Sdougb
44567859Sdougb# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
44667859Sdougb# (Note absence of := assignment, because we do not want to evaluate the macro body here)
44767859SdougbSET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
44867859SdougbSET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
44967859Sdougb
45067859Sdougb# Different OS:es have different ways of naming shared libraries.
45167859Sdougb# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
45267859Sdougb#    "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
45367859Sdougb# (Note absence of := assignment, because we do not want to evaluate the macro body here)
45467859SdougbSHARED_LIBRARY=@SHARED_LIBRARY@
45567859SdougbSTATIC_LIBRARY=@STATIC_LIBRARY@
45667859SdougbLIBRARY_PREFIX:=@LIBRARY_PREFIX@
45752400SbillfSHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
45877323SdougbSTATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
45977323SdougbEXE_SUFFIX:=@EXE_SUFFIX@
46052400SbillfOBJ_SUFFIX:=@OBJ_SUFFIX@
46152400SbillfSTATIC_BUILD:=@STATIC_BUILD@
46252400Sbillf
46352400SbillfSTRIPFLAGS:=@STRIPFLAGS@
46452400Sbillf
46552400SbillfJAVA_FLAGS:=@JAVA_FLAGS@
46652400SbillfJAVA_FLAGS_BIG:=@JAVA_FLAGS_BIG@
46752400SbillfJAVA_FLAGS_SMALL:=@JAVA_FLAGS_SMALL@
46852400SbillfJAVA_FLAGS_JAVAC:=@JAVA_FLAGS_JAVAC@
46952400SbillfJAVA_TOOL_FLAGS_SMALL:=@JAVA_TOOL_FLAGS_SMALL@
47052400SbillfSJAVAC_SERVER_JAVA_FLAGS:=@SJAVAC_SERVER_JAVA_FLAGS@
47152400Sbillf
47252400Sbillf# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk
47352400Sbillf# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD
47452400Sbillf# versions of the variables directly.
47552400SbillfJAVA_CMD:=@JAVA@
47652400SbillfJAVAC_CMD:=@JAVAC@
47752400SbillfJAVAH_CMD:=@JAVAH@
47852400SbillfJAR_CMD:=@JAR@
47952400SbillfJARSIGNER_CMD:=@JARSIGNER@
48052400SbillfSJAVAC_SERVER_JAVA_CMD:=@SJAVAC_SERVER_JAVA@
48152400Sbillf# These variables are meant to be used. They are defined with = instead of := to make
48252400Sbillf# it possible to override only the *_CMD variables.
48352400SbillfJAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
48452400SbillfJAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
48552400SbillfJAVA_JAVAC=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_JAVAC) $(JAVA_FLAGS)
48652400SbillfJAVAC=@FIXPATH@ $(JAVAC_CMD)
48797960SdougbJAVAH=@FIXPATH@ $(JAVAH_CMD)
48852400SbillfJAR=@FIXPATH@ $(JAR_CMD)
48952400SbillfJARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
49052400Sbillf# A specific java binary with specific options can be used to run
49191193Sdougb# the long running background sjavac servers and other long running tasks.
49291193SdougbSJAVAC_SERVER_JAVA=@FIXPATH@ @FIXPATH_DETACH_FLAG@ $(SJAVAC_SERVER_JAVA_CMD) \
49391193Sdougb    $(SJAVAC_SERVER_JAVA_FLAGS)
49491193Sdougb
49591193Sdougb# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
49691193Sdougb# overriding that value by using ?=.
49768507SdougbJAVAC_FLAGS?=@JAVAC_FLAGS@
49891193Sdougb
49991193Sdougb# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
50091193Sdougb# Use = assignment to be able to override in bootcycle-spec.gmk
50191193SdougbINTERIM_LANGTOOLS_JAR = $(BUILDTOOLS_OUTPUTDIR)/interim_langtools.jar
50291193SdougbINTERIM_LANGTOOLS_ARGS = "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR)
503105705SphkNEW_JAVAC   = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main
50491193SdougbNEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javadoc.Main
50591193Sdougb
50691193Sdougb# Base flags for RC
50791193Sdougb# Guarding this against resetting value. Legacy make files include spec multiple
50891193Sdougb# times.
50991193Sdougbifndef RC_FLAGS
51091193Sdougb  RC_FLAGS:=@RC_FLAGS@
51191193Sdougbendif
51291193Sdougb
51391193Sdougb# Tools adhering to a minimal and common standard of posix compliance.
51491193SdougbAWK:=@AWK@
51591193SdougbBASENAME:=@BASENAME@
51691193SdougbCAT:=@CAT@
51791193SdougbCCACHE:=@CCACHE@
51891193Sdougb# CD is going away, but remains to cater for legacy makefiles.
51991193SdougbCD:=cd
52091193SdougbCHMOD:=@CHMOD@
52152400SbillfCODESIGN:=@CODESIGN@
52277323SdougbCOMM:=@COMM@
52377323SdougbCP:=@CP@
52477323SdougbCPIO:=@CPIO@
52567949SdougbCUT:=@CUT@
52667949SdougbDATE:=@DATE@
52767949SdougbDIFF:=@DIFF@
52867949SdougbDIRNAME:=@DIRNAME@
52967949SdougbDSYMUTIL:=@DSYMUTIL@
53067949SdougbFIND:=@FIND@
53167949SdougbFIND_DELETE:=@FIND_DELETE@
53267949SdougbECHO:=@ECHO@
53367949SdougbEGREP:=@EGREP@
53467949SdougbFGREP:=@FGREP@
53597960SdougbGREP:=@GREP@
536101348SdougbHEAD:=@HEAD@
53767949SdougbLS:=@LS@
53897960SdougbLN:=@LN@
53967949SdougbMKDIR:=@MKDIR@
54067949SdougbMV:=@MV@
54167949SdougbNAWK:=@NAWK@
54252534SbillfNICE:=@NICE@
54352534SbillfPATCH:=@PATCH@
54452534SbillfPRINTF:=@PRINTF@
54596045SdougbPWD:=@THEPWDCMD@
54652534SbillfRM:=@RM@
54752534SbillfRMDIR:=@RMDIR@
54852534SbillfSED:=@SED@
54965115SbenSH:=@SH@
55068507SdougbSORT:=@SORT@
55191193SdougbTAR:=@TAR@
55265115SbenTAIL:=@TAIL@
55365115SbenTEE:=@TEE@
55452400SbillfTIME:=@TIME@
55552400SbillfIS_GNU_TIME:=@IS_GNU_TIME@
55652400SbillfTR:=@TR@
55777478SdougbTOUCH:=@TOUCH@
55877478SdougbUNIQ:=@UNIQ@
55977478SdougbWC:=@WC@
56077478SdougbXARGS:=@XARGS@
56191193SdougbZIPEXE:=@ZIP@
56277478SdougbZIP:=@ZIP@
56394196SdougbUNZIP:=@UNZIP@
56496045SdougbMT:=@FIXPATH@ @MT@
56594196SdougbRC:=@FIXPATH@ @RC@
56652400SbillfDUMPBIN:=@FIXPATH@ @DUMPBIN@
56752400SbillfCYGPATH:=@CYGPATH@
56898084SdougbLDD:=@LDD@
56998084SdougbOTOOL:=@OTOOL@
57052400SbillfREADELF:=@READELF@
57198084SdougbEXPR:=@EXPR@
57298084SdougbFILE:=@FILE@
57352400SbillfHG:=@HG@
57477335SdougbOBJCOPY:=@OBJCOPY@
57552400SbillfSETFILE:=@SETFILE@
57652400SbillfXATTR:=@XATTR@
57798084SdougbJT_HOME:=@JT_HOME@
57898084SdougbJTREGEXE:=@JTREGEXE@
57998084SdougbXCODEBUILD=@XCODEBUILD@
58098084SdougbFIXPATH:=@FIXPATH@
58198084Sdougb
58252400Sbillf# Build setup
58398084SdougbENABLE_JFR=@ENABLE_JFR@
58498084SdougbENABLE_INTREE_EC=@ENABLE_INTREE_EC@
58598084SdougbUSE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
58698084SdougbUSE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
58797960SdougbUSE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
58898084SdougbLIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
58998084SdougbMSVCR_DLL:=@MSVCR_DLL@
59098084SdougbMSVCP_DLL:=@MSVCP_DLL@
59198084Sdougb
59252400Sbillf####################################################
59352400Sbillf#
59452400Sbillf# INSTALLATION
59598084Sdougb#
59652400Sbillf
59798084Sdougb# Common prefix for all installed files. Defaults to /usr/local,
59898084Sdougb# but /opt/myjdk is another common version.
59967949SdougbINSTALL_PREFIX=@prefix@
60052400Sbillf
60167949Sdougb# Directories containing architecture-dependent files should be relative to exec_prefix
60252400SbillfINSTALL_EXECPREFIX=@exec_prefix@
60367949Sdougb
60467949Sdougb# java,javac,javah,javap etc are installed here.
60567949SdougbINSTALL_BINDIR=@bindir@
60667949Sdougb
60767949Sdougb# Read only architecture-independent data
60867949SdougbINSTALL_DATADIR=@datadir@
60967949Sdougb
61067949Sdougb# Root of above.
61167949SdougbINSTALL_DATAROOTDIR=@datarootdir@
61252400Sbillf
61352400Sbillf# Doc files, other than info and man.
61467859SdougbINSTALL_DOCDIR=@docdir@
61567859Sdougb
61667859Sdougb# Html documentation
61752400SbillfINSTALL_HTMLDIR=@htmldir@
61852400Sbillf
61952400Sbillf# Installing C header files, JNI headers for example.
62052400SbillfINSTALL_INCLUDEDIR=@includedir@
62152400Sbillf
62252400Sbillf# Installing library files....
62352400SbillfINSTALL_INCLUDEDIR=@libdir@
62452400Sbillf
62552400Sbillf# Executables that other programs run.
62652400SbillfINSTALL_LIBEXECDIR=@libexecdir@
62752400Sbillf
62852400Sbillf# Locale-dependent but architecture-independent data, such as message catalogs.
62952400SbillfINSTALL_LOCALEDIR=@localedir@
63052400Sbillf
63198084Sdougb# Modifiable single-machine data
63252400SbillfINSTALL_LOCALSTATEDIR=@localstatedir@
63352400Sbillf
63478490Sdougb# Man pages
63578490SdougbINSTALL_MANDIR=@mandir@
63691193Sdougb
63778490Sdougb# Modifiable architecture-independent data.
63878490SdougbINSTALL_SHAREDSTATEDIR=@sharedstatedir@
63998084Sdougb
64098084Sdougb# Read-only single-machine data
64198084SdougbINSTALL_SYSCONFDIR=@sysconfdir@
64298084Sdougb
64398084Sdougb####################################################
64498084Sdougb#
64598084Sdougb# Libraries
64698084Sdougb#
64752400Sbillf
64852400SbillfUSE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
64952400SbillfLCMS_CFLAGS:=@LCMS_CFLAGS@
65052400SbillfLCMS_LIBS:=@LCMS_LIBS@
65167949Sdougb
65252400SbillfUSE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
65352400SbillfPNG_LIBS:=@PNG_LIBS@
65452400SbillfPNG_CFLAGS:=@PNG_CFLAGS@
65552400Sbillf
65652400Sbillf
65752400Sbillf####################################################
65867949Sdougb#
65998084Sdougb# Misc
66067949Sdougb#
66152400Sbillf
66252400SbillfINCLUDE_SA=@INCLUDE_SA@
66398084Sdougb
66452400SbillfOS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
66552400SbillfOS_VERSION_MINOR:=@OS_VERSION_MINOR@
66652400SbillfOS_VERSION_MICRO:=@OS_VERSION_MICRO@
66764625Sgshapiro
66852400Sbillf# Images directory definitions
66952400SbillfJDK_IMAGE_SUBDIR:=jdk
67052400SbillfJRE_IMAGE_SUBDIR:=jre
67152400Sbillf
67252400Sbillf# Colon left out to be able to override output dir for bootcycle-images
67352400SbillfJDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
67478490SdougbJRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
67552400Sbillf
67652400Sbillf# Test image, as above
67752400SbillfTEST_IMAGE_SUBDIR:=test
67852400SbillfTEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
67977335Sdougb
68077335Sdougb# Symbols image
68152400SbillfSYMBOLS_IMAGE_SUBDIR:=symbols
68252400SbillfSYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
68367859Sdougb
68467859Sdougb# Macosx bundles directory definitions
68567859SdougbJDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents
68667859SdougbJRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents
68767859SdougbJDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
68852400SbillfJRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
68952400Sbillf
69052400Sbillf# This macro is called to allow inclusion of closed source counterparts.
69152400Sbillf# Unless overridden in closed sources, it expands to nothing.
69252400Sbillf# Usage: This function is called in an open makefile, with the following
69352400Sbillf# arguments:
69467949Sdougb# $1 the name of the repo, or empty if the top-level repo.
69552400Sbillf# $2 the name of the makefile
69652400Sbillfdefine IncludeCustomExtension
69752400Sbillfendef
69867859Sdougb
69967859Sdougb# Include the custom-spec.gmk file if it exists
70077335Sdougb-include $(dir @SPEC@)/custom-spec.gmk
70177335Sdougb