--- old/makefiles/common/Defs.gmk 2012-07-03 19:59:22.073691750 +0200 +++ /dev/null 2012-06-05 09:41:31.162991907 +0200 @@ -1,577 +0,0 @@ -# -# Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# -# Common variables used by all the Java makefiles. This file should -# not contain rules. -# - -# WARNING: This file is shared with other workspaces. -# So when it includes other files, it must use JDK_TOPDIR. -# - -# Check for strange explicit settings (change to empty or true) -ifdef OPENJDK - ifneq ($(OPENJDK),true) - x:=$(error "OPENJDK (if defined) can only be set to true") - endif -endif - -# -# On Solaris, the 'make' utility from Sun will not work with these makefiles. -# This little rule is only understood by Sun's make, and is harmless -# when seen by the GNU make tool. If using Sun's make, this causes the -# make command to fail. -# -SUN_MAKE_TEST:sh = echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33 - -include $(SPEC) -include $(JDK_MAKE_SHARED_DIR)/Platform.gmk - -# Historically PLATFORM_SRC used to be src/$(PLATFORM), but we switched it to -# src/solaris so if you want to build on Linux you didn't need a src/linux -# directory. In an ideal world it would be called src/genunix but we are not -# there yet. -# -ifndef SHARE_SRC - SHARE_SRC = $(BUILDDIR)/../src/share -endif - -# Files that cannot be included in the OpenJDK distribution are -# collected under a parent directory which contains just those files. -ifndef CLOSED_SRC - CLOSED_SRC = $(BUILDDIR)/../src/closed -endif - -# If CLOSE_SRC_INCLUDED isn't set to true, check if there's any -# closed directory. -ifneq ($(CLOSED_SRC_INCLUDED), true) - CLOSED_SRC_INCLUDED := $(shell \ - if [ -d $(CLOSED_SRC) ] ; then \ - echo true; \ - else \ - echo false; \ - fi) -endif - -# Set OPENJDK based on CLOSED_SRC_INCLUDED -ifeq ($(CLOSED_SRC_INCLUDED), false) - OPENJDK = true -endif - -# Define where closed directories are -ifdef OPENJDK - CLOSED_SRC = - CLOSED_SHARE_SRC = -else - ifndef CLOSED_SHARE_SRC - CLOSED_SHARE_SRC = $(CLOSED_SRC)/share - endif -endif - -# -# Get platform definitions -# - -include $(JDK_TOPDIR)/makefiles/common/Defs-$(PLATFORM).gmk - -# -# SE-Embedded support, if enabled -# - -include $(JDK_TOPDIR)/makefiles/common/Defs-embedded.gmk - -# -# Cross-compilation Settings -# -ifdef CROSS_COMPILE_ARCH - # Can't run the tools we just built - USE_ONLY_BOOTDIR_TOOLS = true - - # When cross-compiling CC generates code for the target, but - # some parts of the build generate C code that has to be compiled - # and executed on the build host - HOST_CC is the 'local' compiler. - # For linux the default is /usr/bin/gcc; other platforms need to - # set it explicitly - ifeq ($(PLATFORM), linux) - ifndef HOST_CC - HOST_CC = $(USRBIN_PATH)gcc - endif - endif -else - # Must set HOST_CC if not already set - ifndef HOST_CC - HOST_CC = $(CC) - endif -endif - -# Reset the VM name for client-only builds -ifeq ($(JVM_VARIANT),client) - VM_NAME = client -endif - -# -# Freetype logic is applicable to OpenJDK only -# -ifdef OPENJDK - -ifeq ($(PLATFORM), windows) - DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/win32/freetype-$(ARCH) -endif -ifeq ($(PLATFORM), linux) - DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(PLATFORM)/freetype-$(ARCH) -endif -ifeq ($(PLATFORM), solaris) - # historically for Solaris we have slightly different devtools - # naming conventions - DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/freetype-$(ARCH) -endif - -DEVTOOLS_FT_DIR_EXISTS = $(shell \ - if [ -f $(DEVTOOLS_FT_DIR)/include/ft2build.h ] ; then \ - echo true; \ - else \ - echo false; \ - fi) - - ifdef ALT_FREETYPE_LIB_PATH - FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH) - ifeq ($(PLATFORM), macosx) - USING_SYSTEM_FT_LIB=true - endif - else - ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true) - FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib - else - ifeq ($(PLATFORM), macosx) - FREETYPE_LIB_PATH = /usr/X11R6/lib - else - FREETYPE_LIB_PATH = /usr/lib - endif - USING_SYSTEM_FT_LIB=true - endif - endif - - ifdef ALT_FREETYPE_HEADERS_PATH - FREETYPE_HEADERS_PATH = $(ALT_FREETYPE_HEADERS_PATH) - else - ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true) - FREETYPE_HEADERS_PATH = $(DEVTOOLS_FT_DIR)/include - else - ifeq ($(PLATFORM), macosx) - FREETYPE_HEADERS_PATH = /usr/X11R6/include - else - FREETYPE_HEADERS_PATH = /usr/include - endif - endif - endif -endif - -# -# zlib version -# -ZLIB_VERSION = 1.2.5 - - -# -# Localizations for the different parts of the product beyond English -# - -JRE_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK -PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK -JDK_LOCALES = ja zh_CN - -# -# A list of locales we support but don't have resource files. -# This is defined to optimize the search of resource bundles. -# -JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh - -# -# For now, most libraries except libjava and libjvm itself link against libjvm -# and libjava, the latter for its exported common utilities. libjava only -# links against libjvm. Programs' makefiles take their own responsibility for -# adding other libs. -# -# The makefiles for these packages do not link against libjvm and libjava. -# This list will eventually go away and each Programs' makefiles -# will have to explicitly declare that they want to link to libjava/libjvm -# -NO_JAVALIB_PKGS = \ - sun.security.mscapi \ - sun.security.krb5 \ - sun.security.pkcs11 \ - sun.security.jgss \ - sun.security.jgss.wrapper \ - sun.security.ec \ - sun.security.smartcardio \ - com.sun.security.auth.module - -ifdef PACKAGE -# put JAVALIB first, but do not lose any platform specific values.... - ifeq (,$(findstring $(PACKAGE),$(NO_JAVALIB_PKGS))) - LDLIBS_COMMON = $(JAVALIB) - endif -endif # PACKAGE - -# -# Libraries that must appear ahead of libc.so on the link command line -# -ifdef PROGRAM - - ifeq ($(PLATFORM), solaris) - LDLIBS_COMMON = -lthread -ldl - endif - - ifeq ($(PLATFORM), linux) - LDLIBS_COMMON = -ldl - endif - - ifeq ($(PLATFORM), macosx) - LDLIBS_COMMON = -pthread - endif - -endif # PROGRAM - -LDLIBS_COMMON += $(EXTRA_LIBS) - -# for generated binaries -BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR) -# for generated libraries -LIBDIR = $(OUTPUTDIR)/lib -ABS_LIBDIR = $(ABS_OUTPUTDIR)/lib -# Optional place to save the windows .lib files -LIBFILES_DIR = $(OUTPUTDIR)/libfiles -# for ext jre files -EXTDIR = $(LIBDIR)/ext -# for generated include files -INCLUDEDIR = $(OUTPUTDIR)/include -# for generated class files -CLASSBINDIR = $(OUTPUTDIR)/classes -DEMOCLASSDIR = $(OUTPUTDIR)/democlasses -# for generated tool class files -BUILDTOOLCLASSDIR = $(OUTPUTDIR)/btclasses -# for build tool jar files -BUILDTOOLJARDIR = $(OUTPUTDIR)/btjars -ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars -# for generated tool class files -BUILDTOOLBINDIR = $(OUTPUTDIR)/btbins -# for generated java source files -GENSRCDIR = $(OUTPUTDIR)/gensrc -# for generated C source files (not javah) -GENNATIVESRCDIR = $(OUTPUTDIR)/gennativesrc -# for imported source files -IMPORTSRCDIR = $(OUTPUTDIR)/impsrc -# for imported documents -IMPORTDOCDIR = $(OUTPUTDIR)/impdoc -# for generated demo -DEMODIR = $(OUTPUTDIR)/demo -NEWDEMODIR = $(OUTPUTDIR)/newdemo -# for sample code -SAMPLEDIR = $(OUTPUTDIR)/sample -# for generated documentation -DOCSDIR = $(OUTPUTDIR)/docs$(DOCSDIRSUFFIX) -DOCSDIRSUFFIX = - -# The MESSAGE, WARNING and ERROR files are used to store sanityck and -# warnings and errors. -ifndef ERROR_FILE - ERROR_FILE = $(OUTPUTDIR)/sanityCheckErrors.txt -endif -ifndef WARNING_FILE - WARNING_FILE = $(OUTPUTDIR)/sanityCheckWarnings.txt -endif -ifndef MESSAGE_FILE - MESSAGE_FILE = $(OUTPUTDIR)/sanityCheckMessages.txt -endif - -#where the demo source can be found -DEMOSRCDIR = $(SHARE_SRC)/demo - -#where the sample source can be found -SAMPLESRCDIR = $(SHARE_SRC)/sample - -# An attempt is made to generate unique enough directories for the -# generated files to not have name collisisons. Most build units -# defines PRODUCT (except Release.gmk), but then they may or may -# not define PACKAGE, PROGRAM, and LIBRARY. This code attempts to -# generate a unique OBJDIR/CLASSHDRDIR for each build unit based -# on which of those values are set within each build unit. - -UNIQUE_LOCATION_STRING = tmp - -ifneq ($(PRODUCT),) - UNIQUE_LOCATION_STRING += /$(PRODUCT) -endif - -ifneq ($(PACKAGE),) - UNIQUE_LOCATION_STRING += /$(PACKAGE) -endif - -ifneq ($(PROGRAM),) - UNIQUE_LOCATION_STRING += /$(PROGRAM) -endif - -ifneq ($(LIBRARY),) - ifneq ($(LIBRARY_OUTPUT),) - UNIQUE_LOCATION_STRING += /$(LIBRARY_OUTPUT) - else - UNIQUE_LOCATION_STRING += /$(LIBRARY) - endif -endif - -# the use of += above makes a space separated list which we need to -# remove for filespecs. -# -NULLSTRING := -ONESPACE := $(NULLSTRING) # space before this comment is required. -UNIQUE_PATH = $(subst $(ONESPACE),,$(UNIQUE_LOCATION_STRING)) - -# TEMPDIR is a unique general purpose directory -# need to use 'override' because GNU Make on Linux exports the wrong -# value. -TEMPDIR ?= $(OUTPUTDIR)/$(UNIQUE_PATH) -ABS_TEMPDIR ?= $(ABS_OUTPUTDIR)/$(UNIQUE_PATH) - -# This must be created right away for pattern rules in Sanity.gmk to work. -dummy1:=$(shell $(MKDIR) -p $(TEMPDIR)) -dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK)) - -# OBJDIRNAME is the name of the directory where the object code is to -# be placed. It's name depends on whether the data model architecture -# is 32-bit or not. -ifneq ($(ARCH_DATA_MODEL), 32) - OBJDIRNAME = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX) -else - OBJDIRNAME = obj$(OBJDIRNAME_SUFFIX) -endif -OBJDIR = $(TEMPDIR)/$(OBJDIRNAME) - -# CLASSHDRDIR is where the generated C Class Header files go. -CLASSHDRDIR = $(TEMPDIR)/CClassHeaders - -# -# CLASSDESTDIR can be used to specify the directory where generated classes -# are to be placed. The default is CLASSBINDIR. -# -ifndef CLASSDESTDIR -CLASSDESTDIR = $(CLASSBINDIR) -endif - -INCLUDES = -I. -I$(CLASSHDRDIR) \ - $(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES) -OTHER_CPPFLAGS += $(INCLUDES) - -# -# vpaths. These are the default locations searched for source files. -# GNUmakefiles of individual areas often override the default settings. -# There are no longer default vpath entries for C and assembler files -# so we can ensure that libraries don't get their hands on JVM files. -# -# We define an intermediate variable for Java files because -# we use its value later to help define $SOURCEPATH - -ifeq ($(PLATFORM), macosx) - VPATH0.java = $(subst $(ONESPACE),:,$(GENSRCDIR) $(call JavaSrcDirList,,classes)) -else - VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes -endif - -ifdef OPENJDK - VPATH.java = $(VPATH0.java) -else - # - # If filenames are duplicated between open/closed workspaces, prefer - # the closed files. - # - # Source ordering is important: some targets depend on closed files - # replacing open ones, and thus the closed file sources must be found - # before the open ones. - # - # Don't reorder without consulting the teams that depend on this behavior. - # - VPATH.java = $(CLOSED_PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(CLOSED_SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(VPATH0.java) -endif -vpath %.java $(VPATH.java) -vpath %.class $(CLASSBINDIR) -vpath %.$(OBJECT_SUFFIX) $(OBJDIR) - -# -# VPATH.h is used elsewhere to generate include flags. By default, -# anyone has access to the include files that the JVM area exports, -# namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific -# relatives. -# -VPATH0.h = $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export -ifdef OPENJDK - VPATH.h = $(VPATH0.h) -else - VPATH.h = $(CLOSED_SHARE_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(VPATH0.h) -endif -vpath %.h $(VPATH.h) - -# -# Used in two ways: helps link against libjava.so. Also if overridden -# determines where your shared library is installed. -# -ifndef LIB_LOCATION - LIB_LOCATION = $(LIBDIR)/$(LIBARCH) -endif - -# -# Java header and stub variables -# -CLASSHDRS = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export))) -CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX) -STUBPREAMBLE = $(INCLUDEDIR)/StubPreamble.h - -# -# Classpath seen by javac (different from the one seen by the VM -# running javac), and useful variables. -# -SOURCEPATH = $(VPATH.java) -PKG = $(shell $(EXPR) $(PACKAGE) : '\([a-z]*\)') -PKGDIR = $(subst .,/,$(PACKAGE)) - -# -# The java/javac/jdk variables (JAVAC_CMD, JAVA_CMD, etc.) -# -include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk - -UNIQUE_PATH_PATTERN = $(subst /,.,$(UNIQUE_PATH)) - -# Run MAKE $@ for a launcher: -# $(call make-launcher, name, mainclass, java-args, main-args) -define make-launcher -$(CD) $(BUILDDIR)/launchers && \ -$(MAKE) -f Makefile.launcher \ - PROGRAM=$(strip $1) \ - MAIN_CLASS=$(strip $2) \ - MAIN_JAVA_ARGS="$(strip $3)" \ - MAIN_ARGS="$(strip $4)" -endef - -# -# Convenient macros -# - -# Prepare $@ target, remove old one and making sure directory exists -define prep-target -mkdir -p $(@D) -rm -f $@ -endef - -# Simple install of $< file to $@ -define install-file -$(prep-target) -$(CP) $< $@ -endef - -define chmod-file -$(CHMOD) $1 $@ -endef - -define install-sym-link -$(LN) -s $1 $@ -endef - -define install-manifest-file -$(install-file) -endef - -# Cleanup rule for after debug java run (hotspot.log file is left around) -# (This could be an old leftover file in a read-only area, use the @- prefix) -HOTSPOT_LOG_NAME = hotspot.log -define java-vm-cleanup -if [ -w $(HOTSPOT_LOG_NAME) ] ; then rm -f $(HOTSPOT_LOG_NAME); fi -endef - -# Current directory -CURRENT_DIRECTORY := $(shell $(PWD)) - -# -# Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is -# used for this file, otherwise the default settings are used. -# -CFLAGS_$(VARIANT)/BYFILE = $(CFLAGS_$(VARIANT)/$(@F)) \ - $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F))) -CXXFLAGS_$(VARIANT)/BYFILE = $(CXXFLAGS_$(VARIANT)/$(@F)) \ - $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F))) - -# -# Tool flags -# -# EXTRA_CFLAGS are used to define cross-compilation options -# -ASFLAGS = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS) -CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS) -CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CFLAGS) -CPPFLAGS = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \ - $(DEFINES) $(OPTIONS:%=-D%) -LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS) -LDLIBS = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON) -LINTFLAGS = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \ - $(OTHER_LINTFLAGS) - -VERSION_DEFINES = -DRELEASE='"$(RELEASE)"' - -ifdef INSANE - export INSANE -endif - -ifdef ALT_COPYRIGHT_YEAR - COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR) -else - COPYRIGHT_YEAR := $(shell $(DATE) '+%Y') -endif - -ifndef OPENJDK -include $(JDK_TOPDIR)/make/closed/common/Defs.gmk -endif - -# Install of imported file (JDK_IMPORT_PATH, or some other external location) -define install-importonly-file -@$(ECHO) "ASSEMBLY_IMPORT: $@" -$(prep-target) -$(CP) $< $@ -@if [ "$(PLATFORM)" = "linux" -a "$(@F)" = "libjvm.so" ] ; then \ - if [ -x /usr/sbin/selinuxenabled ] ; then \ - /usr/sbin/selinuxenabled; \ - if [ $$? = 0 ] ; then \ - $(ECHO) "/usr/bin/chcon -t textrel_shlib_t $@"; \ - /usr/bin/chcon -t textrel_shlib_t $@; \ - if [ $$? != 0 ]; then \ - echo "ERROR: Cannot chcon $@"; \ - fi; \ - fi; \ - fi; \ -fi -endef - -define install-import-file -$(install-importonly-file) -endef - -.PHONY: all build clean clobber