spec.gmk.in revision 1192:6085f9633d8c
1279264Sdelphij# 2238405Sjkim# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. 3238405Sjkim# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4238405Sjkim# 5238405Sjkim# This code is free software; you can redistribute it and/or modify it 6238405Sjkim# under the terms of the GNU General Public License version 2 only, as 7238405Sjkim# published by the Free Software Foundation. Oracle designates this 8238405Sjkim# particular file as subject to the "Classpath" exception as provided 9238405Sjkim# by Oracle in the LICENSE file that accompanied this code. 10238405Sjkim# 11238405Sjkim# This code is distributed in the hope that it will be useful, but WITHOUT 12238405Sjkim# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13238405Sjkim# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14238405Sjkim# version 2 for more details (a copy is included in the LICENSE file that 15238405Sjkim# accompanied this code). 16238405Sjkim# 17238405Sjkim# You should have received a copy of the GNU General Public License version 18238405Sjkim# 2 along with this work; if not, write to the Free Software Foundation, 19238405Sjkim# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20238405Sjkim# 21238405Sjkim# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22238405Sjkim# or visit www.oracle.com if you need additional information or have any 23238405Sjkim# questions. 24238405Sjkim# 25238405Sjkim 26238405Sjkim# Configured @DATE_WHEN_CONFIGURED@ to build 27238405Sjkim# for target system @OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU@ 28238405Sjkim# (called @OPENJDK_TARGET_AUTOCONF_NAME@ by autoconf) 29238405Sjkim# on build system @OPENJDK_BUILD_OS@-@OPENJDK_BUILD_CPU@ 30238405Sjkim# (called @OPENJDK_BUILD_AUTOCONF_NAME@ by autoconf) 31238405Sjkim# using 'configure @CONFIGURE_COMMAND_LINE@' 32238405Sjkim 33238405Sjkim# When calling macros, the spaces between arguments are 34238405Sjkim# often semantically important! Sometimes we need to subst 35238405Sjkim# spaces and commas, therefore we need the following macros. 36238405SjkimX:= 37238405SjkimSPACE:=$(X) $(X) 38238405SjkimCOMMA:=, 39238405SjkimHASH:=\# 40238405SjkimLEFT_PAREN:=( 41279264SdelphijRIGHT_PAREN:=) 42279264SdelphijSQUOTE:=' 43238405Sjkim#' 44238405SjkimDQUOTE:=" 45238405Sjkim#" 46238405Sjkimdefine NEWLINE 47238405Sjkim 48238405Sjkim 49238405Sjkimendef 50238405Sjkim 51238405Sjkim# The command line given to configure. 52238405SjkimCONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@ 53279264Sdelphij 54279264Sdelphij# A self-referential reference to this file. 55279264SdelphijSPEC:=@SPEC@ 56238405Sjkim 57279264Sdelphij# Specify where the spec file is. 58279264SdelphijMAKE_ARGS="SPEC=$(SPEC)" 59279264Sdelphij 60279264SdelphijMAKE:=@MAKE@ 61279264Sdelphij 62279264Sdelphij# Pass along the verbosity and log level settings. 63238405Sjkimifeq (,$(findstring VERBOSE=,$(MAKE))) 64279264Sdelphij MAKE:=$(MAKE) $(VERBOSE) VERBOSE="$(VERBOSE)" LOG_LEVEL="$(LOG_LEVEL)" 65279264Sdelphijendif 66279264Sdelphij 67279264Sdelphij# No implicit variables or rules! 68279264Sdelphijifeq (,$(findstring -R,$(MAKE))) 69238405Sjkim MAKE:=$(MAKE) -R 70279264Sdelphijendif 71238405Sjkim 72238405Sjkim# Specify where the common include directory for makefiles is. 73238405Sjkimifeq (,$(findstring -I @TOPDIR@/make/common,$(MAKE))) 74238405Sjkim MAKE:=$(MAKE) -I @TOPDIR@/make/common 75238405Sjkimendif 76238405Sjkim 77238405SjkimOUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@ 78238405SjkimOUTPUT_SYNC:=@OUTPUT_SYNC@ 79238405Sjkim 80238405Sjkim# The "human readable" name of this configuration 81238405SjkimCONF_NAME:=@CONF_NAME@ 82238405Sjkim 83238405Sjkim# The built jdk will run in this target system. 84238405SjkimOPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@ 85238405SjkimOPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@ 86238405SjkimOPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@ 87238405Sjkim 88238405SjkimOPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@ 89238405SjkimOPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@ 90238405SjkimOPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@ 91238405SjkimOPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@ 92238405Sjkim 93238405SjkimCOMPILE_TYPE:=@COMPILE_TYPE@ 94238405Sjkim 95238405Sjkim# Legacy support 96238405SjkimOPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@ 97238405SjkimOPENJDK_TARGET_CPU_LIBDIR:=@OPENJDK_TARGET_CPU_LIBDIR@ 98238405SjkimOPENJDK_TARGET_CPU_LEGACY:=@OPENJDK_TARGET_CPU_LEGACY@ 99238405SjkimOPENJDK_TARGET_CPU_LEGACY_LIB:=@OPENJDK_TARGET_CPU_LEGACY_LIB@ 100238405SjkimOPENJDK_TARGET_CPU_OSARCH:=@OPENJDK_TARGET_CPU_OSARCH@ 101238405SjkimOPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@ 102238405SjkimOPENJDK_TARGET_OS_API_DIR:=@OPENJDK_TARGET_OS_API_DIR@ 103238405SjkimOPENJDK_TARGET_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@ 104238405Sjkim 105238405Sjkim# We are building on this build system. 106238405Sjkim# When not cross-compiling, it is the same as the target. 107238405SjkimOPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@ 108238405SjkimOPENJDK_BUILD_OS_API:=@OPENJDK_BUILD_OS_API@ 109238405SjkimOPENJDK_BUILD_OS_ENV:=@OPENJDK_BUILD_OS_ENV@ 110238405Sjkim 111238405SjkimOPENJDK_BUILD_CPU:=@OPENJDK_BUILD_CPU@ 112238405SjkimOPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@ 113238405SjkimOPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@ 114238405SjkimOPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@ 115238405Sjkim 116238405Sjkim# Legacy OS values for use in release file. 117238405SjkimREQUIRED_OS_NAME:=@REQUIRED_OS_NAME@ 118238405SjkimREQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@ 119238405Sjkim 120238405Sjkim@SET_OPENJDK@ 121238405SjkimLIBM:=-lm 122238405SjkimLIBDL:=@LIBDL@ 123238405Sjkim 124238405Sjkim# colon or semicolon 125238405SjkimPATH_SEP:=@PATH_SEP@ 126238405Sjkim 127238405Sjkimifeq ($(OPENJDK_TARGET_OS), windows) 128238405Sjkim # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE 129238405Sjkim # environment variables (in Windows path style), and the PATH needs to 130238405Sjkim # be adjusted to include Visual Studio tools (but this needs to be in 131238405Sjkim # cygwin/msys style). 132238405Sjkim export PATH:=@VS_PATH@ 133238405Sjkim export INCLUDE:=@VS_INCLUDE@ 134238405Sjkim export LIB:=@VS_LIB@ 135238405Sjkimendif 136279264Sdelphij 137238405SjkimSYSROOT_CFLAGS := @SYSROOT_CFLAGS@ 138238405SjkimSYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@ 139238405Sjkim 140238405Sjkim# Paths to the source code 141238405SjkimADD_SRC_ROOT:=@ADD_SRC_ROOT@ 142238405SjkimOVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@ 143238405Sjkim 144238405Sjkim# The top-level directory of the forest (SRC_ROOT is a traditional alias) 145238405SjkimTOPDIR:=@TOPDIR@ 146238405SjkimSRC_ROOT:=@TOPDIR@ 147238405Sjkim 148238405SjkimOUTPUT_ROOT:=@OUTPUT_ROOT@ 149238405SjkimJDK_TOPDIR:=@JDK_TOPDIR@ 150238405SjkimLANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@ 151238405SjkimCORBA_TOPDIR:=@CORBA_TOPDIR@ 152238405SjkimJAXP_TOPDIR:=@JAXP_TOPDIR@ 153238405SjkimJAXWS_TOPDIR:=@JAXWS_TOPDIR@ 154238405SjkimHOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@ 155238405SjkimNASHORN_TOPDIR:=@NASHORN_TOPDIR@ 156238405SjkimCOPYRIGHT_YEAR:=@COPYRIGHT_YEAR@ 157238405Sjkim 158238405Sjkim# Information gathered from the version.numbers file. 159238405SjkimJDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@ 160238405SjkimJDK_MINOR_VERSION:=@JDK_MINOR_VERSION@ 161238405SjkimJDK_MICRO_VERSION:=@JDK_MICRO_VERSION@ 162238405SjkimJDK_UPDATE_VERSION:=@JDK_UPDATE_VERSION@ 163238405SjkimJDK_BUILD_NUMBER:=@JDK_BUILD_NUMBER@ 164238405SjkimMILESTONE:=@MILESTONE@ 165238405SjkimLAUNCHER_NAME:=@LAUNCHER_NAME@ 166238405SjkimPRODUCT_NAME:=@PRODUCT_NAME@ 167238405SjkimPRODUCT_SUFFIX:=@PRODUCT_SUFFIX@ 168238405SjkimJDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@ 169238405SjkimCOMPANY_NAME:=@COMPANY_NAME@ 170238405SjkimMACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@ 171238405SjkimMACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@ 172238405SjkimUSER_RELEASE_SUFFIX=@USER_RELEASE_SUFFIX@ 173238405Sjkim 174238405Sjkim# Different version strings generated from the above information. 175238405SjkimJDK_VERSION:=@JDK_VERSION@ 176238405SjkimRUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX) 177238405SjkimCOOKED_BUILD_NUMBER:=@COOKED_BUILD_NUMBER@ 178238405Sjkim# These variables need to be generated here so that MILESTONE and 179238405Sjkim# JDK_BUILD_NUMBER can be overridden on the make command line. 180238405Sjkimifeq ($(MILESTONE), fcs) 181238405Sjkim RELEASE=$(JDK_VERSION)$(BUILD_VARIANT_RELEASE) 182238405Sjkimelse 183238405Sjkim RELEASE=$(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE) 184238405Sjkimendif 185238405Sjkim 186238405Sjkimifneq ($(USER_RELEASE_SUFFIX), ) 187238405Sjkim FULL_VERSION=$(RELEASE)-$(USER_RELEASE_SUFFIX)-$(JDK_BUILD_NUMBER) 188238405Sjkimelse 189238405Sjkim FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER) 190238405Sjkimendif 191238405SjkimJRE_RELEASE_VERSION:=$(FULL_VERSION) 192238405Sjkim 193238405Sjkim# How to compile the code: release, fastdebug or slowdebug 194238405SjkimDEBUG_LEVEL:=@DEBUG_LEVEL@ 195238405Sjkim 196238405Sjkim# This is the JDK variant to build. 197238405Sjkim# The JDK variant is a name for a specific set of modules to be compiled for the JDK. 198238405SjkimJDK_VARIANT:=@JDK_VARIANT@ 199238405Sjkim 200238405Sjkim# Should we compile support for running with a graphical UI? (ie headful) 201238405Sjkim# Should we compile support for running without? (ie headless) 202238405SjkimSUPPORT_HEADFUL:=@SUPPORT_HEADFUL@ 203279264SdelphijSUPPORT_HEADLESS:=@SUPPORT_HEADLESS@ 204238405Sjkim# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options. 205238405Sjkim@BUILD_HEADLESS@ 206238405Sjkim 207238405Sjkim# These are the libjvms that we want to build. 208238405Sjkim# The java launcher uses the default. 209238405Sjkim# The others can be selected by specifying -client -server -minimal1 -kernel -zero or -zeroshark 210238405Sjkim# on the java launcher command line. 211238405SjkimJVM_VARIANTS:=@JVM_VARIANTS@ 212238405SjkimJVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@ 213238405SjkimJVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@ 214279264SdelphijJVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@ 215238405SjkimJVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@ 216238405SjkimJVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@ 217238405SjkimJVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@ 218238405SjkimJVM_VARIANT_CORE:=@JVM_VARIANT_CORE@ 219238405Sjkim 220238405Sjkim# Universal binaries on macosx 221238405SjkimMACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@ 222238405Sjkim 223238405Sjkim# Legacy setting: -debug or -fastdebug 224238405Sjkim# Still used in version string... 225238405SjkimBUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@ 226238405Sjkim 227238405Sjkim# JDK_OUTPUTDIR specifies where a working jvm is built. 228238405Sjkim# You can run $(JDK_OUTPUTDIR)/bin/java 229238405Sjkim# Though the layout of the contents of $(JDK_OUTPUTDIR) is not 230238405Sjkim# yet the same as a default installation. 231238405Sjkim# 232238405Sjkim# When you run "make install" it will create the standardized 233238405Sjkim# layout for the jdk and the jre inside the IMAGES_OUTPUTDIR subdir. 234238405Sjkim# Then it will copy the contents of the jdk into the installation 235238405Sjkim# directory. 236238405Sjkim 237238405SjkimBUILD_OUTPUT:=@BUILD_OUTPUT@ 238238405Sjkim# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images 239238405SjkimLANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools 240238405SjkimCORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba 241238405SjkimJAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp 242238405SjkimJAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws 243238405SjkimHOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot 244238405SjkimJDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk 245238405SjkimNASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn 246238405SjkimIMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images 247238405SjkimTESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/testmake 248238405SjkimMAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support 249238405Sjkim 250238405SjkimLANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist 251238405SjkimCORBA_DIST=$(CORBA_OUTPUTDIR)/dist 252238405SjkimJAXP_DIST=$(JAXP_OUTPUTDIR)/dist 253238405SjkimJAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist 254238405SjkimHOTSPOT_DIST=@HOTSPOT_DIST@ 255246772SjkimNASHORN_DIST=$(NASHORN_OUTPUTDIR)/dist 256238405Sjkim 257238405SjkimBUILD_HOTSPOT=@BUILD_HOTSPOT@ 258238405Sjkim 259238405Sjkim# The boot jdk to use. These are overridden in bootcycle-spec.gmk. Make sure to keep 260238405Sjkim# them in sync. 261BOOT_JDK:=@BOOT_JDK@ 262BOOT_RTJAR:=@BOOT_RTJAR@ 263BOOT_TOOLSJAR=$(BOOT_JDK)/lib/tools.jar 264 265# When compiling Java source to be run by the boot jdk 266# use these extra flags, eg -source 6 -target 6 267BOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@ 268 269# Information about the build system 270NUM_CORES:=@NUM_CORES@ 271MEMORY_SIZE:=@MEMORY_SIZE@ 272# Enable sjavac support = use a javac server, 273# multi core javac compilation and dependency tracking. 274ENABLE_SJAVAC:=@ENABLE_SJAVAC@ 275# Store sjavac server synchronization files here, and 276# the sjavac server log files. 277SJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@ 278 279# Number of parallel jobs to use for compilation 280JOBS?=@JOBS@ 281 282FREETYPE_LIBS:=@FREETYPE_LIBS@ 283FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@ 284FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@ 285CUPS_CFLAGS:=@CUPS_CFLAGS@ 286ALSA_LIBS:=@ALSA_LIBS@ 287ALSA_CFLAGS:=@ALSA_CFLAGS@ 288 289PACKAGE_PATH=@PACKAGE_PATH@ 290 291# Source file for cacerts 292CACERTS_FILE=@CACERTS_FILE@ 293 294# Enable unlimited crypto policy 295UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@ 296 297# Enable RMIConnector IIOP transport 298RMICONNECTOR_IIOP=@RMICONNECTOR_IIOP@ 299 300# Necessary additional compiler flags to compile X11 301X_CFLAGS:=@X_CFLAGS@ 302X_LIBS:=@X_LIBS@ 303 304# The lowest required version of macosx to enforce compatiblity for 305MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@ 306 307# Toolchain type: gcc, clang, solstudio, lxc, microsoft... 308TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@ 309 310# Option used to tell the compiler whether to create 32- or 64-bit executables 311COMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@ 312COMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@ 313 314CC_OUT_OPTION:=@CC_OUT_OPTION@ 315EXE_OUT_OPTION:=@EXE_OUT_OPTION@ 316LD_OUT_OPTION:=@LD_OUT_OPTION@ 317AR_OUT_OPTION:=@AR_OUT_OPTION@ 318 319# Flags used for overriding the default opt setting for a C/C++ source file. 320C_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@ 321C_O_FLAG_HI:=@C_O_FLAG_HI@ 322C_O_FLAG_NORM:=@C_O_FLAG_NORM@ 323C_O_FLAG_NONE:=@C_O_FLAG_NONE@ 324CXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@ 325CXX_O_FLAG_HI:=@CXX_O_FLAG_HI@ 326CXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@ 327CXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@ 328 329C_FLAG_DEPS:=@C_FLAG_DEPS@ 330CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@ 331 332CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@ 333 334# Tools that potentially need to be cross compilation aware. 335CC:=@FIXPATH@ @CCACHE@ @CC@ 336 337# CFLAGS used to compile the jdk native libraries (C-code) 338CFLAGS_JDKLIB:=@CFLAGS_JDKLIB@ 339CXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@ 340 341# CFLAGS used to compile the jdk native launchers (C-code) 342CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@ 343CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@ 344 345CXX:=@FIXPATH@ @CCACHE@ @CXX@ 346#CXXFLAGS:=@CXXFLAGS@ 347 348OBJC:=@CCACHE@ @OBJC@ 349#OBJCFLAGS:=@OBJCFLAGS@ 350 351CPP:=@FIXPATH@ @CPP@ 352#CPPFLAGS:=@CPPFLAGS@ 353 354# The linker can be gcc or ld on posix systems, or link.exe on windows systems. 355LD:=@FIXPATH@ @LD@ 356 357# Xcode SDK path 358SDKROOT:=@SDKROOT@ 359 360# The linker on older SuSE distros (e.g. on SLES 10) complains with: 361# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." 362# if feeded with a version script which contains named tags. 363USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@ 364 365# LDFLAGS used to link the jdk native libraries (C-code) 366LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@ 367LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@ 368 369# On some platforms the linker cannot be used to create executables, thus 370# the need for a separate LDEXE command. 371LDEXE:=@FIXPATH@ @LDEXE@ 372 373# LDFLAGS used to link the jdk native launchers (C-code) 374LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@ 375LDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@ 376 377# LDFLAGS specific to C++ linking. 378LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@ 379 380# Sometimes a different linker is needed for c++ libs 381LDCXX:=@FIXPATH@ @LDCXX@ 382# The flags for linking libstdc++ linker. 383LIBCXX:=@LIBCXX@ 384 385# Sometimes a different linker is needed for c++ executables 386LDEXECXX:=@FIXPATH@ @LDEXECXX@ 387 388# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the 389# build platform. 390BUILD_CC:=@FIXPATH@ @BUILD_CC@ 391BUILD_LD:=@FIXPATH@ @BUILD_LD@ 392 393AS:=@FIXPATH@ @AS@ 394 395# AR is used to create a static library (is ar in posix, lib.exe in windows) 396AR:=@FIXPATH@ @AR@ 397ARFLAGS:=@ARFLAGS@ 398 399NM:=@NM@ 400GNM:=@GNM@ 401STRIP:=@STRIP@ 402MCS:=@MCS@ 403 404LIPO:=@LIPO@ 405 406# Command to create a shared library 407SHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@ 408 409# Options to linker to specify a mapfile. 410# (Note absence of := assignment, because we do not want to evaluate the macro body here) 411SET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@ 412 413# Options for C/CXX compiler to be used if linking is performed 414# using reorder file 415C_FLAG_REORDER:=@C_FLAG_REORDER@ 416CXX_FLAG_REORDER:=@CXX_FLAG_REORDER@ 417 418# 419# Options for generating debug symbols 420ENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@ 421CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@ 422CXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@ 423ZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@ 424 425# 426# Compress (or not) jars 427COMPRESS_JARS=@COMPRESS_JARS@ 428 429# Options to linker to specify the library name. 430# (Note absence of := assignment, because we do not want to evaluate the macro body here) 431SET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@ 432 433# Set origin using the linker, ie use the relative path to the dependent library to find the dependees. 434# (Note absence of := assignment, because we do not want to evaluate the macro body here) 435SET_SHARED_LIBRARY_ORIGIN=@SET_SHARED_LIBRARY_ORIGIN@ 436SET_EXECUTABLE_ORIGIN=@SET_EXECUTABLE_ORIGIN@ 437 438# Different OS:es have different ways of naming shared libraries. 439# The SHARED_LIBRARY macro takes "verify" as and argument and returns: 440# "libverify.so" or "libverify.dylib" or "verify.dll" depending on platform. 441# (Note absence of := assignment, because we do not want to evaluate the macro body here) 442SHARED_LIBRARY=@SHARED_LIBRARY@ 443STATIC_LIBRARY=@STATIC_LIBRARY@ 444LIBRARY_PREFIX:=@LIBRARY_PREFIX@ 445SHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@ 446STATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@ 447EXE_SUFFIX:=@EXE_SUFFIX@ 448OBJ_SUFFIX:=@OBJ_SUFFIX@ 449 450POST_STRIP_CMD:=@POST_STRIP_CMD@ 451POST_MCS_CMD:=@POST_MCS_CMD@ 452 453JAVA_FLAGS:=@JAVA_FLAGS@ 454JAVA_FLAGS_BIG:=@JAVA_FLAGS_BIG@ 455JAVA_FLAGS_SMALL:=@JAVA_FLAGS_SMALL@ 456JAVA_TOOL_FLAGS_SMALL:=@JAVA_TOOL_FLAGS_SMALL@ 457SJAVAC_SERVER_JAVA_FLAGS:=@SJAVAC_SERVER_JAVA_FLAGS@ 458 459# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk 460# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD 461# versions of the variables directly. 462JAVA_CMD:=@JAVA@ 463JAVAC_CMD:=@JAVAC@ 464JAVAH_CMD:=@JAVAH@ 465JAR_CMD:=@JAR@ 466NATIVE2ASCII_CMD:=@NATIVE2ASCII@ 467JARSIGNER_CMD:=@JARSIGNER@ 468SJAVAC_SERVER_JAVA_CMD:=@SJAVAC_SERVER_JAVA@ 469# These variables are meant to be used. They are defined with = instead of := to make 470# it possible to override only the *_CMD variables. 471JAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) 472JAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS) 473JAVAC=@FIXPATH@ $(JAVAC_CMD) 474JAVAH=@FIXPATH@ $(JAVAH_CMD) 475JAR=@FIXPATH@ $(JAR_CMD) 476NATIVE2ASCII=@FIXPATH@ $(NATIVE2ASCII_CMD) $(JAVA_TOOL_FLAGS_SMALL) 477JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD) 478# A specific java binary with specific options can be used to run 479# the long running background sjavac servers and other long running tasks. 480SJAVAC_SERVER_JAVA=@FIXPATH@ $(SJAVAC_SERVER_JAVA_CMD) $(SJAVAC_SERVER_JAVA_FLAGS) 481 482# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid 483# overriding that value by using ?=. 484JAVAC_FLAGS?=@JAVAC_FLAGS@ 485 486# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ... 487INTERIM_LANGTOOLS_JAR := $(LANGTOOLS_OUTPUTDIR)/dist/interim_langtools.jar 488INTERIM_LANGTOOLS_ARGS := "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR) 489NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main 490NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javadoc.Main 491 492# The interim corba jar is needed for running rmic 493INTERIM_CORBA_JAR := $(CORBA_OUTPUTDIR)/dist/interim_corba.jar 494 495# Base flags for RC 496# Guarding this against resetting value. Legacy make files include spec multiple 497# times. 498ifndef RC_FLAGS 499 RC_FLAGS:=@RC_FLAGS@ 500endif 501 502# Tools adhering to a minimal and common standard of posix compliance. 503AWK:=@AWK@ 504BASENAME:=@BASENAME@ 505BASH:=@BASH@ 506CAT:=@CAT@ 507CCACHE:=@CCACHE@ 508# CD is going away, but remains to cater for legacy makefiles. 509CD:=cd 510CHMOD:=@CHMOD@ 511CODESIGN:=@CODESIGN@ 512COMM:=@COMM@ 513CP:=@CP@ 514CPIO:=@CPIO@ 515CUT:=@CUT@ 516DATE:=@DATE@ 517DIFF:=@DIFF@ 518DIRNAME:=@DIRNAME@ 519DSYMUTIL:=@DSYMUTIL@ 520FIND:=@FIND@ 521FIND_DELETE:=@FIND_DELETE@ 522ECHO:=@ECHO@ 523EGREP:=@EGREP@ 524FGREP:=@FGREP@ 525GREP:=@GREP@ 526HEAD:=@HEAD@ 527LS:=@LS@ 528LN:=@LN@ 529MKDIR:=@MKDIR@ 530MV:=@MV@ 531NAWK:=@NAWK@ 532PRINTF:=@PRINTF@ 533PWD:=@THEPWDCMD@ 534RM:=@RM@ 535SED:=@SED@ 536SH:=@SH@ 537SORT:=@SORT@ 538TAR:=@TAR@ 539TAIL:=@TAIL@ 540TEE:=@TEE@ 541TIME:=@TIME@ 542IS_GNU_TIME:=@IS_GNU_TIME@ 543TR:=@TR@ 544TOUCH:=@TOUCH@ 545UNIQ:=@UNIQ@ 546WC:=@WC@ 547XARGS:=@XARGS@ 548ZIPEXE:=@ZIP@ 549ZIP:=@ZIP@ 550UNZIP:=@UNZIP@ 551MT:=@FIXPATH@ @MT@ 552RC:=@FIXPATH@ @RC@ 553DUMPBIN:=@FIXPATH@ @DUMPBIN@ 554CYGPATH:=@CYGPATH@ 555LDD:=@LDD@ 556OTOOL:=@OTOOL@ 557READELF:=@READELF@ 558EXPR:=@EXPR@ 559FILE:=@FILE@ 560HG:=@HG@ 561OBJCOPY:=@OBJCOPY@ 562SETFILE:=@SETFILE@ 563XATTR:=@XATTR@ 564JT_HOME:=@JT_HOME@ 565JTREGEXE:=@JTREGEXE@ 566XCODEBUILD=@XCODEBUILD@ 567FIXPATH:=@FIXPATH@ 568 569# Where the build output is stored for your convenience. 570BUILD_LOG:=@BUILD_LOG@ 571BUILD_LOG_PREVIOUS:=@BUILD_LOG_PREVIOUS@ 572# Disable the build log wrapper on sjavac+winapi until 573# we have solved how to prevent the log wrapper to wait 574# for the background sjavac server process. 575ifeq (@ENABLE_SJAVAC@X@OPENJDK_BUILD_OS_API@,yesXwinapi) 576 BUILD_LOG_WRAPPER:= 577else 578 BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@ 579endif 580 581# Build setup 582ENABLE_JFR=@ENABLE_JFR@ 583ENABLE_INTREE_EC=@ENABLE_INTREE_EC@ 584USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@ 585USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@ 586USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@ 587LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@ 588MSVCR_DLL:=@MSVCR_DLL@ 589 590 591# ADD_SRCS takes a single argument with source roots 592# and appends any corresponding source roots found 593# below --with-add-source-root and below 594# --with-override-source-root. It is the responsibility 595# of the next macro to get rid of superfluous files. 596ADD_SRCS=$1 597ifneq (,$(ADD_SRC_ROOT)) 598 # Append wildcard rule to pickup any matching source roots found below ADD_SRC_ROOT 599 ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(ADD_SRC_ROOT),$1)) 600endif 601ifneq (,$(OVERRIDE_SRC_ROOT)) 602 # Append wildcard rule to pickup any matching source roots found below OVERRIDE_SRC_ROOT 603 ADD_SRCS+=$(wildcard $(subst $(SRC_ROOT),$(OVERRIDE_SRC_ROOT),$1)) 604endif 605 606# OVR_SRCS creates a filter expression to filter out sources in 607# the original source directory that lie inside directories below 608# --with-override-source-root. 609# Use := here since we want to scan for these files here. To avoid recomputation later. 610# We cannot do the scan in configure, since that would force us to rerun configure when 611# we add overridden sources. 612ifneq (,$(OVERRIDE_SRC_ROOT)) 613 OVR_SRCS:=$(addsuffix %,$(subst $(OVERRIDE_SRC_ROOT),$(SRC_ROOT),$(sort $(dir $(shell $(FIND) $(OVERRIDE_SRC_ROOT) -type f))))) 614else 615 OVR_SRCS:= 616endif 617 618#################################################### 619# 620# INSTALLATION 621# 622 623# Common prefix for all installed files. Defaults to /usr/local, 624# but /opt/myjdk is another common version. 625INSTALL_PREFIX=@prefix@ 626 627# Directories containing architecture-dependent files should be relative to exec_prefix 628INSTALL_EXECPREFIX=@exec_prefix@ 629 630# java,javac,javah,javap etc are installed here. 631INSTALL_BINDIR=@bindir@ 632 633# Read only architecture-independent data 634INSTALL_DATADIR=@datadir@ 635 636# Root of above. 637INSTALL_DATAROOTDIR=@datarootdir@ 638 639# Doc files, other than info and man. 640INSTALL_DOCDIR=@docdir@ 641 642# Html documentation 643INSTALL_HTMLDIR=@htmldir@ 644 645# Installing C header files, JNI headers for example. 646INSTALL_INCLUDEDIR=@includedir@ 647 648# Installing library files.... 649INSTALL_INCLUDEDIR=@libdir@ 650 651# Executables that other programs run. 652INSTALL_LIBEXECDIR=@libexecdir@ 653 654# Locale-dependent but architecture-independent data, such as message catalogs. 655INSTALL_LOCALEDIR=@localedir@ 656 657# Modifiable single-machine data 658INSTALL_LOCALSTATEDIR=@localstatedir@ 659 660# Man pages 661INSTALL_MANDIR=@mandir@ 662 663# Modifiable architecture-independent data. 664INSTALL_SHAREDSTATEDIR=@sharedstatedir@ 665 666# Read-only single-machine data 667INSTALL_SYSCONFDIR=@sysconfdir@ 668 669#################################################### 670# 671# Libraries 672# 673 674USE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@ 675LCMS_CFLAGS:=@LCMS_CFLAGS@ 676LCMS_LIBS:=@LCMS_LIBS@ 677 678USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@ 679PNG_LIBS:=@PNG_LIBS@ 680PNG_CFLAGS:=@PNG_CFLAGS@ 681 682 683#################################################### 684# 685# Misc 686# 687 688# Name of Service Agent library 689SALIB_NAME=@SALIB_NAME@ 690 691INCLUDE_SA=@INCLUDE_SA@ 692 693OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@ 694OS_VERSION_MINOR:=@OS_VERSION_MINOR@ 695OS_VERSION_MICRO:=@OS_VERSION_MICRO@ 696 697# Images directory definitions 698JDK_IMAGE_SUBDIR:=j2sdk-image 699JRE_IMAGE_SUBDIR:=j2re-image 700JDK_OVERLAY_IMAGE_SUBDIR:=j2sdk-overlay-image 701JRE_OVERLAY_IMAGE_SUBDIR:=j2re-overlay-image 702# Colon left out to be able to override output dir for bootcycle-images 703JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR) 704JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR) 705JDK_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR) 706JRE_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR) 707 708# Macosx bundles directory definitions 709JDK_BUNDLE_SUBDIR=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents 710JRE_BUNDLE_SUBDIR=j2re-bundle/jre$(JDK_VERSION).jre/Contents 711JDK_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR) 712JRE_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR) 713 714# This macro is called to allow inclusion of closed source counterparts. 715# Unless overridden in closed sources, it expands to nothing. 716# Usage: This function is called in an open makefile, with the following 717# arguments: 718# $1 the name of the repo, or empty if the top-level repo. 719# $2 the name of the makefile 720define IncludeCustomExtension 721endef 722 723# Include the custom-spec.gmk file if it exists 724-include $(dir @SPEC@)/custom-spec.gmk 725