Defs.gmk revision 3142
2362N/A# Copyright (c) 1995, 2008, Oracle and/or its affiliates. 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 2362N/A# published by the Free Software Foundation. Oracle designates this 0N/A# particular file as subject to the "Classpath" exception as provided 2362N/A# by Oracle 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. 2362N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 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. 3142N/A# If CLOSE_SRC_INCLUDED isn't set to true, check if there's any 3142N/A# Set OPENJDK based on CLOSED_SRC_INCLUDED 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#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. 2080N/A# Build units may or may not define MODULE. Default to "other". 2096N/A# MODULE variable defines the lowest-level module name that 2096N/A# might or might not be the name of the modules created in 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. 2080N/A# Macros to find the module that $@ belongs to 2080N/A -e
's%.*\/$(UNIQUE_PATH_PATTERN)\/%classes\/%' \
2080N/A -e
's%.*\/include\/%include\/%' \
2080N/A -e
's%.*\/demo\/%demo\/%' \
2080N/A -e
's%.*\/sample\/%sample\/%' 2080N/A# Install a file to its module 2080N/A# Install all files from the directory to its module 2080N/A# chmod the file in its module 2080N/A# install a sym link in its module 2080N/A# Run MAKE $@ for a launcher: 2080N/A# $(call make-launcher, name, mainclass, java-args, main-args) 0N/A# Prepare $@ target, remove old one and making sure directory exists 0N/A# Simple install of $< file to $@ 2080N/A# Marcos for files not belonging to any module 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# used for this file, otherwise the default settings are used. 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 $@"; \