spec.gmk.in revision 693:1dfcc874461e
189857Sobrien#
289857Sobrien# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
389857Sobrien# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489857Sobrien#
589857Sobrien# This code is free software; you can redistribute it and/or modify it
689857Sobrien# under the terms of the GNU General Public License version 2 only, as
777298Sobrien# published by the Free Software Foundation.  Oracle designates this
877298Sobrien# particular file as subject to the "Classpath" exception as provided
977298Sobrien# by Oracle in the LICENSE file that accompanied this code.
1077298Sobrien#
1177298Sobrien# This code is distributed in the hope that it will be useful, but WITHOUT
1277298Sobrien# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1377298Sobrien# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1477298Sobrien# version 2 for more details (a copy is included in the LICENSE file that
1577298Sobrien# accompanied this code).
1677298Sobrien#
1777298Sobrien# You should have received a copy of the GNU General Public License version
1877298Sobrien# 2 along with this work; if not, write to the Free Software Foundation,
1977298Sobrien# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2077298Sobrien#
2177298Sobrien# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2277298Sobrien# or visit www.oracle.com if you need additional information or have any
2377298Sobrien# questions.
2477298Sobrien#
2577298Sobrien
2677298Sobrien# Configured @DATE_WHEN_CONFIGURED@ to build
2777298Sobrien# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
2877298Sobrien#   (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
2977298Sobrien# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
3077298Sobrien#   (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
3177298Sobrien# using 'configure @CONFIGURE_COMMAND_LINE@'
3277298Sobrien
3377298Sobrien# When calling macros, the spaces between arguments are 
3477298Sobrien# often semantically important! Sometimes we need to subst 
3577298Sobrien# spaces and commas, therefore we need the following macros.
3677298SobrienX:=
3777298SobrienSPACE:=$(X) $(X)
3877298SobrienCOMMA:=,
3977298SobrienHASH:=\#
4077298SobrienSQUOTE:='
4177298Sobrien#'
4277298SobrienDQUOTE:="
4377298Sobrien#"
4477298Sobriendefine NEWLINE
4577298Sobrien
4677298Sobrien
4777298Sobrienendef
4877298Sobrien
4977298Sobrien# A self-referential reference to this file.
5077298SobrienSPEC:=@SPEC@
5177298Sobrien
5277298Sobrien# Specify where the spec file is.
5377298SobrienMAKE_ARGS="SPEC=$(SPEC)"
5477298Sobrien
5577298SobrienMAKE:=@MAKE@
5677298Sobrien
5777298Sobrien# Pass along the verbosity setting.
5877298Sobrienifeq (,$(findstring VERBOSE=,$(MAKE)))
5977298Sobrien    MAKE:=$(MAKE) $(VERBOSE) VERBOSE="$(VERBOSE)"
6077298Sobrienendif
6177298Sobrien
6277298Sobrien# No implicit variables or rules!
6377298Sobrienifeq (,$(findstring -R,$(MAKE)))
6477298Sobrien    MAKE:=$(MAKE) -R
6577298Sobrienendif
6677298Sobrien
6777298Sobrien# Specify where the common include directory for makefiles is.
6877298Sobrienifeq (,$(findstring -I @SRC_ROOT@/common/makefiles,$(MAKE)))
6977298Sobrien    MAKE:=$(MAKE) -I @SRC_ROOT@/common/makefiles
7077298Sobrienendif
7177298Sobrien
7277298Sobrien# The "human readable" name of this configuration
7377298SobrienCONF_NAME:=@CONF_NAME@
7477298Sobrien
7577298Sobrien# The built jdk will run in this target system.
7677298SobrienOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
7777298SobrienOPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
7877298SobrienOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
7977298Sobrien
8077298SobrienOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
8177298SobrienOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
8277298SobrienOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
8377298SobrienOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
8477298Sobrien
8577298SobrienCOMPILE_TYPE:=@COMPILE_TYPE@
8677298Sobrien
8777298Sobrien# Legacy support
8877298SobrienOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
8977298SobrienOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
9077298SobrienOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
9177298SobrienOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
9277298SobrienOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
9377298SobrienOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
9477298SobrienOPENJDK_TARGET_OS_API_DIR:=@OPENJDK_TARGET_OS_API_DIR@
9577298Sobrien
9677298Sobrien# We are building on this build system.
9777298Sobrien# When not cross-compiling, it is the same as the target.
9877298SobrienOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
9977298SobrienOPENJDK_BUILD_OS_API:=@OPENJDK_BUILD_OS_API@
10077298Sobrien
10177298SobrienOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
10277298SobrienOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
10377298SobrienOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
10477298SobrienOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
10577298Sobrien
10677298Sobrien# Legacy OS values for use in release file.
10777298SobrienREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
10877298SobrienREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
10977298Sobrien
11077298Sobrien@SET_OPENJDK@
11177298SobrienLIBM:=-lm
11277298SobrienLIBDL:=@LIBDL@
11377298Sobrien
11477298Sobrien# colon or semicolon
11577298SobrienPATH_SEP:=@PATH_SEP@
11677298Sobrien
11777298Sobrienifeq ($(OPENJDK_TARGET_OS), windows)
11877298Sobrien  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
11977298Sobrien  # environment variables (in Windows path style), and the PATH needs to
12077298Sobrien  # be adjusted to include Visual Studio tools (but this needs to be in
12177298Sobrien  # cygwin/msys style).
12277298Sobrien  export PATH:=@VS_PATH@
12377298Sobrien  export INCLUDE:=@VS_INCLUDE@
12477298Sobrien  export LIB:=@VS_LIB@
12577298Sobrienendif
12677298Sobrien
12777298Sobrien# The sys root where standard headers and libraries are found.
12877298Sobrien# Usually not needed since the configure script should have
12977298Sobrien# taken it into account already when setting CFLAGS et al.
13077298SobrienSYS_ROOT:=@SYS_ROOT@
13177298Sobrien
13277298Sobrien# Paths to the source code
13377298SobrienSRC_ROOT:=@SRC_ROOT@
13477298SobrienADD_SRC_ROOT:=@ADD_SRC_ROOT@
13577298SobrienOVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@
13677298SobrienTOPDIR:=@SRC_ROOT@
13777298SobrienOUTPUT_ROOT:=@OUTPUT_ROOT@
13877298SobrienJDK_TOPDIR:=@JDK_TOPDIR@
13977298SobrienLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
14077298SobrienCORBA_TOPDIR:=@CORBA_TOPDIR@
14177298SobrienJAXP_TOPDIR:=@JAXP_TOPDIR@
14277298SobrienJAXWS_TOPDIR:=@JAXWS_TOPDIR@
14377298SobrienHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
14477298SobrienNASHORN_TOPDIR:=@NASHORN_TOPDIR@
14577298SobrienCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
14677298Sobrien
14777298Sobrien# Location where build customization files may be found
14877298SobrienCUSTOM_MAKE_DIR:=@CUSTOM_MAKE_DIR@
14977298Sobrien
15077298Sobrien# Information gathered from the version.numbers file.
15177298SobrienJDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@
15277298SobrienJDK_MINOR_VERSION:=@JDK_MINOR_VERSION@
15377298SobrienJDK_MICRO_VERSION:=@JDK_MICRO_VERSION@
15477298SobrienJDK_UPDATE_VERSION:=@JDK_UPDATE_VERSION@
15577298SobrienJDK_BUILD_NUMBER:=@JDK_BUILD_NUMBER@
15677298SobrienMILESTONE:=@MILESTONE@
15777298SobrienLAUNCHER_NAME:=@LAUNCHER_NAME@
15877298SobrienPRODUCT_NAME:=@PRODUCT_NAME@
15977298SobrienPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
16077298SobrienJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
16177298SobrienCOMPANY_NAME:=@COMPANY_NAME@
16277298SobrienMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
16377298SobrienMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
16477298Sobrien
16577298Sobrien# Different version strings generated from the above information.
16677298SobrienJDK_VERSION:=@JDK_VERSION@
16777298SobrienRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
16877298SobrienCOOKED_BUILD_NUMBER:=@COOKED_BUILD_NUMBER@
16977298Sobrien# These variables need to be generated here so that MILESTONE and
17077298Sobrien# JDK_BUILD_NUMBER can be overridden on the make command line.
17177298Sobrienifeq ($(MILESTONE),)
17277298Sobrien  RELEASE=$(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
17377298Sobrienelse
17477298Sobrien  RELEASE=$(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
17577298Sobrienendif
17677298Sobrienifeq ($(JDK_BUILD_NUMBER),b00)
17777298Sobrien  USER_RELEASE_SUFFIX=@USER_RELEASE_SUFFIX@
17877298Sobrien  FULL_VERSION=$(RELEASE)-$(USER_RELEASE_SUFFIX)-$(JDK_BUILD_NUMBER)
17977298Sobrienelse
18077298Sobrien  FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER)
18177298Sobrienendif
18277298SobrienJRE_RELEASE_VERSION:=$(FULL_VERSION)
18389857Sobrien
18489857Sobrien# How to compile the code: release, fastdebug or slowdebug
18577298SobrienDEBUG_LEVEL:=@DEBUG_LEVEL@
18677298Sobrien
18777298Sobrien# This is the JDK variant to build.
18877298Sobrien# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
18977298SobrienJDK_VARIANT:=@JDK_VARIANT@
19077298Sobrien
19177298Sobrien# Should we compile support for running with a graphical UI? (ie headful)
19277298Sobrien# Should we compile support for running without? (ie headless)
19377298SobrienSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
19477298SobrienSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
19577298Sobrien# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
19677298Sobrien@BUILD_HEADLESS@
19777298Sobrien
19877298Sobrien# These are the libjvms that we want to build.
19977298Sobrien# The java launcher uses the default.
20077298Sobrien# The others can be selected by specifying -client -server -minimal1 -kernel -zero or -zeroshark
20177298Sobrien# on the java launcher command line.
20277298SobrienJVM_VARIANTS:=@JVM_VARIANTS@
20377298SobrienJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
20477298SobrienJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
20577298SobrienJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
20677298SobrienJVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@
20777298SobrienJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
20877298SobrienJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
20977298Sobrien
21077298Sobrien# Universal binaries on macosx
21177298SobrienMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
21277298Sobrien
21377298Sobrien# Legacy setting: -debug or -fastdebug
21477298Sobrien# Still used in version string...
21577298SobrienBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
21677298Sobrien
21777298Sobrien# JDK_OUTPUTDIR specifies where a working jvm is built.
21877298Sobrien# You can run $(JDK_OUTPUTDIR)/bin/java
21977298Sobrien# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
22077298Sobrien# yet the same as a default installation.
22177298Sobrien#
22277298Sobrien# When you run "make install" it will create the standardized
22377298Sobrien# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
22477298Sobrien# Then it will copy the contents of the jdk into the installation
22577298Sobrien# directory.
22677298Sobrien
22777298SobrienBUILD_OUTPUT:=@BUILD_OUTPUT@
22877298Sobrien# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
22977298SobrienLANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools
23077298SobrienCORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba
23177298SobrienJAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
23277298SobrienJAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws
23377298SobrienHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
23477298SobrienJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
23577298SobrienNASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn
23677298SobrienIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
23777298SobrienJCE_OUTPUTDIR=$(BUILD_OUTPUT)/jce-release
23877298Sobrien
23977298SobrienLANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist
24077298SobrienCORBA_DIST=$(CORBA_OUTPUTDIR)/dist
24177298SobrienJAXP_DIST=$(JAXP_OUTPUTDIR)/dist
24277298SobrienJAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist
24377298SobrienHOTSPOT_DIST=@HOTSPOT_DIST@
24477298SobrienNASHORN_DIST=$(NASHORN_OUTPUTDIR)/dist
24577298Sobrien
24677298SobrienBUILD_HOTSPOT=@BUILD_HOTSPOT@
24777298Sobrien
24877298Sobrien# The boot jdk to use
24977298SobrienBOOT_JDK:=@BOOT_JDK@
25077298SobrienBOOT_JDK_JVMARGS:=@BOOT_JDK_JVMARGS@
25177298SobrienBOOT_RTJAR:=@BOOT_RTJAR@
25277298SobrienBOOT_TOOLSJAR=$(BOOT_JDK)/lib/tools.jar
25377298Sobrien
25477298Sobrien# When compiling Java source to be run by the boot jdk
25577298Sobrien# use these extra flags, eg -source 6 -target 6
25677298SobrienBOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
25777298Sobrien
25877298Sobrien# Information about the build system
25977298SobrienNUM_CORES:=@NUM_CORES@
26077298Sobrien# Enable sjavac support = use a javac server,
26177298Sobrien# multi core javac compilation and dependency tracking.
26277298SobrienENABLE_SJAVAC:=@ENABLE_SJAVAC@
26377298Sobrien# Store sjavac server synchronization files here, and
26477298Sobrien# the sjavac server log files.
26577298SobrienSJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@
26677298Sobrien
26777298Sobrien# Number of parallel jobs to use for compilation
26877298SobrienJOBS?=@JOBS@
26977298Sobrien
27077298Sobrien# The OpenJDK makefiles should be changed to using the standard
27177298Sobrien# configure output ..._CFLAGS and ..._LIBS. In the meantime we
27277298Sobrien# extract the information here.
27377298SobrienFREETYPE2_LIB_PATH:=@FREETYPE2_LIB_PATH@
27477298SobrienFREETYPE2_LIBS:=@FREETYPE2_LIBS@
27577298SobrienFREETYPE2_CFLAGS:=@FREETYPE2_CFLAGS@
27677298SobrienUSING_SYSTEM_FT_LIB=@USING_SYSTEM_FT_LIB@
27777298SobrienCUPS_CFLAGS:=@CUPS_CFLAGS@
27877298Sobrien
27977298SobrienPACKAGE_PATH=@PACKAGE_PATH@
28077298Sobrien
28177298Sobrien# Source file for cacerts
28277298SobrienCACERTS_FILE=@CACERTS_FILE@
28377298Sobrien
28477298Sobrien# Enable unlimited crypto policy
28577298SobrienUNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
28677298Sobrien
28777298Sobrien# Necessary additional compiler flags to compile X11 
28877298SobrienX_CFLAGS:=@X_CFLAGS@
28977298SobrienX_LIBS:=@X_LIBS@
29077298SobrienOPENWIN_HOME:=@OPENWIN_HOME@
29177298Sobrien
29277298Sobrien# DirectX SDK
29377298SobrienDXSDK_LIB_PATH=@DXSDK_LIB_PATH@
29477298SobrienDXSDK_INCLUDE_PATH=@DXSDK_INCLUDE_PATH@
29577298Sobrien
29677298Sobrien# The lowest required version of macosx to enforce compatiblity for
29777298SobrienMACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
29877298Sobrien
29977298Sobrien# There are two types: CC or CL
30077298Sobrien# CC is gcc and others behaving reasonably similar.
30177298Sobrien# CL is cl.exe only.
30277298SobrienCOMPILER_TYPE:=@COMPILER_TYPE@
30377298Sobrien
30477298SobrienCOMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@
30577298Sobrien
30677298SobrienCC_OUT_OPTION:=@CC_OUT_OPTION@
30777298SobrienEXE_OUT_OPTION:=@EXE_OUT_OPTION@
30877298SobrienLD_OUT_OPTION:=@LD_OUT_OPTION@
30977298SobrienAR_OUT_OPTION:=@AR_OUT_OPTION@
31077298Sobrien
31177298Sobrien# Flags used for overriding the default opt setting for a C/C++ source file.
31277298SobrienC_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
31377298SobrienC_O_FLAG_HI:=@C_O_FLAG_HI@
31477298SobrienC_O_FLAG_NORM:=@C_O_FLAG_NORM@
31577298SobrienC_O_FLAG_NONE:=@C_O_FLAG_NONE@
31677298SobrienCXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
31777298SobrienCXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
31877298SobrienCXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
31977298SobrienCXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
32077298Sobrien
32177298SobrienC_FLAG_DEPS:=@C_FLAG_DEPS@
32277298SobrienCXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
32377298Sobrien
32477298Sobrien# Tools that potentially need to be cross compilation aware.
32577298SobrienCC:=@FIXPATH@ @CCACHE@ @CC@
32677298Sobrien
32777298Sobrien# CFLAGS used to compile the jdk native libraries (C-code)
32877298SobrienCFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
32977298SobrienCXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
33077298Sobrien
33177298Sobrien# CFLAGS used to compile the jdk native launchers (C-code)
33277298SobrienCFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
33377298SobrienCXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
33477298Sobrien
33577298SobrienCXX:=@FIXPATH@ @CCACHE@ @CXX@
33677298Sobrien#CXXFLAGS:=@CXXFLAGS@
33777298Sobrien
33877298SobrienOBJC:=@CCACHE@ @OBJC@
33977298Sobrien#OBJCFLAGS:=@OBJCFLAGS@
34077298Sobrien
34177298SobrienCPP:=@FIXPATH@ @CPP@
34277298Sobrien#CPPFLAGS:=@CPPFLAGS@
34377298Sobrien
34477298Sobrien# The linker can be gcc or ld on posix systems, or link.exe on windows systems.
34577298SobrienLD:=@FIXPATH@ @LD@
34677298Sobrien
34777298Sobrien# LDFLAGS used to link the jdk native libraries (C-code)
34877298SobrienLDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
34977298SobrienLDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
35077298Sobrien
35177298Sobrien# On some platforms the linker cannot be used to create executables, thus
35277298Sobrien# the need for a separate LDEXE command.
35377298SobrienLDEXE:=@FIXPATH@ @LDEXE@
35477298Sobrien
35577298Sobrien# LDFLAGS used to link the jdk native launchers (C-code)
35677298SobrienLDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
35777298SobrienLDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
35877298Sobrien
35977298Sobrien# LDFLAGS specific to C++ linking.
36077298SobrienLDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
36177298Sobrien
36277298Sobrien# Sometimes a different linker is needed for c++ libs
36377298SobrienLDCXX:=@FIXPATH@ @LDCXX@
36477298Sobrien# The flags for linking libstdc++ linker.
36577298SobrienLIBCXX:=@LIBCXX@
36677298Sobrien
36777298Sobrien# Sometimes a different linker is needed for c++ executables
36877298SobrienLDEXECXX:=@FIXPATH@ @LDEXECXX@
36977298Sobrien
37077298Sobrien# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
37177298Sobrien# build platform.
37277298SobrienBUILD_CC:=@FIXPATH@ @BUILD_CC@
37377298SobrienBUILD_LD:=@FIXPATH@ @BUILD_LD@
37477298Sobrien
37577298SobrienAS:=@FIXPATH@ @AS@
37677298Sobrien
37777298Sobrien# AR is used to create a static library (is ar in posix, lib.exe in windows)
37877298SobrienAR:=@FIXPATH@ @AR@
37977298SobrienARFLAGS:=@ARFLAGS@
38077298Sobrien
38177298SobrienNM:=@NM@
38277298SobrienGNM:=@GNM@
38377298SobrienSTRIP:=@STRIP@
38477298SobrienMCS:=@MCS@
38577298Sobrien
38677298SobrienLIPO:=@LIPO@
38777298Sobrien
38889857Sobrien# Command to create a shared library
38977298SobrienSHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@
39077298Sobrien
39177298Sobrien# Options to linker to specify a mapfile. 
39277298Sobrien# (Note absence of := assignment, because we do not want to evaluate the macro body here)
39377298SobrienSET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
39477298Sobrien
39577298Sobrien# Options for C/CXX compiler to be used if linking is performed
39677298Sobrien#   using reorder file
39777298SobrienC_FLAG_REORDER:=@C_FLAG_REORDER@
39877298SobrienCXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
39977298Sobrien
40077298Sobrien#
40177298Sobrien# Options for generating debug symbols
40277298SobrienENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
40377298SobrienCFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
40477298SobrienCXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
40577298SobrienZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
40677298Sobrien
40777298Sobrien#
40877298Sobrien# Compress (or not) jars
40977298SobrienCOMPRESS_JARS=@COMPRESS_JARS@
41077298Sobrien
41177298Sobrien# Options to linker to specify the library name.
41277298Sobrien# (Note absence of := assignment, because we do not want to evaluate the macro body here)
41377298SobrienSET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
41477298Sobrien
41577298Sobrien# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
41677298Sobrien# (Note absence of := assignment, because we do not want to evaluate the macro body here)
41777298SobrienSET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
41877298SobrienSET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
41977298Sobrien
42077298Sobrien# Different OS:es have different ways of naming shared libraries.
42177298Sobrien# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
42277298Sobrien#    "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
42377298Sobrien# (Note absence of := assignment, because we do not want to evaluate the macro body here)
42477298SobrienSHARED_LIBRARY=@SHARED_LIBRARY@
42577298SobrienSTATIC_LIBRARY=@STATIC_LIBRARY@
42677298SobrienLIBRARY_PREFIX:=@LIBRARY_PREFIX@
42777298SobrienSHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
42877298SobrienSTATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
42977298SobrienEXE_SUFFIX:=@EXE_SUFFIX@
43077298SobrienOBJ_SUFFIX:=@OBJ_SUFFIX@
43177298Sobrien
43277298SobrienPOST_STRIP_CMD:=@POST_STRIP_CMD@
43377298SobrienPOST_MCS_CMD:=@POST_MCS_CMD@
43477298Sobrien
43577298SobrienJAVA_FLAGS:=@BOOT_JDK_JVMARGS@
43677298Sobrien
43777298SobrienJAVA=@FIXPATH@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS)
43877298Sobrien
43977298SobrienJAVAC=@FIXPATH@ $(BOOT_JDK)/bin/javac
44077298Sobrien# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
44177298Sobrien# overriding that value by using ?=.
44277298SobrienJAVAC_FLAGS?=@JAVAC_FLAGS@
44377298Sobrien
44477298SobrienJAVAH=@FIXPATH@ $(BOOT_JDK)/bin/javah
44577298Sobrien
44677298SobrienJAR=@FIXPATH@ $(BOOT_JDK)/bin/jar
44777298Sobrien
44877298SobrienRMIC=@FIXPATH@ $(BOOT_JDK)/bin/rmic
44977298Sobrien
45077298SobrienNATIVE2ASCII=@FIXPATH@ $(BOOT_JDK)/bin/native2ascii
45177298Sobrien
45277298SobrienJARSIGNER=@FIXPATH@ $(BOOT_JDK)/bin/jarsigner
45377298Sobrien
45477298Sobrien# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
45577298SobrienBOOTSTRAP_JAVAC_JAR:=$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar
45677298SobrienBOOTSTRAP_JAVAC_ARGS:="-Xbootclasspath/p:$(BOOTSTRAP_JAVAC_JAR)" -cp $(BOOTSTRAP_JAVAC_JAR)
45777298SobrienNEW_JAVAC   = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javac.Main
45877298SobrienNEW_JAVADOC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javadoc.Main
45977298Sobrien
46077298Sobrien# Base flags for RC
46177298Sobrien# Guarding this against resetting value. Legacy make files include spec multiple
46277298Sobrien# times.
46377298Sobrienifndef RC_FLAGS
46477298SobrienRC_FLAGS:=@RC_FLAGS@
46577298Sobrienendif
46677298Sobrien
46777298Sobrien# A specific java binary with specific options can be used to run
46877298Sobrien# the long running background sjavac servers and other long running tasks.
46977298SobrienSJAVAC_SERVER_JAVA:=@FIXPATH@ @SJAVAC_SERVER_JAVA@
47077298Sobrien
47177298Sobrien# Tools adhering to a minimal and common standard of posix compliance.
47277298SobrienAWK:=@AWK@
47377298SobrienBASENAME:=@BASENAME@
47477298SobrienBASH:=@BASH@
47577298SobrienCAT:=@CAT@
47677298SobrienCCACHE:=@CCACHE@
47777298Sobrien# CD is going away, but remains to cater for legacy makefiles.
47877298SobrienCD:=cd
47977298SobrienCHMOD:=@CHMOD@
48077298SobrienCOMM:=@COMM@
48177298SobrienCP:=@CP@
48277298SobrienCPIO:=@CPIO@
48377298SobrienCUT:=@CUT@
48477298SobrienDATE:=@DATE@
48577298SobrienDIFF:=@DIFF@
48677298SobrienDIRNAME:=@DIRNAME@
48777298SobrienFIND:=@FIND@
48877298SobrienFIND_DELETE:=@FIND_DELETE@
48977298SobrienECHO:=@ECHO@
49077298SobrienEGREP:=@EGREP@
49177298SobrienFGREP:=@FGREP@
49277298SobrienGREP:=@GREP@
49377298SobrienHEAD:=@HEAD@
49477298SobrienLS:=@LS@
49577298SobrienLN:=@LN@
49677298SobrienMKDIR:=@MKDIR@
49777298SobrienMV:=@MV@
49877298SobrienNAWK:=@NAWK@
49977298SobrienPRINTF:=@PRINTF@
50077298SobrienPWD:=@THEPWDCMD@
50177298SobrienRM:=@RM@
50277298SobrienSED:=@SED@
50377298SobrienSH:=@SH@
50477298SobrienSORT:=@SORT@
50577298SobrienTAR:=@TAR@
50677298SobrienTAIL:=@TAIL@
50777298SobrienTEE:=@TEE@
50877298SobrienTIME:=@TIME@
50977298SobrienTR:=@TR@
51077298SobrienTOUCH:=@TOUCH@
51177298SobrienUNIQ:=@UNIQ@
51277298SobrienWC:=@WC@
51377298SobrienXARGS:=@XARGS@
51477298SobrienZIPEXE:=@ZIP@
51577298SobrienZIP:=@ZIP@
51677298SobrienUNZIP:=@UNZIP@
51777298SobrienMT:=@FIXPATH@ @MT@
51877298SobrienRC:=@FIXPATH@ @RC@
51977298SobrienDUMPBIN:=@FIXPATH@ @DUMPBIN@
52077298SobrienCYGPATH:=@CYGPATH@
52177298SobrienLDD:=@LDD@
52277298SobrienOTOOL:=@OTOOL@
52377298SobrienREADELF:=@READELF@
52477298SobrienEXPR:=@EXPR@
52577298SobrienFILE:=@FILE@
52677298SobrienHG:=@HG@
52777298SobrienOBJCOPY:=@OBJCOPY@
52877298SobrienSETFILE:=@SETFILE@
52977298SobrienXATTR:=@XATTR@
53077298Sobrien
53177298SobrienFIXPATH:=@FIXPATH@
53277298Sobrien
53377298Sobrien# Where the build output is stored for your convenience.
53477298SobrienBUILD_LOG:=@BUILD_LOG@
53577298SobrienBUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@
53677298Sobrien# Disable the build log wrapper on sjavac+winapi until
53777298Sobrien# we have solved how to prevent the log wrapper to wait
53877298Sobrien# for the background sjavac server process.
53977298Sobrienifeq (@ENABLE_SJAVAC@X@OPENJDK_BUILD_OS_API@,yesXwinapi)
54077298Sobrien    BUILD_LOG_WRAPPER:=
54177298Sobrienelse
54277298Sobrien    BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
54377298Sobrienendif
54477298Sobrien
54577298Sobrien# Build setup
54677298SobrienENABLE_JFR=@ENABLE_JFR@
54777298SobrienENABLE_INTREE_EC=@ENABLE_INTREE_EC@
54877298SobrienUSE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
54977298SobrienUSE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
55077298SobrienUSE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
55177298SobrienLIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
55277298SobrienMSVCR_DLL:=@MSVCR_DLL@
55377298Sobrien
55477298Sobrien
55577298Sobrien# ADD_SRCS takes a single argument with source roots
55677298Sobrien# and appends any corresponding source roots found
55777298Sobrien# below --with-add-source-root and below
55877298Sobrien# --with-override-source-root. It is the responsibility
55977298Sobrien# of the next macro to get rid of superfluous files.
56077298SobrienADD_SRCS=$1
56177298Sobrienifneq (,$(ADD_SRC_ROOT))
56277298Sobrien    # Append wildcard rule to pickup any matching source roots found below ADD_SRC_ROOT 
56377298Sobrien    ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(ADD_SRC_ROOT),$1))
56477298Sobrienendif
56577298Sobrienifneq (,$(OVERRIDE_SRC_ROOT))
56677298Sobrien    # Append wildcard rule to pickup any matching source roots found below OVERRIDE_SRC_ROOT 
56777298Sobrien    ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(OVERRIDE_SRC_ROOT),$1))
56877298Sobrienendif
56977298Sobrien
57077298Sobrien# OVR_SRCS creates a filter expression to filter out sources in
57177298Sobrien# the original source directory that lie inside directories below
57277298Sobrien# --with-override-source-root.
57377298Sobrien# Use := here since we want to scan for these files here. To avoid recomputation later.
57477298Sobrien# We cannot do the scan in configure, since that would force us to rerun configure when
57577298Sobrien# we add overridden sources.
57677298Sobrienifneq (,$(OVERRIDE_SRC_ROOT))
57777298Sobrien    OVR_SRCS:=$(addsuffix %,$(subst $(OVERRIDE_SRC_ROOT),$(SRC_ROOT),$(sort $(dir $(shell $(FIND) $(OVERRIDE_SRC_ROOT) -type f)))))
57877298Sobrienelse
57977298Sobrien    OVR_SRCS:=
58077298Sobrienendif
58177298Sobrien
58277298Sobrien####################################################
58377298Sobrien#
58477298Sobrien# INSTALLATION
58577298Sobrien#
58677298Sobrien
58777298Sobrien# Common prefix for all installed files. Defaults to /usr/local,
58877298Sobrien# but /opt/myjdk is another common version. 
58977298SobrienINSTALL_PREFIX=@prefix@
59077298Sobrien
59177298Sobrien# Directories containing architecture-dependent files should be relative to exec_prefix
59277298SobrienINSTALL_EXECPREFIX=@exec_prefix@
59377298Sobrien
59477298Sobrien# java,javac,javah,javap etc are installed here.
59577298SobrienINSTALL_BINDIR=@bindir@
59677298Sobrien
59777298Sobrien# Read only architecture-independent data
59877298SobrienINSTALL_DATADIR=@datadir@
59977298Sobrien
60077298Sobrien# Root of above.
60177298SobrienINSTALL_DATAROOTDIR=@datarootdir@
60277298Sobrien
60377298Sobrien# Doc files, other than info and man.
60477298SobrienINSTALL_DOCDIR=@docdir@
60577298Sobrien
60677298Sobrien# Html documentation
60777298SobrienINSTALL_HTMLDIR=@htmldir@
60877298Sobrien
60977298Sobrien# Installing C header files, JNI headers for example.
61077298SobrienINSTALL_INCLUDEDIR=@includedir@
61177298Sobrien
61277298Sobrien# Installing library files....
61377298SobrienINSTALL_INCLUDEDIR=@libdir@
61477298Sobrien
61577298Sobrien# Executables that other programs run.
61677298SobrienINSTALL_LIBEXECDIR=@libexecdir@
61777298Sobrien
61877298Sobrien# Locale-dependent but architecture-independent data, such as message catalogs. 
61977298SobrienINSTALL_LOCALEDIR=@localedir@
62077298Sobrien
62177298Sobrien# Modifiable single-machine data
62277298SobrienINSTALL_LOCALSTATEDIR=@localstatedir@
62377298Sobrien
62477298Sobrien# Man pages
62577298SobrienINSTALL_MANDIR=@mandir@
62677298Sobrien
62777298Sobrien# Modifiable architecture-independent data.
62877298SobrienINSTALL_SHAREDSTATEDIR=@sharedstatedir@
62977298Sobrien
63077298Sobrien# Read-only single-machine data
63177298SobrienINSTALL_SYSCONFDIR=@sysconfdir@
63277298Sobrien
63377298Sobrien
63477298Sobrien####################################################
63577298Sobrien#
63677298Sobrien# Misc
63777298Sobrien#
63877298Sobrien
63977298Sobrien# Name of Service Agent library
64077298SobrienSALIB_NAME=@SALIB_NAME@
64177298Sobrien
64277298SobrienINCLUDE_SA=@INCLUDE_SA@
64377298Sobrien
64477298SobrienOS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
64577298SobrienOS_VERSION_MINOR:=@OS_VERSION_MINOR@
64677298SobrienOS_VERSION_MICRO:=@OS_VERSION_MICRO@
64777298Sobrien
64877298Sobrien# Images directory definitions
64977298SobrienJDK_IMAGE_SUBDIR:=j2sdk-image
65077298SobrienJRE_IMAGE_SUBDIR:=j2re-image
65177298SobrienJDK_OVERLAY_IMAGE_SUBDIR:=j2sdk-overlay-image
65277298SobrienJRE_OVERLAY_IMAGE_SUBDIR:=j2re-overlay-image
65377298Sobrien# Colon left out to be able to override output dir for bootcycle-images
65477298SobrienJDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
65577298SobrienJRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
65677298SobrienJDK_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR)
65777298SobrienJRE_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR)
65877298Sobrien
65977298Sobrien# Macosx bundles directory definitions
66077298SobrienJDK_BUNDLE_SUBDIR=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
66177298SobrienJRE_BUNDLE_SUBDIR=j2re-bundle/jre$(JDK_VERSION).jre/Contents
66277298SobrienJDK_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR)
66377298SobrienJRE_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR)
66477298Sobrien
66577298Sobrien# Include the custom-spec.gmk file if it exists
66677298Sobrien-include $(dir @SPEC@)/custom-spec.gmk
66777298Sobrien