4632N/A#
4944N/A# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
4632N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4632N/A#
4632N/A# This code is free software; you can redistribute it and/or modify it
4632N/A# under the terms of the GNU General Public License version 2 only, as
4632N/A# published by the Free Software Foundation. Oracle designates this
4632N/A# particular file as subject to the "Classpath" exception as provided
4632N/A# by Oracle in the LICENSE file that accompanied this code.
4632N/A#
4632N/A# This code is distributed in the hope that it will be useful, but WITHOUT
4632N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4632N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4632N/A# version 2 for more details (a copy is included in the LICENSE file that
4632N/A# accompanied this code).
4632N/A#
4632N/A# You should have received a copy of the GNU General Public License version
4632N/A# 2 along with this work; if not, write to the Free Software Foundation,
4632N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4632N/A#
4632N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4632N/A# or visit www.oracle.com if you need additional information or have any
4632N/A# questions.
4632N/A#
4632N/A
4632N/A#
4632N/A# Makefile to specify compiler flags for programs and libraries
4632N/A# targeted to MACOSX. Should not contain any rules.
4632N/A#
4632N/A# WARNING: This file is shared with other workspaces.
4632N/A# So when it includes other files, it must use JDK_TOPDIR.
4632N/A#
4632N/A
4632N/A# Warning: the following variables are overriden by Defs.gmk. Set
4632N/A# values will be silently ignored:
4632N/A# CFLAGS (set $(OTHER_CFLAGS) instead)
4632N/A# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
4632N/A# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
4632N/A# LDFLAGS (set $(OTHER_LDFAGS) instead)
4632N/A# LDLIBS (set $(EXTRA_LIBS) instead)
4632N/A# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
4632N/A
4632N/A# Get shared JDK settings
4632N/Ainclude $(JDK_MAKE_SHARED_DIR)/Defs.gmk
4632N/A
4632N/A# Part of INCREMENTAL_BUILD mechanism.
4632N/A# Compiler emits things like: path/file.o: file.h
4632N/A# We want something like: relative_path/file.o relative_path/file.d: file.h
4632N/ACC_DEPEND = -MM
4632N/ACC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
4632N/A
4632N/Aifndef PLATFORM_SRC
4632N/A PLATFORM_SRC = $(BUILDDIR)/../src/solaris
4632N/Aendif # PLATFORM_SRC
4632N/A
4924N/A# Location of the various .properties files specific to MacOS X platform
4924N/Aifndef PLATFORM_PROPERTIES
4924N/A PLATFORM_PROPERTIES = $(BUILDDIR)/../src/macosx/lib
4924N/Aendif # PLATFORM_SRC
4924N/A
4797N/APLATFORM_SRC_MACOS = $(BUILDDIR)/../src/macosx
4797N/A
4632N/A# BSD build pulls its platform sources from the solaris tree.
4632N/AJAVA_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share
4632N/ANATIVE_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share
4632N/A
4632N/A# Platform specific closed sources
4632N/Aifndef OPENJDK
4632N/A ifndef CLOSED_PLATFORM_SRC
4632N/A CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/solaris
4632N/A endif
4632N/Aendif
4632N/A
4632N/A# platform specific include files
4632N/APLATFORM_INCLUDE_NAME = $(OS_NAME)
4632N/APLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
4632N/A
4632N/A# suffix used for make dependencies files.
4632N/ADEPEND_SUFFIX = d
4632N/A# The suffix applied to the library name for FDLIBM
4632N/AFDDLIBM_SUFFIX = a
4632N/A# The suffix applied to scripts (.bat for windows, nothing for unix)
4632N/ASCRIPT_SUFFIX =
4632N/A# CC compiler object code output directive flag value
4632N/ACC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
4632N/ACC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
4632N/A
4632N/A#
4632N/A# Default optimization
4632N/A#
4632N/A
4632N/Aifndef OPTIMIZATION_LEVEL
4632N/A ifeq ($(PRODUCT), java)
4632N/A OPTIMIZATION_LEVEL = HIGHER
4632N/A else
4632N/A OPTIMIZATION_LEVEL = LOWER
4632N/A endif
4632N/Aendif
4632N/Aifndef FASTDEBUG_OPTIMIZATION_LEVEL
4632N/A FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
4632N/Aendif
4632N/A
4632N/A# For macosx use -Os by default, unless -O3 can be proved to be worth the cost, as per policy
4632N/A# <http://wikis.sun.com/display/OpenJDK/Mac+OS+X+Port+Compilers>
4632N/ACC_OPT/NONE =
4632N/ACC_OPT/LOWER = -Os
4632N/ACC_OPT/HIGHER = -Os
4632N/ACC_OPT/HIGHEST = -Os
4632N/A
4632N/ACC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
4632N/A
4632N/A# For all platforms, do not omit the frame pointer register usage.
4632N/A# We need this frame pointer to make it easy to walk the stacks.
4944N/A# This should be the default on X86, but ia64, and x86_64
4944N/A# may not have this as the default.
4944N/ACFLAGS_REQUIRED_x86_64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
4944N/ALDFLAGS_COMMON_x86_64 += -m64
4632N/ACFLAGS_REQUIRED_i586 += -m32 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
4632N/ALDFLAGS_COMMON_i586 += -m32
4632N/ACFLAGS_REQUIRED_ia64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
4632N/ACFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
4632N/ALDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
4632N/ACFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
4632N/ALDFLAGS_COMMON_sparc += -m32 -mcpu=v9
4632N/ACFLAGS_REQUIRED_arm += -fsigned-char -D_LITTLE_ENDIAN
4632N/ACFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN
4632N/Aifeq ($(ZERO_BUILD), true)
4632N/A CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
4632N/A ifeq ($(ZERO_ENDIANNESS), little)
4632N/A CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
4632N/A endif
4632N/A LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
4632N/Aelse ifeq ($(ARCH), universal)
4632N/A CFLAGS_REQUIRED += -arch i386 -arch x86_64 -D_LITTLE_ENDIAN
4632N/A LDFLAGS_COMMON += -arch i386 -arch x86_64
4632N/Aelse
4632N/A CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
4632N/A LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
4632N/Aendif
4632N/A# 16-byte stack re-alignment on 32-bit Darwin
4632N/ACFLAGS_REQUIRED_i586 += -mstackrealign
4632N/A
4632N/AOTHER_CFLAGS = \
4632N/A -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
4632N/A -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
4632N/A
4632N/A#
4632N/A# Selection of warning messages
4632N/A#
4632N/AGCC_INHIBIT = -Wno-unused -Wno-parentheses
4632N/AGCC_STYLE =
4632N/AGCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
4632N/A
4632N/A#
4632N/A# Treat compiler warnings as errors, if warnings not allowed
4632N/A#
4632N/Aifeq ($(COMPILER_WARNINGS_FATAL),true)
4632N/A GCC_WARNINGS += -Werror
4632N/Aendif
4632N/A
4632N/A#
4632N/A# Misc compiler options
4632N/A#
4632N/Aifneq ($(ARCH),ppc)
4632N/A CFLAGS_COMMON = -fno-strict-aliasing
4632N/Aendif
4632N/APIC_CODE_LARGE = -fPIC
4632N/APIC_CODE_SMALL = -fpic
4632N/AGLOBAL_KPIC = $(PIC_CODE_LARGE)
4632N/ACFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
4944N/Aifeq ($(ARCH), x86_64)
4632N/A CFLAGS_COMMON += -pipe
4632N/Aendif
4632N/A
4632N/A# BSD 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
4632N/ADEBUG_FLAG = -g
4632N/Aifeq ($(FASTDEBUG), true)
4632N/A ifeq ($(ARCH_DATA_MODEL), 64)
4632N/A DEBUG_FLAG = -g1
4632N/A endif
4632N/Aendif
4632N/A
4632N/A# DEBUG_BINARIES overrides everything, use full -g debug information
4632N/Aifeq ($(DEBUG_BINARIES), true)
4632N/A DEBUG_FLAG = -g
4632N/A CFLAGS_REQUIRED += $(DEBUG_FLAG)
4632N/Aendif
4632N/A
4632N/ACFLAGS_OPT = $(CC_OPT)
4632N/ACFLAGS_DBG = $(DEBUG_FLAG)
4632N/ACFLAGS_COMMON += $(CFLAGS_REQUIRED)
4632N/A
4632N/ACXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
4632N/ACXXFLAGS_OPT = $(CC_OPT)
4632N/ACXXFLAGS_DBG = $(DEBUG_FLAG)
4632N/ACXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
4632N/A
4632N/A# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
4632N/Aifeq ($(FASTDEBUG), true)
4632N/A CFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
4632N/A CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
4632N/Aendif
4632N/A
4632N/ACPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
4632N/A
4632N/A# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
4632N/Aifneq ($(ARCH),alpha)
4632N/A CPP_ARCH_FLAGS += -D$(ARCH)
4632N/Aelse
4632N/A CPP_ARCH_FLAGS += -D_$(ARCH)_
4632N/Aendif
4632N/ACPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -D_ALLBSD_SOURCE $(VERSION_DEFINES) \
4632N/A -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
4632N/A
4632N/ACPPFLAGS_COMMON += -DMACOSX
4632N/A
4632N/Aifeq ($(ARCH_DATA_MODEL), 64)
4632N/ACPPFLAGS_COMMON += -D_LP64=1
4632N/Aendif
4632N/A
4632N/ACPPFLAGS_OPT = -DNDEBUG
4632N/ACPPFLAGS_DBG = -DDEBUG
4632N/Aifneq ($(PRODUCT), java)
4632N/A CPPFLAGS_DBG += -DLOGGING
4632N/Aendif
4632N/A
4632N/A# Libraries need to locate other libraries at runtime, and you can tell
4632N/A# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
4632N/A# buried inside the .{so,dylib}. The {$ORIGIN,@loader_path/} says to look
4632N/A# relative to where the library itself is and it can be followed
4632N/A# with relative paths from that. By default we always look in
4632N/A# {$ORIGIN,@loader_path/}, optionally we add relative paths if the Makefile
4632N/A# sets LD_RUNPATH_EXTRAS to those relative paths.
4632N/A# Except on MacOS X we add a flag -z origin, not sure if this is necessary,
4632N/A# but doesn't seem to hurt.
4632N/A# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
4632N/A# See 'man {dyld,rtld}' for more information.
4632N/A# Try: 'readelf -d lib*.so' to see these settings in a library.
4632N/A#
4632N/ALDFLAGS_COMMON += -Xlinker -rpath -Xlinker @loader_path/.
4632N/ALDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -rpath -Xlinker @loader_path/%)
4632N/ALDFLAGS_COMMON += -Xlinker -install_name -Xlinker @rpath/$(@F)
4632N/A
4632N/A#
4632N/A# -L paths for finding and -ljava
4632N/A#
4632N/ALDFLAGS_COMMON += -L$(LIBDIR)
4632N/A
4632N/A#
4632N/A# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
4632N/A# statically link libgcc but will print a warning with the flag. We don't
4632N/A# want the warning, so check gcc version first.
4632N/A#
4632N/Aifeq ($(CC_MAJORVER),3)
4632N/A OTHER_LDFLAGS += -static-libgcc
4632N/Aendif
4632N/A
4632N/A# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
4632N/A# (See Rules.gmk) The gcc 5 compiler might have an option for this?
4632N/AAUTOMATIC_PCH_OPTION =
4632N/A
4632N/A#
4632N/A# Post Processing of libraries/executables
4632N/A#
4632N/Aifeq ($(VARIANT), OPT)
4632N/A ifneq ($(NO_STRIP), true)
4632N/A ifneq ($(DEBUG_BINARIES), true)
4632N/A # Debug 'strip -S' leaves local function Elf symbols (better stack
4632N/A # traces)
4632N/A POST_STRIP_PROCESS = $(STRIP) -S
4632N/A endif
4632N/A endif
4632N/Aendif
4632N/A
4632N/A#
4632N/A# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
4632N/A#
4632N/ALD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
4632N/A
4632N/A#
4632N/A# Support for Quantify.
4632N/A#
4632N/Aifdef QUANTIFY
4632N/AQUANTIFY_CMD = quantify
4632N/AQUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
4632N/ALINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
4632N/Aendif
4632N/A
4632N/A# Darwin does not support linker map files.
4632N/ALDNOMAP=true
4632N/A
4632N/A#
4632N/A# Path and option to link against the VM, if you have to. Note that
4632N/A# there are libraries that link against only -ljava, but they do get
4632N/A# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
4632N/A# the library itself should not.
4632N/A#
4632N/AVM_NAME = server
4632N/AJVMLIB = -L$(LIBDIR)/$(VM_NAME) -ljvm
4632N/AJAVALIB = -ljava $(JVMLIB)
4632N/A
4632N/A#
4632N/A# We want to privatize JVM symbols on Solaris. This is so the user can
4632N/A# write a function called FindClass and this should not override the
4632N/A# FindClass that is inside the JVM. At this point in time we are not
4632N/A# concerned with other JNI libraries because we hope that there will
4632N/A# not be as many clashes there.
4632N/A#
4632N/APRIVATIZE_JVM_SYMBOLS = false
4632N/A
4632N/AUSE_PTHREADS = true
4632N/Aoverride ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
4632N/Aoverride AWT_RUNPATH =
4632N/Aoverride HAVE_ALTZONE = false
4632N/Aoverride HAVE_FILIOH = false
4632N/Aoverride HAVE_GETHRTIME = false
4632N/Aoverride HAVE_GETHRVTIME = false
4632N/Aoverride HAVE_SIGIGNORE = true
4632N/Aoverride LEX_LIBRARY = -lfl
4632N/Aifeq ($(STATIC_CXX),true)
4632N/Aoverride LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
4632N/Aelse
4632N/Aoverride LIBCXX = -lstdc++
4632N/Aendif
4632N/Aoverride LIBPOSIX4 =
4632N/Aoverride LIBSOCKET =
4632N/Aoverride LIBNSL =
4632N/Aoverride LIBTHREAD =
4632N/Aoverride LIBDL =
4632N/Aoverride MOOT_PRIORITIES = true
4632N/Aoverride NO_INTERRUPTIBLE_IO = true
4632N/Aoverride OPENWIN_HOME = $(X11_PATH)
4632N/Aoverride OPENWIN_LIB = $(OPENWIN_HOME)/lib
4632N/Aoverride OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
4632N/Aoverride SUN_CMM_SUBDIR =
4632N/Aoverride THREADS_FLAG = native
4632N/Aoverride USE_GNU_M4 = true
4632N/Aoverride USING_GNU_TAR = true
4632N/Aoverride WRITE_LIBVERSION = false
4632N/A
4632N/Aifdef ALT_X11_PATH
4632N/A X11_PATH = $(ALT_X11_PATH)
4632N/Aelse
4632N/A X11_PATH = /usr/X11R6
4632N/Aendif
4632N/A
4632N/Aifdef ALT_PACKAGE_PATH
4632N/A PACKAGE_PATH = $(ALT_PACKAGE_PATH)
4632N/Aelse
4632N/A PACKAGE_PATH = /opt/local
4632N/Aendif
4632N/A
4632N/A# ALSA
4632N/Aifdef ALT_ALSA_LIB_PATH
4632N/A ALSA_LIB_PATH = $(ALT_ALSA_LIB_PATH)
4632N/Aelse
4632N/A ALSA_LIB_PATH = $(PACKAGE_PATH)/lib
4632N/Aendif
4632N/A
4632N/Aifdef ALT_ALSA_HEADERS_PATH
4632N/A ALSA_HEADERS_PATH = $(ALT_ALSA_HEADERS_PATH)
4632N/Aelse
4632N/A ALSA_HEADERS_PATH = $(PACKAGE_PATH)/include
4632N/Aendif
4632N/A
4632N/A# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
4632N/A# resulting resolved absolute name of the executable in the environment
4632N/A# variable EXECNAME. That executable name is then used that to locate the
4632N/A# installation area.
4632N/Aoverride USE_EXECNAME = true
4632N/A
4632N/A# If your platform has DPS, it will have Type1 fonts too, in which case
4632N/A# it is best to enable DPS support until such time as 2D's rasteriser
4632N/A# can fully handle Type1 fonts in all cases. Default is "yes".
4632N/A# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
4632N/A# DPS (Displayable PostScript) is available on Solaris machines
4632N/AHAVE_DPS = no
4632N/A
4632N/ASYSTEM_ZLIB = true
4632N/A
4632N/A#
4632N/A# Japanese manpages
4632N/A#
4632N/AJA_SOURCE_ENCODING = eucJP
4632N/AJA_TARGET_ENCODINGS = UTF-8
4632N/A
4632N/A# Settings for the JDI - Serviceability Agent binding.
4632N/A
4632N/AHOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib
4632N/ASALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
4632N/A
4632N/A# The JDI - Serviceability Agent binding is not currently supported
4632N/A# on ia64.
4632N/Aifeq ($(ARCH), ia64)
4632N/A INCLUDE_SA = false
4632N/Aelse
4632N/A INCLUDE_SA = true
4632N/Aendif
4632N/A
4632N/Aifdef CROSS_COMPILE_ARCH
4632N/A # X11 headers are not under /usr/include
4632N/A OTHER_CFLAGS += -I$(OPENWIN_HOME)/include
4632N/A OTHER_CXXFLAGS += -I$(OPENWIN_HOME)/include
4632N/A OTHER_CPPFLAGS += -I$(OPENWIN_HOME)/include
4632N/Aendif
4632N/A
4632N/ALIB_LOCATION ?= $(LIBDIR)