blob: 1c87b51e139c39dcd4502f697c3deeca471caddf [file] [log] [blame]
#
# Copyright (c) 1997, 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.
#
#
# Makefile for core Java libraries
# (java.lang, java.lang.ref, java.lang.reflect, java.io, java.util)
#
BUILDDIR = ../..
PACKAGE = java.lang
LIBRARY = java
PRODUCT = java
include $(BUILDDIR)/common/Defs.gmk
# windows compiler flags
ifeq ($(PLATFORM),windows)
OTHER_CFLAGS =
# build directly into BINDIR...
LIB_LOCATION = $(BINDIR)
# Exported functions
OTHER_LCF = -export:winFileHandleOpen -export:handleLseek
endif
OTHER_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
-DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
-DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \
-DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"'
ifdef JDK_UPDATE_VERSION
OTHER_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
endif
#
# Files to compile.
#
include FILES_c.gmk
include FILES_java.gmk
include Exportedfiles.gmk
ifeq ($(PLATFORM),windows)
FILES_java += java/io/Win32FileSystem.java \
java/io/WinNTFileSystem.java \
java/util/prefs/WindowsPreferences.java \
java/util/prefs/WindowsPreferencesFactory.java
FILES_c += ProcessImpl_md.c \
Win32FileSystem_md.c \
WinNTFileSystem_md.c \
canonicalize_md.c \
dirent_md.c \
TimeZone.c \
TimeZone_md.c \
WindowsPreferences.c \
sun/security/provider/WinCAPISeedGenerator.c \
sun/io/Win32ErrorMode.c
else # PLATFORM
FILES_java += java/lang/UNIXProcess.java \
java/io/UnixFileSystem.java \
java/util/prefs/FileSystemPreferences.java \
java/util/prefs/FileSystemPreferencesFactory.java \
FILES_c += UNIXProcess_md.c \
UnixFileSystem_md.c \
canonicalize_md.c \
TimeZone.c \
TimeZone_md.c \
FileSystemPreferences.c
INIT += $(GENSRCDIR)/java/lang/UNIXProcess.java
endif # PLATFORM
#
# Make sure first rule does 'all'
#
default_rule: all
#
# Source files to generate before we try to compile anything
#
#
# genlocales.gmk define rules to generate LocaleDataMetaInfo.java
# which contains locale string list for sun.text.resources and
# sun.util.resources.
#
include genlocales.gmk
CLASSES_INIT = gencharsrc niosrc rbcontrolsrc genlocales
niosrc: ; ($(CD) ../nio; $(MAKE) sources)
gencharsrc: $(GENSRCDIR)/java/lang/CharacterData00.java \
$(GENSRCDIR)/java/lang/CharacterData01.java \
$(GENSRCDIR)/java/lang/CharacterData02.java \
$(GENSRCDIR)/java/lang/CharacterData0E.java \
$(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
$(GENSRCDIR)/java/lang/CharacterDataUndefined.java \
$(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
rbcontrolsrc: $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
#
# Add to the default C file search paths
#
vpath %.c $(PLATFORM_SRC)/native/java/lang:$(SHARE_SRC)/native/java/lang
vpath %.c $(SHARE_SRC)/native/java/lang/ref
vpath %.c $(SHARE_SRC)/native/java/lang/reflect
vpath %.c $(SHARE_SRC)/native/java/io
vpath %.c $(PLATFORM_SRC)/native/java/io
vpath %.c $(SHARE_SRC)/native/java/nio
vpath %.c $(SHARE_SRC)/native/java/security
vpath %.c $(SHARE_SRC)/native/common
vpath %.c $(SHARE_SRC)/native/sun/misc
vpath %.c $(SHARE_SRC)/native/sun/reflect
vpath %.c $(SHARE_SRC)/native/java/sql
vpath %.c $(SHARE_SRC)/native/java/util
vpath %.c $(SHARE_SRC)/native/java/util/concurrent/atomic
vpath %.c $(PLATFORM_SRC)/native/common
vpath %.c $(PLATFORM_SRC)/native/java/util
vpath %.c $(PLATFORM_SRC)/native/sun/security/provider
vpath %.c $(PLATFORM_SRC)/native/sun/io
#
# Includes the fdlibm header file.
#
OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/lang/fdlibm/include
#
# Also include the io_util.h header file.
#
OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/io
OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/io
#
# Also include the TimeZone_md.h header file.
#
OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/util
#
# Is the altzone extern documented in ctime(3C) available?
#
ifneq ($(PLATFORM), windows)
HAVE_ALTZONE=true
endif
ifeq ($(HAVE_ALTZONE),true)
OTHER_CPPFLAGS += -DHAVE_ALTZONE
endif
#
# System.c needs RELEASE.
# java_props_md.c needs ARCH on non-Solaris platforms.
#
OTHER_CPPFLAGS += $(VERSION_DEFINES)
#
# Include name of LIBARCH
#
OTHER_CPPFLAGS += -DARCHPROPNAME='"$(ARCHPROP)"'
#
# Is the key in the call nl_langinfo(CODESET) called something other than
# CODESET?
#
ifdef ALT_CODESET_KEY
OTHER_CPPFLAGS += -DALT_CODESET_KEY=$(ALT_CODESET_KEY)
endif
#
# Install .lib file.
#
INSTALL_DOT_LIB = true
#
# What to link?
# On Windows, shell32 is not normally required and so it is delay loaded.
#
ifeq ($(PLATFORM),windows)
OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
-libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib \
shell32.lib delayimp.lib /DELAYLOAD:shell32.dll
else
OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) $(LIBNSL) $(LIBSCF) -ldl \
-L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
endif
#
# Rules.
#
ifeq ($(PLATFORM), solaris)
ifneq ($(ARCH), amd64)
FILES_reorder += reorder-$(ARCH)
endif
endif
SUBDIRS = reflect
include $(BUILDDIR)/common/Subdirs.gmk
all build:
$(SUBDIRS-loop)
clean clobber::
$(SUBDIRS-loop)
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
ifeq ($(PLATFORM), solaris)
ifeq ($(CC_VER), 5.8)
ifndef REMOVE_ALL_WORKAROUNDS
CFLAGS_OPT/ObjectInputStream.o = -xO3 \
$(warning "WARNING: Using workaround for SS11 bug 6346242, on $@")
endif
endif
endif
ifneq ($(PLATFORM),windows)
# UNIXProcess.java is different for solaris and linux. We need to copy
# the correct UNIXProcess.java over to $(GENSRCDIR)/java/lang/.
$(GENSRCDIR)/java/lang/UNIXProcess.java: \
$(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM)
$(install-file)
clean::
$(RM) $(GENSRCDIR)/java/lang/UNIXProcess.java
endif
#
# Because we can't link against ourselves!
#
JAVALIB =
#
# Special rules.
#
clean::
$(RM) -r $(CLASSHDRDIR)
clobber::
$(RM) -r $(CLASSBINDIR)/java/io $(CLASSBINDIR)/java/lang \
$(CLASSBINDIR)/java/security $(CLASSBINDIR)/java/util \
$(CLASSBINDIR)/sun/misc
#
# Additional rule from sun/net/GNUmakefile to copy content-type.properties
# file so that the MimeTable class won't complain while bootstrapping...
#
PROPS = content-types.properties
#
# Rule to copy calendars.properties file.
#
CAL_PROPS = calendars.properties
#
# Rule to copy tzmappings file on Windows
#
ifeq ($(PLATFORM), windows)
TZMAP = $(LIBDIR)/tzmappings
TZMAPFILE = $(PLATFORM_SRC)/lib/tzmappings
$(TZMAP): $(TZMAPFILE)
$(install-file)
$(call chmod-file, 444)
endif
build: $(LIBDIR)/$(PROPS) $(LIBDIR)/$(CAL_PROPS) $(TZMAP)
$(LIBDIR)/$(PROPS): $(PLATFORM_SRC)/lib/$(PROPS)
$(install-file)
$(LIBDIR)/$(CAL_PROPS): $(SHARE_SRC)/lib/$(CAL_PROPS)
$(install-file)
clean::
$(RM) -r $(LIBDIR)/$(PROPS) $(TZMAP)
#
# Rules to create lib/currency.data
#
CURDATA = $(LIBDIR)/currency.data
GENERATECURRENCYDATA_JARFILE = $(BUILDTOOLJARDIR)/generatecurrencydata.jar
build: $(CURDATA)
$(CURDATA): \
$(GENERATECURRENCYDATA_JARFILE) \
$(SHARE_SRC)/classes/java/util/CurrencyData.properties
$(RM) $(CURDATA)
$(BOOT_JAVA_CMD) -jar $(GENERATECURRENCYDATA_JARFILE) -o $@.temp \
< $(SHARE_SRC)/classes/java/util/CurrencyData.properties
$(MV) $@.temp $@
$(call chmod-file, 444)
clean::
$(RM) $(CURDATA)
#
# Rules to create $(GENSRCDIR)/sun/lang/CharacterData*.java
#
CHARACTERDATA = $(BUILDDIR)/tools/GenerateCharacter
UNICODEDATA = $(BUILDDIR)/tools/UnicodeData
GENERATECHARACTER_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar
$(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
$(GENSRCDIR)/java/lang/CharacterData00.java \
$(GENSRCDIR)/java/lang/CharacterData01.java \
$(GENSRCDIR)/java/lang/CharacterData02.java \
$(GENSRCDIR)/java/lang/CharacterData0E.java: \
$(wildcard $(CHARACTERDATA)/*) \
$(GENERATECHARACTER_JARFILE)
@$(prep-target)
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) \
-template $(CHARACTERDATA)/CharacterDataLatin1.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterDataLatin1.java -string \
-usecharforbyte -latin1 8
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 0 \
-template $(CHARACTERDATA)/CharacterData00.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData00.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 1 \
-template $(CHARACTERDATA)/CharacterData01.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData01.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 2 \
-template $(CHARACTERDATA)/CharacterData02.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData02.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 14 \
-template $(CHARACTERDATA)/CharacterData0E.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData0E.java -string \
-usecharforbyte 11 4 1
$(GENSRCDIR)/java/lang/%.java : $(CHARACTERDATA)/%.java.template
$(install-file)
clean::
$(RM) $(GENSRCDIR)/java/lang/CharacterDataLatin1.java
$(RM) $(GENSRCDIR)/java/lang/CharacterData00.java
$(RM) $(GENSRCDIR)/java/lang/CharacterData01.java
$(RM) $(GENSRCDIR)/java/lang/CharacterData02.java
$(RM) $(GENSRCDIR)/java/lang/CharacterData0E.java
$(RM) $(GENSRCDIR)/java/lang/CharacterDataUndefined.java
$(RM) $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
#
# Rules to generate classes/java/lang/uniName.dat
#
UNINAME = $(CLASSBINDIR)/java/lang/uniName.dat
GENERATEUNINAME_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar
build: $(UNINAME)
$(UNINAME): $(UNICODEDATA)/UnicodeData.txt \
$(GENERATECHARACTER_JARFILE)
@$(prep-target)
$(BOOT_JAVA_CMD) -classpath $(GENERATECHARACTER_JARFILE) \
build.tools.generatecharacter.CharacterName \
$(UNICODEDATA)/UnicodeData.txt $(UNINAME)
clean::
$(RM) $(UNINAME)
#
# End of rules to create $(GENSRCDIR)/java/lang/CharacterDataXX.java
#
#
# Rule to precompile CoreResourceBundleControl.java
#
LOCALES_GEN_SH = localelist.sh
$(GENSRCDIR)/sun/util/CoreResourceBundleControl.java: \
$(SHARE_SRC)/classes/sun/util/CoreResourceBundleControl-XLocales.java.template $(LOCALES_GEN_SH)
@$(prep-target)
NAWK="$(NAWK)" SED="$(SED)" $(SH) $(LOCALES_GEN_SH) "$(JRE_NONEXIST_LOCALES)" \
$< $@
clean::
$(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java