spec.gmk.in revision 647:c022bc48b7ed
129088Smarkm#
229088Smarkm# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
329088Smarkm# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
429088Smarkm#
529088Smarkm# This code is free software; you can redistribute it and/or modify it
629088Smarkm# under the terms of the GNU General Public License version 2 only, as
729088Smarkm# published by the Free Software Foundation.  Oracle designates this
829088Smarkm# particular file as subject to the "Classpath" exception as provided
929088Smarkm# by Oracle in the LICENSE file that accompanied this code.
1029088Smarkm#
1129088Smarkm# This code is distributed in the hope that it will be useful, but WITHOUT
1229088Smarkm# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1329088Smarkm# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1429088Smarkm# version 2 for more details (a copy is included in the LICENSE file that
1529088Smarkm# accompanied this code).
1629088Smarkm#
1729088Smarkm# You should have received a copy of the GNU General Public License version
1829088Smarkm# 2 along with this work; if not, write to the Free Software Foundation,
1929088Smarkm# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2029088Smarkm#
2129088Smarkm# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2229088Smarkm# or visit www.oracle.com if you need additional information or have any
2329088Smarkm# questions.
2429088Smarkm#
2529088Smarkm
2629088Smarkm# Configured @DATE_WHEN_CONFIGURED@ to build
2729088Smarkm# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@
2829088Smarkm#   (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf)
2929088Smarkm# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@
3029088Smarkm#   (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf)
3129088Smarkm# using 'configure @CONFIGURE_COMMAND_LINE@'
3229088Smarkm
3329088Smarkm# When calling macros, the spaces between arguments are 
34114630Sobrien# often semantically important! Sometimes we need to subst 
3529088Smarkm# spaces and commas, therefore we need the following macros.
3629181SmarkmX:=
3731622ScharnierSPACE:=$(X) $(X)
38114630SobrienCOMMA:=,
39114630SobrienHASH:=\#
40114630SobrienSQUOTE:='
4129088Smarkm#'
4229088SmarkmDQUOTE:="
4329088Smarkm#"
4429088Smarkmdefine NEWLINE
4587139Smarkm
4631622Scharnier
4745395Sbrianendef
4881965Smarkm
4987139Smarkm# A self-referential reference to this file.
5045395SbrianSPEC:=@SPEC@
5187139Smarkm
5287139Smarkm# Specify where the spec file is.
5387139SmarkmMAKE_ARGS="SPEC=$(SPEC)"
5429088Smarkm
5529088SmarkmMAKE:=@MAKE@
5629088Smarkm
5787139Smarkm# Pass along the verbosity setting.
5829181Smarkmifeq (,$(findstring VERBOSE=,$(MAKE)))
5929181Smarkm    MAKE:=$(MAKE) $(VERBOSE) VERBOSE="$(VERBOSE)"
6029181Smarkmendif
6129088Smarkm
6245493Sbrian# No implicit variables or rules!
6387139Smarkmifeq (,$(findstring -R,$(MAKE)))
6429088Smarkm    MAKE:=$(MAKE) -R
6529088Smarkmendif
6629088Smarkm
6729088Smarkm# Specify where the common include directory for makefiles is.
6829088Smarkmifeq (,$(findstring -I @SRC_ROOT@/common/makefiles,$(MAKE)))
6929088Smarkm    MAKE:=$(MAKE) -I @SRC_ROOT@/common/makefiles
7029088Smarkmendif
7129088Smarkm
7229088Smarkm# The "human readable" name of this configuration
7329088SmarkmCONF_NAME:=@CONF_NAME@
7487139Smarkm
7587139Smarkm# The built jdk will run in this target system.
7687139SmarkmOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
7729181SmarkmOPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
7829088SmarkmOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
7929088Smarkm
80114911SmarkmOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
8129088SmarkmOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
8287139SmarkmOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
8329088SmarkmOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
8487155Smarkm
8587155SmarkmCOMPILE_TYPE:=@COMPILE_TYPE@
8687155Smarkm
8787155Smarkm# Legacy support
8887155SmarkmOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
8929088SmarkmOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@
9029088SmarkmOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@
9129088SmarkmOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@
9229088SmarkmOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@
9329088SmarkmOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
9429088SmarkmOPENJDK_TARGET_OS_API_DIR:=@OPENJDK_TARGET_OS_API_DIR@
9529088Smarkm
9629181Smarkm# We are building on this build system.
9756668Sshin# When not cross-compiling, it is the same as the target.
9829088SmarkmOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
9929088SmarkmOPENJDK_BUILD_OS_API:=@OPENJDK_BUILD_OS_API@
10029088Smarkm
10129088SmarkmOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@
10229088SmarkmOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
10329088SmarkmOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
10429088SmarkmOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
10529088Smarkm
10629088Smarkm# Legacy OS values for use in release file.
10729088SmarkmREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
10829088SmarkmREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
10929088Smarkm
11029088Smarkm@SET_OPENJDK@
11129088SmarkmLIBM:=-lm
11229088SmarkmLIBDL:=@LIBDL@
11329088Smarkm
11429088Smarkm# colon or semicolon
11529088SmarkmPATH_SEP:=@PATH_SEP@
11656668Sshin
11756668Sshinifeq ($(OPENJDK_TARGET_OS), windows)
11887139Smarkm  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
11987139Smarkm  # environment variables (in Windows path style), and the PATH needs to
12087139Smarkm  # be adjusted to include Visual Studio tools (but this needs to be in
12187139Smarkm  # cygwin/msys style).
12287139Smarkm  export PATH:=@VS_PATH@
12387139Smarkm  export INCLUDE:=@VS_INCLUDE@
12487139Smarkm  export LIB:=@VS_LIB@
12587155Smarkmendif
12687139Smarkm
12787139Smarkm# The sys root where standard headers and libraries are found.
12887139Smarkm# Usually not needed since the configure script should have
12987139Smarkm# taken it into account already when setting CFLAGS et al.
13056668SshinSYS_ROOT:=@SYS_ROOT@
13187139Smarkm
13229088Smarkm# Paths to the source code
133139937SmaximSRC_ROOT:=@SRC_ROOT@
13456668SshinADD_SRC_ROOT:=@ADD_SRC_ROOT@
13529088SmarkmOVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@
13687139SmarkmTOPDIR:=@SRC_ROOT@
13729088SmarkmOUTPUT_ROOT:=@OUTPUT_ROOT@
13829088SmarkmJDK_TOPDIR:=@JDK_TOPDIR@
13929088SmarkmLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
140139937SmaximCORBA_TOPDIR:=@CORBA_TOPDIR@
14129088SmarkmJAXP_TOPDIR:=@JAXP_TOPDIR@
14229088SmarkmJAXWS_TOPDIR:=@JAXWS_TOPDIR@
14329088SmarkmHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
14429088SmarkmNASHORN_TOPDIR:=@NASHORN_TOPDIR@
14529088SmarkmCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
14629088Smarkm
14729088Smarkm# Location where build customization files may be found
14829088SmarkmCUSTOM_MAKE_DIR:=@CUSTOM_MAKE_DIR@
14930212Suhclem
15030212Suhclem# Information gathered from the version.numbers file.
15130212SuhclemJDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@
15230212SuhclemJDK_MINOR_VERSION:=@JDK_MINOR_VERSION@
15330212SuhclemJDK_MICRO_VERSION:=@JDK_MICRO_VERSION@
15430212SuhclemJDK_UPDATE_VERSION:=@JDK_UPDATE_VERSION@
15530212SuhclemJDK_BUILD_NUMBER:=@JDK_BUILD_NUMBER@
15630212SuhclemMILESTONE:=@MILESTONE@
15730212SuhclemLAUNCHER_NAME:=@LAUNCHER_NAME@
15830212SuhclemPRODUCT_NAME:=@PRODUCT_NAME@
15930212SuhclemPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
16030212SuhclemJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
16130212SuhclemCOMPANY_NAME:=@COMPANY_NAME@
16230212SuhclemMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
16330212SuhclemMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
16430212Suhclem
16531622Scharnier# Different version strings generated from the above information.
16629088SmarkmJDK_VERSION:=@JDK_VERSION@
16729088SmarkmRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
16829088SmarkmCOOKED_BUILD_NUMBER:=@COOKED_BUILD_NUMBER@
16929088Smarkm# These variables need to be generated here so that MILESTONE and
17029088Smarkm# JDK_BUILD_NUMBER can be overridden on the make command line.
17129088Smarkmifeq ($(MILESTONE),)
17229088Smarkm  RELEASE=$(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
17329088Smarkmelse
17429088Smarkm  RELEASE=$(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
17529088Smarkmendif
17629088Smarkmifeq ($(JDK_BUILD_NUMBER),b00)
17729088Smarkm  USER_RELEASE_SUFFIX=@USER_RELEASE_SUFFIX@
17829088Smarkm  FULL_VERSION=$(RELEASE)-$(USER_RELEASE_SUFFIX)-$(JDK_BUILD_NUMBER)
17929088Smarkmelse
18029088Smarkm  FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER)
18129088Smarkmendif
18229088SmarkmJRE_RELEASE_VERSION:=$(FULL_VERSION)
18329088Smarkm
18429088Smarkm# How to compile the code: release, fastdebug or slowdebug
18529088SmarkmDEBUG_LEVEL:=@DEBUG_LEVEL@
18629088Smarkm
18729088Smarkm# This is the JDK variant to build.
18829088Smarkm# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
18929088SmarkmJDK_VARIANT:=@JDK_VARIANT@
19031622Scharnier
19129088Smarkm# Should we compile support for running with a graphical UI? (ie headful)
19229088Smarkm# Should we compile support for running without? (ie headless)
19329088SmarkmSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
19429088SmarkmSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@
19529088Smarkm# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
19629088Smarkm@BUILD_HEADLESS@
19729088Smarkm
19829088Smarkm# These are the libjvms that we want to build.
19929088Smarkm# The java launcher uses the default.
20029088Smarkm# The others can be selected by specifying -client -server -minimal1 -kernel -zero or -zeroshark
20129088Smarkm# on the java launcher command line.
20229088SmarkmJVM_VARIANTS:=@JVM_VARIANTS@
20329088SmarkmJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
20429088SmarkmJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
20529088SmarkmJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
20629088SmarkmJVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@
20729088SmarkmJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
20829088SmarkmJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
20929088Smarkm
21029088Smarkm# Universal binaries on macosx
21129088SmarkmMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
21229088Smarkm
21329088Smarkm# Legacy setting: -debug or -fastdebug
21429088Smarkm# Still used in version string...
21529088SmarkmBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
21629088Smarkm
21729088Smarkm# JDK_OUTPUTDIR specifies where a working jvm is built.
21829088Smarkm# You can run $(JDK_OUTPUTDIR)/bin/java
21929088Smarkm# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
22029088Smarkm# yet the same as a default installation.
22129088Smarkm#
22229088Smarkm# When you run "make install" it will create the standardized
22329088Smarkm# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir.
22429088Smarkm# Then it will copy the contents of the jdk into the installation
22529088Smarkm# directory.
22629088Smarkm
22729088SmarkmBUILD_OUTPUT:=@BUILD_OUTPUT@
22829088SmarkmLANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools
22929088SmarkmCORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba
23029088SmarkmJAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
23129088SmarkmJAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws
23229088SmarkmHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
23329088SmarkmJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
23429088SmarkmNASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn
23529088SmarkmIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
23629088SmarkmJCE_OUTPUTDIR=$(BUILD_OUTPUT)/jce-release
23729088Smarkm
23829088SmarkmLANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist
23929088SmarkmCORBA_DIST=$(CORBA_OUTPUTDIR)/dist
24029088SmarkmJAXP_DIST=$(JAXP_OUTPUTDIR)/dist
24129088SmarkmJAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist
24229088SmarkmHOTSPOT_DIST=@HOTSPOT_DIST@
24329088SmarkmNASHORN_DIST=$(NASHORN_OUTPUTDIR)/dist
24429088Smarkm
24529088SmarkmBUILD_HOTSPOT=@BUILD_HOTSPOT@
24629088Smarkm
24729088Smarkm# The boot jdk to use
24829088SmarkmBOOT_JDK:=@BOOT_JDK@
24929088SmarkmBOOT_JDK_JVMARGS:=@BOOT_JDK_JVMARGS@
25029088SmarkmBOOT_RTJAR:=@BOOT_RTJAR@
25129088SmarkmBOOT_TOOLSJAR=$(BOOT_JDK)/lib/tools.jar
25229088Smarkm
25329088Smarkm# When compiling Java source to be run by the boot jdk
25429088Smarkm# use these extra flags, eg -source 6 -target 6
25529088SmarkmBOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
25629088Smarkm
25729088Smarkm# Information about the build system
25829088SmarkmNUM_CORES:=@NUM_CORES@
25929088Smarkm# Enable sjavac support = use a javac server,
26029088Smarkm# multi core javac compilation and dependency tracking.
26129088SmarkmENABLE_SJAVAC:=@ENABLE_SJAVAC@
26229088Smarkm# Store sjavac server synchronization files here, and
26329088Smarkm# the sjavac server log files.
26429088SmarkmSJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@
26529088Smarkm
26629181Smarkm# The OpenJDK makefiles should be changed to using the standard
26729181Smarkm# configure output ..._CFLAGS and ..._LIBS. In the meantime we
26829181Smarkm# extract the information here.
26929181SmarkmFREETYPE2_LIB_PATH:=@FREETYPE2_LIB_PATH@
27029088SmarkmFREETYPE2_LIBS:=@FREETYPE2_LIBS@
27129088SmarkmFREETYPE2_CFLAGS:=@FREETYPE2_CFLAGS@
27229088SmarkmUSING_SYSTEM_FT_LIB=@USING_SYSTEM_FT_LIB@
27331622ScharnierCUPS_CFLAGS:=@CUPS_CFLAGS@
27431622Scharnier
27529088SmarkmPACKAGE_PATH=@PACKAGE_PATH@
27629088Smarkm
277139937Smaxim# Source file for cacerts
278139937SmaximCACERTS_FILE=@CACERTS_FILE@
279139937Smaxim
280139937Smaxim# Enable unlimited crypto policy
281139937SmaximUNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
282139937Smaxim
283139937Smaxim# Necessary additional compiler flags to compile X11 
284139937SmaximX_CFLAGS:=@X_CFLAGS@
28529088SmarkmX_LIBS:=@X_LIBS@
28629088SmarkmOPENWIN_HOME:=@OPENWIN_HOME@
28729088Smarkm
28829088Smarkm# The lowest required version of macosx to enforce compatiblity for
28987139SmarkmMACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
29045428Sbrian
29145428Sbrian# There are two types: CC or CL
29229088Smarkm# CC is gcc and others behaving reasonably similar.
29329088Smarkm# CL is cl.exe only.
29429088SmarkmCOMPILER_TYPE:=@COMPILER_TYPE@
29529088Smarkm
29629088SmarkmCC_OUT_OPTION:=@CC_OUT_OPTION@
29729088SmarkmEXE_OUT_OPTION:=@EXE_OUT_OPTION@
29829088SmarkmLD_OUT_OPTION:=@LD_OUT_OPTION@
29929088SmarkmAR_OUT_OPTION:=@AR_OUT_OPTION@
30029088Smarkm
30129088Smarkm# Flags used for overriding the default opt setting for a C/C++ source file.
30229088SmarkmC_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
30329088SmarkmC_O_FLAG_HI:=@C_O_FLAG_HI@
30429088SmarkmC_O_FLAG_NORM:=@C_O_FLAG_NORM@
30529088SmarkmC_O_FLAG_NONE:=@C_O_FLAG_NONE@
30629088SmarkmCXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
30756668SshinCXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
30856668SshinCXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
30956668SshinCXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
31056668Sshin
31156668SshinC_FLAG_DEPS:=@C_FLAG_DEPS@
31256668SshinCXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
31356668Sshin
31456668Sshin# Tools that potentially need to be cross compilation aware.
31556668SshinCC:=@FIXPATH@ @CCACHE@ @CC@
31656668Sshin
31729088Smarkm# CFLAGS used to compile the jdk native libraries (C-code)
31831622ScharnierCFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
31929088SmarkmCXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
32029088Smarkm
32129088Smarkm# CFLAGS used to compile the jdk native launchers (C-code)
32229088SmarkmCFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
32329088SmarkmCXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
32429088Smarkm
32529088SmarkmCXX:=@FIXPATH@ @CCACHE@ @CXX@
32629088Smarkm#CXXFLAGS:=@CXXFLAGS@
32729088Smarkm
32829088SmarkmOBJC:=@CCACHE@ @OBJC@
32929088Smarkm#OBJCFLAGS:=@OBJCFLAGS@
33056668Sshin
33187139SmarkmCPP:=@FIXPATH@ @CPP@
33256668Sshin#CPPFLAGS:=@CPPFLAGS@
33329088Smarkm
33429088Smarkm# The linker can be gcc or ld on posix systems, or link.exe on windows systems.
33529088SmarkmLD:=@FIXPATH@ @LD@
33629088Smarkm
33756668Sshin# LDFLAGS used to link the jdk native libraries (C-code)
33856668SshinLDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
33956668SshinLDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
34056668Sshin
34156668Sshin# On some platforms the linker cannot be used to create executables, thus
34256668Sshin# the need for a separate LDEXE command.
34356668SshinLDEXE:=@FIXPATH@ @LDEXE@
34456668Sshin
34556668Sshin# LDFLAGS used to link the jdk native launchers (C-code)
34656668SshinLDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
34756668SshinLDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
34856668Sshin
34956668Sshin# LDFLAGS specific to C++ linking.
35056668SshinLDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
35156668Sshin
35229088Smarkm# Sometimes a different linker is needed for c++ libs
35329088SmarkmLDCXX:=@FIXPATH@ @LDCXX@
35456668Sshin# The flags for linking libstdc++ linker.
35531622ScharnierLIBCXX:=@LIBCXX@
35631622Scharnier
35729088Smarkm# Sometimes a different linker is needed for c++ executables
35829088SmarkmLDEXECXX:=@FIXPATH@ @LDEXECXX@
359118865Sharti
360118865Sharti# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
361118865Sharti# build platform.
36256668SshinBUILD_CC:=@FIXPATH@ @BUILD_CC@
36331622ScharnierBUILD_LD:=@FIXPATH@ @BUILD_LD@
36431622Scharnier
36531622ScharnierAS:=@FIXPATH@ @AS@
36656668Sshin
36756668Sshin# AR is used to create a static library (is ar in posix, lib.exe in windows)
36831622ScharnierAR:=@FIXPATH@ @AR@
36931622ScharnierARFLAGS:=@ARFLAGS@
370118865Sharti
371118865ShartiNM:=@NM@
37229088SmarkmSTRIP:=@STRIP@
37329088SmarkmMCS:=@MCS@
37429088Smarkm
37529088SmarkmLIPO:=@LIPO@
37629088Smarkm
37729088Smarkm# Command to create a shared library
37829088SmarkmSHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@
37929088Smarkm
38029088Smarkm# Options to linker to specify a mapfile. 
38129088Smarkm# (Note absence of := assignment, because we do not want to evaluate the macro body here)
38229088SmarkmSET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
38329088Smarkm
38429088Smarkm# Options for C/CXX compiler to be used if linking is performed
38529088Smarkm#   using reorder file
38629088SmarkmC_FLAG_REORDER:=@C_FLAG_REORDER@
38731622ScharnierCXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
38829088Smarkm
38929088Smarkm#
39029088Smarkm# Options for generating debug symbols
39129088SmarkmENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
39229088SmarkmCFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
39329088SmarkmCXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
39429088SmarkmZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
39529088Smarkm
39629088Smarkm#
39756668Sshin# Compress (or not) jars
39829088SmarkmCOMPRESS_JARS=@COMPRESS_JARS@
39929088Smarkm
40029088Smarkm# Options to linker to specify the library name.
40129088Smarkm# (Note absence of := assignment, because we do not want to evaluate the macro body here)
40229088SmarkmSET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
40329088Smarkm
40429088Smarkm# Set origin using the linker, ie use the relative path to the dependent library to find the dependees.
40529088Smarkm# (Note absence of := assignment, because we do not want to evaluate the macro body here)
40629088SmarkmSET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@
40729088SmarkmSET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@
40829088Smarkm
40929088Smarkm# Different OS:es have different ways of naming shared libraries.
41029088Smarkm# The SHARED_LIBRARY macro takes "verify" as and argument and returns:
41129088Smarkm#    "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform.
41229088Smarkm# (Note absence of := assignment, because we do not want to evaluate the macro body here)
41356668SshinSHARED_LIBRARY=@SHARED_LIBRARY@
41429088SmarkmSTATIC_LIBRARY=@STATIC_LIBRARY@
41531622ScharnierLIBRARY_PREFIX:=@LIBRARY_PREFIX@
41629088SmarkmSHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
41729088SmarkmSTATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
41829088SmarkmEXE_SUFFIX:=@EXE_SUFFIX@
41929088SmarkmOBJ_SUFFIX:=@OBJ_SUFFIX@
42029088Smarkm
42131622ScharnierPOST_STRIP_CMD:=@POST_STRIP_CMD@
42229088SmarkmPOST_MCS_CMD:=@POST_MCS_CMD@
423139713Smaxim
424139713SmaximJAVA_FLAGS:=@BOOT_JDK_JVMARGS@
42529088Smarkm
42629088SmarkmJAVA=@FIXPATH@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS)
42729088Smarkm
42829088SmarkmJAVAC=@FIXPATH@ $(BOOT_JDK)/bin/javac
42929088Smarkm# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
43029088Smarkm# overriding that value by using ?=.
43129088SmarkmJAVAC_FLAGS?=@JAVAC_FLAGS@
43229088Smarkm
43329088SmarkmJAVAH=@FIXPATH@ $(BOOT_JDK)/bin/javah
43429088Smarkm
43529088SmarkmJAR=@FIXPATH@ $(BOOT_JDK)/bin/jar
43629088Smarkm
43729088SmarkmRMIC=@FIXPATH@ $(BOOT_JDK)/bin/rmic
43829088Smarkm
43929088SmarkmNATIVE2ASCII=@FIXPATH@ $(BOOT_JDK)/bin/native2ascii
44029088Smarkm
44129088SmarkmJARSIGNER=@FIXPATH@ $(BOOT_JDK)/bin/jarsigner
44229088Smarkm
44329088Smarkm# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
44429088SmarkmBOOTSTRAP_JAVAC_JAR:=$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar
44529088SmarkmBOOTSTRAP_JAVAC_ARGS:="-Xbootclasspath/p:$(BOOTSTRAP_JAVAC_JAR)" -cp $(BOOTSTRAP_JAVAC_JAR)
44629088SmarkmNEW_JAVAC   = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javac.Main
44729088SmarkmNEW_JAVADOC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javadoc.Main
44829088Smarkm
44929088Smarkm# Base flags for RC
45029088Smarkm# Guarding this against resetting value. Legacy make files include spec multiple
45129088Smarkm# times.
45229088Smarkmifndef RC_FLAGS
45329088SmarkmRC_FLAGS:=@RC_FLAGS@
45429088Smarkmendif
45529088Smarkm
45629088Smarkm# A specific java binary with specific options can be used to run
45729088Smarkm# the long running background sjavac servers and other long running tasks.
45829088SmarkmSJAVAC_SERVER_JAVA:=@FIXPATH@ @SJAVAC_SERVER_JAVA@
45929088Smarkm
46029088Smarkm# Tools adhering to a minimal and common standard of posix compliance.
46129088SmarkmAWK:=@AWK@
46229088SmarkmBASENAME:=@BASENAME@
46329088SmarkmBASH:=@BASH@
46429088SmarkmCAT:=@CAT@
46529088SmarkmCCACHE:=@CCACHE@
46687139Smarkm# CD is going away, but remains to cater for legacy makefiles.
46787139SmarkmCD:=cd
46887139SmarkmCHMOD:=@CHMOD@
46987139SmarkmCOMM:=@COMM@
47087139SmarkmCP:=@CP@
47187139SmarkmCPIO:=@CPIO@
47287139SmarkmCUT:=@CUT@
47387139SmarkmDATE:=@DATE@
47487139SmarkmDIFF:=@DIFF@
47529088SmarkmDIRNAME:=@DIRNAME@
47629088SmarkmFIND:=@FIND@
47729088SmarkmFIND_DELETE:=@FIND_DELETE@
47829088SmarkmECHO:=@ECHO@
47987139SmarkmEGREP:=@EGREP@
48029088SmarkmFGREP:=@FGREP@
48129088SmarkmGREP:=@GREP@
48229088SmarkmHEAD:=@HEAD@
483180931SjhbLS:=@LS@
484180931SjhbLN:=@LN@
485180931SjhbMKDIR:=@MKDIR@
486180931SjhbMV:=@MV@
487180931SjhbNAWK:=@NAWK@
488180931SjhbPRINTF:=@PRINTF@
489180931SjhbPWD:=@THEPWDCMD@
49029088SmarkmRM:=@RM@
49129088SmarkmSED:=@SED@
49229088SmarkmSH:=@SH@
49329088SmarkmSORT:=@SORT@
49429088SmarkmTAR:=@TAR@
49529088SmarkmTAIL:=@TAIL@
49629088SmarkmTEE:=@TEE@
49729088SmarkmTIME:=@TIME@
49829088SmarkmTR:=@TR@
49929088SmarkmTOUCH:=@TOUCH@
50029088SmarkmUNIQ:=@UNIQ@
50129088SmarkmWC:=@WC@
50229088SmarkmXARGS:=@XARGS@
50329088SmarkmZIPEXE:=@ZIP@
50429088SmarkmZIP:=@ZIP@
50529088SmarkmUNZIP:=@UNZIP@
50629088SmarkmMT:=@FIXPATH@ @MT@
50729088SmarkmRC:=@FIXPATH@ @RC@
50829088SmarkmDUMPBIN:=@FIXPATH@ @DUMPBIN@
50929088SmarkmCYGPATH:=@CYGPATH@
51029088SmarkmLDD:=@LDD@
51129088SmarkmOTOOL:=@OTOOL@
51229088SmarkmREADELF:=@READELF@
51329088SmarkmEXPR:=@EXPR@
51429088SmarkmFILE:=@FILE@
51529088SmarkmHG:=@HG@
51629088SmarkmOBJCOPY:=@OBJCOPY@
51729088SmarkmSETFILE:=@SETFILE@
51829088Smarkm
51929088SmarkmFIXPATH:=@FIXPATH@
52029088Smarkm
52129088Smarkm# Where the build output is stored for your convenience.
52229088SmarkmBUILD_LOG:=@BUILD_LOG@
52329088SmarkmBUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@
52429088Smarkm# Disable the build log wrapper on sjavac+winapi until
52579981Sru# we have solved how to prevent the log wrapper to wait
52629088Smarkm# for the background sjavac server process.
52729088Smarkmifeq (@ENABLE_SJAVAC@X@OPENJDK_BUILD_OS_API@,yesXwinapi)
52829088Smarkm    BUILD_LOG_WRAPPER:=
52929088Smarkmelse
53029088Smarkm    BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
53129088Smarkmendif
53279981Sru
53329088Smarkm# Build setup
53429088SmarkmENABLE_JFR=@ENABLE_JFR@
53529088SmarkmUSE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
53629088SmarkmUSE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
53729088SmarkmUSE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
53829088SmarkmLIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
53979981SruMSVCR_DLL:=@MSVCR_DLL@
54029088Smarkm
54129088Smarkm
54229088Smarkm# ADD_SRCS takes a single argument with source roots
54329088Smarkm# and appends any corresponding source roots found
54429088Smarkm# below --with-add-source-root and below
54529088Smarkm# --with-override-source-root. It is the responsibility
54679981Sru# of the next macro to get rid of superfluous files.
54729088SmarkmADD_SRCS=$1
54829088Smarkmifneq (,$(ADD_SRC_ROOT))
54929088Smarkm    # Append wildcard rule to pickup any matching source roots found below ADD_SRC_ROOT 
55029088Smarkm    ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(ADD_SRC_ROOT),$1))
55179981Sruendif
55229088Smarkmifneq (,$(OVERRIDE_SRC_ROOT))
55329088Smarkm    # Append wildcard rule to pickup any matching source roots found below OVERRIDE_SRC_ROOT 
55429088Smarkm    ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(OVERRIDE_SRC_ROOT),$1))
55529088Smarkmendif
55629088Smarkm
55729088Smarkm# OVR_SRCS creates a filter expression to filter out sources in
55829088Smarkm# the original source directory that lie inside directories below
55929088Smarkm# --with-override-source-root.
56029088Smarkm# Use := here since we want to scan for these files here. To avoid recomputation later.
56129088Smarkm# We cannot do the scan in configure, since that would force us to rerun configure when
56229088Smarkm# we add overridden sources.
56329088Smarkmifneq (,$(OVERRIDE_SRC_ROOT))
56429088Smarkm    OVR_SRCS:=$(addsuffix %,$(subst $(OVERRIDE_SRC_ROOT),$(SRC_ROOT),$(sort $(dir $(shell $(FIND) $(OVERRIDE_SRC_ROOT) -type f)))))
56529088Smarkmelse
56629088Smarkm    OVR_SRCS:=
56729088Smarkmendif
56829088Smarkm
56929088Smarkm####################################################
57029088Smarkm#
57129088Smarkm# INSTALLATION
57229088Smarkm#
57329088Smarkm
57429088Smarkm# Common prefix for all installed files. Defaults to /usr/local,
57529088Smarkm# but /opt/myjdk is another common version. 
57629088SmarkmINSTALL_PREFIX=@prefix@
57729088Smarkm
57829088Smarkm# Directories containing architecture-dependent files should be relative to exec_prefix
57929088SmarkmINSTALL_EXECPREFIX=@exec_prefix@
58029088Smarkm
58129088Smarkm# java,javac,javah,javap etc are installed here.
58229181SmarkmINSTALL_BINDIR=@bindir@
58329181Smarkm
58429088Smarkm# Read only architecture-independent data
58529088SmarkmINSTALL_DATADIR=@datadir@
58629088Smarkm
58729088Smarkm# Root of above.
58829181SmarkmINSTALL_DATAROOTDIR=@datarootdir@
58929181Smarkm
59029088Smarkm# Doc files, other than info and man.
59129088SmarkmINSTALL_DOCDIR=@docdir@
59229088Smarkm
59329088Smarkm# Html documentation
59429088SmarkmINSTALL_HTMLDIR=@htmldir@
59529088Smarkm
59629088Smarkm# Installing C header files, JNI headers for example.
59729088SmarkmINSTALL_INCLUDEDIR=@includedir@
59829088Smarkm
59929088Smarkm# Installing library files....
60029088SmarkmINSTALL_INCLUDEDIR=@libdir@
60129088Smarkm
60229088Smarkm# Executables that other programs run.
60329088SmarkmINSTALL_LIBEXECDIR=@libexecdir@
60429088Smarkm
60529088Smarkm# Locale-dependent but architecture-independent data, such as message catalogs. 
60629088SmarkmINSTALL_LOCALEDIR=@localedir@
60729181Smarkm
60829181Smarkm# Modifiable single-machine data
60929181SmarkmINSTALL_LOCALSTATEDIR=@localstatedir@
61029181Smarkm
61129088Smarkm# Man pages
61229088SmarkmINSTALL_MANDIR=@mandir@
61329088Smarkm
61429088Smarkm# Modifiable architecture-independent data.
61529088SmarkmINSTALL_SHAREDSTATEDIR=@sharedstatedir@
61629088Smarkm
61729088Smarkm# Read-only single-machine data
61829088SmarkmINSTALL_SYSCONFDIR=@sysconfdir@
61987139Smarkm
62087139Smarkm
62129088Smarkm####################################################
62229088Smarkm#
62329088Smarkm# Misc
62429088Smarkm#
62529088Smarkm
62629088Smarkm# Name of Service Agent library
62729088SmarkmSALIB_NAME=@SALIB_NAME@
62829088Smarkm
62929088SmarkmOS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
63079981SruOS_VERSION_MINOR:=@OS_VERSION_MINOR@
63129088SmarkmOS_VERSION_MICRO:=@OS_VERSION_MICRO@
63229088Smarkm
63329088Smarkm# Images directory definitions
63429088SmarkmJDK_IMAGE_SUBDIR:=j2sdk-image
63529088SmarkmJRE_IMAGE_SUBDIR:=j2re-image
63629088SmarkmJDK_OVERLAY_IMAGE_SUBDIR:=j2sdk-overlay-image
63787139SmarkmJRE_OVERLAY_IMAGE_SUBDIR:=j2re-overlay-image
63887139SmarkmJDK_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
63929088SmarkmJRE_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
64029088SmarkmJDK_OVERLAY_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR)
64129088SmarkmJRE_OVERLAY_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR)
64229088Smarkm
64329088Smarkm# Macosx bundles directory definitions
64429088SmarkmJDK_BUNDLE_SUBDIR:=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
64529088SmarkmJRE_BUNDLE_SUBDIR:=j2re-bundle/jre$(JDK_VERSION).jre/Contents
64629088SmarkmJDK_BUNDLE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR)
64729088SmarkmJRE_BUNDLE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR)
64829088Smarkm
64929088Smarkm# Include the custom-spec.gmk file if it exists
65029088Smarkm-include $(dir @SPEC@)/custom-spec.gmk
65129088Smarkm