Defs.gmk revision 1777
381N/A# Copyright 1995-2008 Sun Microsystems, Inc. All Rights Reserved. 0N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A# This code is free software; you can redistribute it and/or modify it 0N/A# under the terms of the GNU General Public License version 2 only, as 0N/A# published by the Free Software Foundation. Sun designates this 0N/A# particular file as subject to the "Classpath" exception as provided 0N/A# by Sun in the LICENSE file that accompanied this code. 0N/A# This code is distributed in the hope that it will be useful, but WITHOUT 0N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A# version 2 for more details (a copy is included in the LICENSE file that 0N/A# accompanied this code). 0N/A# You should have received a copy of the GNU General Public License version 0N/A# 2 along with this work; if not, write to the Free Software Foundation, 0N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/A# CA 95054 USA or visit www.sun.com if you need additional information or 0N/A# have any questions. 0N/A# Common variables used by all the Java makefiles. This file should 0N/A# WARNING: This file is shared with other workspaces. 0N/A# So when it includes other files, it must use JDK_TOPDIR. 116N/A# Check for strange explicit settings (change to empty or true) 116N/A x:=
$(error "OPENJDK (if defined) can only be set to true") 0N/A# On Solaris, the 'make' utility from Sun will not work with these makefiles. 0N/A# This little rule is only understood by Sun's make, and is harmless 0N/A# when seen by the GNU make tool. If using Sun's make, this causes the 0N/A# make command to fail. 9N/A # Hack, due to deploy repository using this file. 0N/A# Historically PLATFORM_SRC used to be src/$(PLATFORM), but we switched it to 0N/A# directory. In an ideal world it would be called src/genunix but we are not 0N/A# Files that cannot be included in the OpenJDK distribution are 0N/A# collected under a parent directory which contains just those files. 0N/A# If we have no closed directory, force it to an openjdk build 0N/A# Define where closed directories are 0N/A# If OPENJDK is defined, we may still need to use some native libraries that 0N/A# exist only as part of the closed source. If the closed sources are not 0N/A# available, the libraries must have been pre-built. Since these libraries 0N/A# and the JDK internal interfaces to these are reasonably stable this is not 0N/A# a significant problem. But we do need to provide a way to locate them, 0N/A# including a way to point to a new one when there have been changes. 0N/A# If you have a formal binary plugs download, set ALT_BINARY_PLUGS_PATH 0N/A# (Optionally you can set ALT_CLOSED_JDK_IMPORT_PATH to point to the latest 0N/A# build JDK, or last promotion for this JDK version, but will not work 0N/A# As the OPENJDK is built, the binary plugs are used instead of building the 0N/A# Individual Makefiles that specify USE_BINARY_PLUG_LIBRARY, will get 0N/A# the binary plug copy (or a copy from a built JDK). 0N/A# ALT_BINARY_PLUGS_JARFILE is probably rarely needed. It can be used 0N/A# to identify the exact jar file to be used for all closed classes.. 0N/A# ALT_BINARY_PLUGS_PATH points to a directory containing precisely the 0N/A# binaries needed to build. 0N/A# ALT_BUILD_BINARY_PLUGS_PATH points to a directory containing binary plug dirs 0N/A# multiple architectures named using the standard conventions 0N/A# This is useful for build scripts that need to build multiple architectures 0N/A# ALT_CLOSED_JDK_IMPORT_PATH points to the top-level of a specific platform 0N/A# The precedence is that 0N/A# 1. ALT_BINARY_PLUGS_JARFILE overrides any other location of the classes 0N/A# 2. ALT_BINARY_PLUGS_PATH overrides all locations of classes and libraries 0N/A# 3. ALT_BUILD_BINARY_PLUGS_PATH is used to find a ALT_BINARY_PLUGS_PATH 0N/A# 4. ALT_CLOSED_JDK_IMPORT_PATH is used to locate classes and libraries 971N/A# Note: If any of the ALT_ variables are modified here, it is assumed 971N/A# that the build should be done with IMPORT_BINARY_PLUGS=true as 971N/A# well. Otherwise the default will be IMPORT_BINARY_PLUGS=false. 971N/A# Lastly, setting IMPORT_BINARY_PLUGS=false on the command line 971N/A# will override this logic, and plugs will not be imported. 0N/A# Get platform definitions 0N/A# Freetype logic is applicable to OpenJDK only 0N/A#if we use system lib we do not need to copy it to build tree 0N/A # historically for Solaris we have slightly different devtools 0N/A # naming conventions 0N/A# Localizations for the different parts of the product beyond English 0N/A# A list of locales we support but don't have resource files. 0N/A# This is defined to optimize the search of resource bundles. 0N/A# All libraries except libjava and libjvm itself link against libjvm and 0N/A# libjava, the latter for its exported common utilities. libjava only links 0N/A# against libjvm. Programs' makefiles take their own responsibility for 0N/A# put JAVALIB first, but do not lose any platform specific values.... 0N/A# Libraries that must appear ahead of libc.so on the link command line 0N/A# Default is to build, not import native binaries 0N/A# If importing libraries in, no incremental builds 0N/A# for generated libraries 0N/A# Optional place to save the windows .lib files 0N/A# for generated include files 0N/A# for generated class files 0N/A# for generated tool class files 0N/A# for build tool jar files 165N/A# for generated tool class files 0N/A# for generated java source files 0N/A# for generated C source files (not javah) 0N/A# for imported source files 0N/A# for imported documents 0N/A# for generated documentation 0N/A# The MESSAGE, WARNING and ERROR files are used to store sanityck and 0N/A# SCCS check messages, warnings and errors. 0N/A#where the demo source can be found 0N/A# An attempt is made to generate unique enough directories for the 0N/A# generated files to not have name collisisons. Most build units 0N/A# not define PACKAGE, THREADIR (only HPI uses this), PROGRAM, and 0N/A# LIBRARY. This code chunk attempts to generate a unique 0N/A# values are set within each build unit. 0N/A# the use of += above makes a space separated list which we need to 0N/A# remove for filespecs. 0N/A# TEMPDIR is a unique general purpose directory 0N/A# need to use 'override' because GNU Make on Linux exports the wrong 0N/A# This must be created right away for pattern rules in Sanity.gmk to work. 0N/A# OBJDIRNAME is the name of the directory where the object code is to 0N/A# be placed. It's name depends on whether the data model architecture 0N/A# CLASSHDRDIR is where the generated C Class Header files go. 0N/A# CLASSDESTDIR can be used to specify the directory where generated classes 0N/A# are to be placed. The default is CLASSBINDIR. 0N/A# vpaths. These are the default locations searched for source files. 0N/A# GNUmakefiles of individual areas often override the default settings. 0N/A# There are no longer default vpath entries for C and assembler files 0N/A# so we can ensure that libraries don't get their hands on JVM files. 0N/A# We define an intermediate variable for Java files because 0N/A# we use its value later to help define $SOURCEPATH 0N/A # If filenames are duplicated between open/closed workspaces, prefer 0N/A # Source ordering is important: some targets depend on closed files 0N/A # replacing open ones, and thus the closed file sources must be found 0N/A # before the open ones. 0N/A # Don't reorder without consulting the teams that depend on this behavior. 0N/A# VPATH.h is used elsewhere to generate include flags. By default, 0N/A# anyone has access to the include files that the JVM area exports, 0N/A# Used in two ways: helps link against libjava.so. Also if overridden 0N/A# determines where your shared library is installed. 0N/A# Java header and stub variables 0N/A# Classpath seen by javac (different from the one seen by the VM 0N/A# running javac), and useful variables. 0N/A# Prepare $@ target, remove old one and making sure directory exists 0N/A# Simple install of $< file to $@ 0N/A# Cleanup rule for after debug java run (hotspot.log file is left around) 0N/A# (This could be an old leftover file in a read-only area, use the @- prefix) 0N/A# Default make settings for processing SUBDIRS with clobber or clean names 0N/A# If no timing wanted, we need to define these as empty 0N/A# Timing start (must be used in same shell, e.g. same command line) 0N/A# Defines the shell variable $1 to have the start time. 0N/A# Timing end (must be used in same shell, e.g. same command line) 0N/A# Expects shell variable $1 to have been defined as the start time. 0N/A# Expects shell variable $2 to have timing id string 0N/A# Sets total_seconds shell variable as the total seconds used. 0N/A# Sets time_used shell variable to contain format "%dh%dm%ds" 0N/Aif [
"$${d1}" =
"" ] ;
then d1=
0;
fi; \
0N/Aif [
"$${h1}" =
"" ] ;
then h1=
0;
fi; \
0N/Aif [
"$${m1}" =
"" ] ;
then m1=
0;
fi; \
0N/Aif [
"$${s1}" =
"" ] ;
then s1=
0;
fi; \
0N/Aif [
"$${d2}" =
"" ] ;
then d2=
0;
fi; \
0N/Aif [
"$${h2}" =
"" ] ;
then h2=
0;
fi; \
0N/Aif [
"$${m2}" =
"" ] ;
then m2=
0;
fi; \
0N/Aif [
"$${s2}" =
"" ] ;
then s2=
0;
fi; \
0N/Aif [
"$${t_hour}" !=
"0h" ] ;
then \
0N/Aelif [
"$${t_min}" !=
"0m" ] ;
then \
0N/A$(PRINTF) " Timing: %05d seconds or %s for %s\n" \
0N/A# Given a SUBDIRS list, cd into them and make them 0N/A# SUBDIRS_MAKEFLAGS Make settings for a subdir make 0N/A# SUBDIRS_MAKEFLAGS-$@ Make settings specific to this target 0N/A if [
"$$i" !=
"DUMMY" ] ;
then \
0N/A $(ECHO) ">>>Recursively making "$$i
" "$@
" @ `$(DATE)` ..."; \
0N/A $(ECHO) "<<<Finished Recursively making "$$i
" "$@
" @ `$(DATE)`." ; \
0N/A# Given a OTHERSUBDIRS list, cd into them and make them (extra loop define) 0N/A# OTHERSUBDIRS_MAKEFLAGS Make settings for a subdir make 0N/A if [
"$$i" !=
"DUMMY" ] ;
then \
0N/A $(ECHO) ">>>Recursively making "$$i
" "$@
" @ `$(DATE)` ..."; \
0N/A $(ECHO) "<<<Finished Recursively making "$$i
" "$@
" @ `$(DATE)`." ; \
0N/A# used for this file, otherwise the default settings are used. 0N/A# Note: As a rule, GNU Make rules should not appear in any of the 0N/A# Defs*.gmk files. These were added for Kestrel-Solaris and do address 0N/A# a TeamWare bug. They should be moved elsewhere for Merlin. 0N/A# Override gnumake built-in rules which do sccs get operations badly. 0N/A# (They put the checked out code in the current directory, not in the 0N/A# directory of the original file.) 0N/A# Since this is a symptom of a teamware failure, complain and die on the spot. 0N/A# This message immediately goes to stdout and the build terminates. 0N/A is out of date with respect to its SCCS file $<. \ 0N/A This can happen from an unresolved Teamware conflict, a file movement, or \ 0N/A a failure in which SCCS files are updated but the 'sccs get' was not done. \ 0N/A You should double check for other out of date files in your workspace. \ 0N/A# Install of imported file (JDK_IMPORT_PATH, or some other external location) 536N/A if [ $$? =
0 ] ;
then \
536N/A if [ $$? !=
0 ];
then \
536N/A echo "ERROR: Cannot chcon $@"; \