7074397: Build infrastructure changes (makefile re-write)

New makefiles transition, old and new living side by side for now.

Co-authored-by: Erik Joelsson <erik.joelsson@oracle.com>
Co-authored-by: Magnus Ihse Bursie <magnus.ihse.bursie@oracle.com>
Co-authored-by: Torbjorn Granat <torbjorn.granat@oracle.com>
Co-authored-by: Yekaterina Kantserova <yekaterina.kantserova@oracle.com>
Reviewed-by: ohair, jjg, dholmes, ohrstrom, erikj, ihse, tgranat, ykantser
This commit is contained in:
Fredrik Ohstrom 2012-04-10 08:22:03 -07:00 committed by Kelly O'Hair
parent 0d4e0d1ed0
commit e32ab98b32
316 changed files with 43818 additions and 157 deletions

View File

@ -153,8 +153,8 @@ strip_prop_options_clean:
# Strip the properties files
strip_all_props: $(STRIPPROPERTIES_JARFILE) $(STRIP_PROP_options)
@if [ -s $(STRIP_PROP_options) ] ; then \
$(ECHO) "$(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) -optionsfile $(STRIP_PROP_options)" ; \
$(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) -optionsfile $(STRIP_PROP_options) ; \
$(ECHO) "$(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) @$(STRIP_PROP_options)" ; \
$(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) @$(STRIP_PROP_options) ; \
fi
@$(java-vm-cleanup)
@ -243,8 +243,8 @@ compile_prop_options_clean:
compile_all_props: $(COMPILEPROPERTIES_JARFILE) $(COMPILE_PROP_options)
@if [ `$(CAT) $(COMPILE_PROP_options) | $(WC) -l` -ge 1 ] ; then \
$(MKDIR) -p $(GENSRCDIR); \
$(ECHO) "$(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) -optionsfile $(COMPILE_PROP_options)";\
$(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) -optionsfile $(COMPILE_PROP_options) ; \
$(ECHO) "$(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) @$(COMPILE_PROP_options)";\
$(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) @$(COMPILE_PROP_options) ; \
$(java-vm-cleanup); \
fi

View File

@ -90,6 +90,7 @@ public class CompileProperties {
private static String outfiles[] ;
private static String supers[] ;
private static int compileCount = 0;
private static boolean quiet = false;
private static boolean parseOptions(String args[]) {
boolean ok = true;
@ -114,21 +115,21 @@ public class CompileProperties {
outfiles[compileCount] = args[++i];
supers[compileCount] = args[++i];
compileCount++;
} else if ( "-optionsfile".equals(args[i]) && i+1 < args.length ) {
String filename = args[++i];
} else if ( args[i].charAt(0) == '@') {
String filename = args[i].substring(1);
FileInputStream finput = null;
byte contents[] = null;
try {
finput = new FileInputStream(filename);
int byteCount = finput.available();
if ( byteCount <= 0 ) {
error("The -optionsfile file is empty", null);
error("The @file is empty", null);
ok = false;
} else {
contents = new byte[byteCount];
int bytesRead = finput.read(contents);
if ( byteCount != bytesRead ) {
error("Cannot read all of -optionsfile file", null);
error("Cannot read all of @file", null);
ok = false;
}
}
@ -144,7 +145,7 @@ public class CompileProperties {
error("cannot close " + filename, e);
}
}
if ( ok = true && contents != null ) {
if ( ok && contents != null ) {
String tokens[] = (new String(contents)).split("\\s+");
if ( tokens.length > 0 ) {
ok = parseOptions(tokens);
@ -163,6 +164,13 @@ public class CompileProperties {
public static void main(String[] args) {
boolean ok = true;
if (args.length >= 1 && args[0].equals("-quiet"))
{
quiet = true;
String[] newargs = new String[args.length-1];
System.arraycopy(args, 1, newargs, 0, newargs.length);
args = newargs;
}
/* Original usage */
if (args.length == 2 && args[0].charAt(0) != '-' ) {
ok = createFile(args[0], args[1], "ListResourceBundle");
@ -197,18 +205,20 @@ public class CompileProperties {
System.err.println("usage:");
System.err.println(" java -jar compileproperties.jar path_to_properties_file path_to_java_output_file [super_class]");
System.err.println(" -OR-");
System.err.println(" java -jar compileproperties.jar {-compile path_to_properties_file path_to_java_output_file super_class} -or- -optionsfile filename");
System.err.println(" java -jar compileproperties.jar {-compile path_to_properties_file path_to_java_output_file super_class} -or- @filename");
System.err.println("");
System.err.println("Example:");
System.err.println(" java -jar compileproperties.jar -compile test.properties test.java ListResourceBundle");
System.err.println(" java -jar compileproperties.jar -optionsfile option_file");
System.err.println(" java -jar compileproperties.jar @option_file");
System.err.println("option_file contains: -compile test.properties test.java ListResourceBundle");
}
private static boolean createFile(String propertiesPath, String outputPath,
String superClass) {
boolean ok = true;
System.out.println("parsing: " + propertiesPath);
if (!quiet) {
System.out.println("parsing: " + propertiesPath);
}
Properties p = new Properties();
try {
p.load(new FileInputStream(propertiesPath));
@ -221,7 +231,9 @@ public class CompileProperties {
}
if ( ok ) {
String packageName = inferPackageName(propertiesPath, outputPath);
System.out.println("inferred package name: " + packageName);
if (!quiet) {
System.out.println("inferred package name: " + packageName);
}
List<String> sortedKeys = new ArrayList<>();
for ( Object key : p.keySet() ) {
sortedKeys.add((String)key);
@ -276,7 +288,9 @@ public class CompileProperties {
error("IO error close " + outputPath, e);
}
}
System.out.println("wrote: " + outputPath);
if (!quiet) {
System.out.println("wrote: " + outputPath);
}
}
return ok;
}

View File

@ -1,3 +1,5 @@
package build.tools.generatecharacter;
import java.util.regex.*;
import java.util.*;
import java.io.*;

View File

@ -36,6 +36,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
@ -53,82 +54,89 @@ public class StripProperties {
}
}
private static List<String> parseOptions(String args[]) {
List<String> files = new ArrayList<String>();
private static List<String> infiles = new ArrayList<String>();
private static List<String> outfiles = new ArrayList<String>();
private static boolean parseOptions(String args[]) {
boolean ok = true;
for ( int i = 0; i < args.length ; i++ ) {
if ( "-optionsfile".equals(args[i]) && i+1 < args.length ) {
String filename = args[++i];
if ( "-clean".equals(args[i]) && i+2 < args.length ) {
infiles.add(args[++i]);
outfiles.add(args[++i]);
} else if ( args[i].charAt(0)=='@') {
String filename = args[i].substring(1);
FileInputStream finput = null;
byte contents[] = null;
try {
finput = new FileInputStream(filename);
int byteCount = finput.available();
if ( byteCount <= 0 ) {
error("The -optionsfile file is empty", null);
files = null;
error("The @file is empty", null);
ok = false;
} else {
contents = new byte[byteCount];
int bytesRead = finput.read(contents);
if ( byteCount != bytesRead ) {
error("Cannot read all of -optionsfile file", null);
files = null;
error("Cannot read all of @file", null);
ok = false;
}
}
} catch ( IOException e ) {
error("cannot open " + filename, e);
files = null;
ok = false;
}
if ( finput != null ) {
try {
finput.close();
} catch ( IOException e ) {
files = null;
ok = false;
error("cannot close " + filename, e);
}
}
if ( files != null && contents != null ) {
if ( ok && contents != null ) {
String tokens[] = (new String(contents)).split("\\s+");
if ( tokens.length > 0 ) {
List<String> ofiles = parseOptions(tokens);
if ( ofiles != null ) {
files.addAll(ofiles);
} else {
error("No files found in file", null);
files = null;
}
ok = parseOptions(tokens);
}
}
if ( files == null ) {
if ( !ok ) {
break;
}
} else {
files.add(args[i]);
infiles.add(args[i]);
outfiles.add(args[i]);
}
}
return files;
return ok;
}
private static boolean stripFiles(List<String> files) {
private static boolean stripFiles(List<String> infiles, List<String> outfiles) {
boolean ok = true;
for ( String file : files ) {
Iterator<String> inIter = infiles.iterator();
Iterator<String> outIter = outfiles.iterator();
for (; inIter.hasNext(); ) {
String infile = inIter.next();
String outfile = outIter.next();
Properties prop = new Properties();
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(file));
in = new BufferedInputStream(new FileInputStream(infile));
prop.load(in);
} catch ( FileNotFoundException e ) {
error("Cannot access file " + file, e);
error("Cannot access file " + infile, e);
ok = false;
} catch ( IOException e ) {
error("IO exception processing file " + file, e);
error("IO exception processing file " + infile, e);
ok = false;
}
if ( in != null ) {
try {
in.close();
} catch ( IOException e ) {
error("IO exception closing file " + file, e);
error("IO exception closing file " + infile, e);
ok = false;
}
}
@ -138,18 +146,18 @@ public class StripProperties {
OutputStream out = null;
try {
out = new FileOutputStream(file);
out = new FileOutputStream(outfile);
storeProperties(prop, out);
out.flush();
} catch ( IOException e ) {
error("IO exception processing file " + file, e);
error("IO exception processing file " + outfile, e);
ok = false;
}
if ( out != null ) {
try {
out.close();
} catch ( IOException e ) {
error("IO exception closing file " + file, e);
error("IO exception closing file " + outfile, e);
ok = false;
}
}
@ -166,8 +174,8 @@ public class StripProperties {
* @param args Names of properties files to process and replace contents
*/
public static void main(String args[]) {
List<String> files = parseOptions(args);
if ( files == null || !stripFiles(files) ) {
boolean ok = parseOptions(args);
if ( !ok || !stripFiles(infiles, outfiles) ) {
System.exit(1);
}
}

View File

@ -0,0 +1,352 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include NativeCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
# Append demo goals to this variable.
BUILD_DEMOS=
# The demo structure and contents should really be cleaned up.
# Now every other demo has its own quirks where to put the
# READMEs and other files.
##################################################################################################
define SetupAppletDemo
$$(eval $$(call SetupJavaCompilation,BUILD_DEMO_APPLET_$1,\
SETUP:=GENERATE_USINGJDKBYTECODE$2,\
SRC:=$(JDK_TOPDIR)/src/$3share/demo/applets/$1,\
BIN:=$(JDK_OUTPUTDIR)/newdemo/applets/$1,\
COPY:=.html .java .xyz .obj .au .gif))
BUILD_DEMOS += $$(BUILD_DEMO_APPLET_$1)
endef
$(eval $(call SetupAppletDemo,ArcTest))
$(eval $(call SetupAppletDemo,BarChart))
$(eval $(call SetupAppletDemo,Blink))
$(eval $(call SetupAppletDemo,CardTest))
$(eval $(call SetupAppletDemo,Clock))
$(eval $(call SetupAppletDemo,DitherTest))
$(eval $(call SetupAppletDemo,DrawTest))
$(eval $(call SetupAppletDemo,Fractal))
$(eval $(call SetupAppletDemo,GraphicsTest))
$(eval $(call SetupAppletDemo,MoleculeViewer))
$(eval $(call SetupAppletDemo,NervousText))
$(eval $(call SetupAppletDemo,SimpleGraph))
$(eval $(call SetupAppletDemo,SortDemo))
$(eval $(call SetupAppletDemo,SpreadSheet))
# Build WireFrame without a server since it
# has a class Matrix3D that also exists in MoleculeViewer.
$(eval $(call SetupAppletDemo,WireFrame,_NOSERV))
ifndef OPENJDK
$(eval $(call SetupAppletDemo,Animator,,closed/))
$(eval $(call SetupAppletDemo,GraphLayout,_NOSERV,closed/))
$(eval $(call SetupAppletDemo,JumpingBox,,closed/))
$(eval $(call SetupAppletDemo,TicTacToe,,closed/))
endif
##################################################################################################
PATTERNS_TO_COPY=.html .txt .properties .js .gif .jpg .theme .data .opt README .c .h .png .ttf
define SetupDemo
# Param 1 = Name of the demo
# Param 2 = Subdirectory of the demo below the demo directory.
# Param 3 = Additional javac flags.
# Param 4 = The main class for the jar.
# Param 5 = Additional source directory.
# Param 6 = Extra dir below $(JDK_TOPDIR)/src (closed)
# Param 7 = List of files to copy
# Param 8 = Base name of jar file. Defaults to $1
# Param 9 = Exclude list
# Param 10 = Extra copy patterns
# Param 11 = Extra manifest attribute
# Param 12 = Suffix for compiler setup name
# In some demos the source is found in a subdir called src.
$1_MAIN_SRC:=$$(wildcard $(JDK_TOPDIR)/src/$6share/demo/$2/$1/src)
ifeq ($$($1_MAIN_SRC),)
$1_MAIN_SRC:=$(JDK_TOPDIR)/src/$6share/demo/$2/$1
endif
ifneq ($8,)
$1_JARFILE := $8.jar
else
$1_JARFILE := $1.jar
endif
# Compile java classes if there are any.
$1_JAVA_FILES_EXIST := $$(shell $$(FIND) $$($1_MAIN_SRC) -name "*.java")
ifneq ($$($1_JAVA_FILES_EXIST),)
$$(eval $$(call SetupJavaCompilation,BUILD_DEMO_$1,\
SETUP:=GENERATE_USINGJDKBYTECODE$(12),\
ADD_JAVAC_FLAGS:=$3,\
SRC:=$$($1_MAIN_SRC) $5,\
BIN:=$(JDK_OUTPUTDIR)/newdemoclasses/$2/$1,\
COPY:=$(PATTERNS_TO_COPY) $(10),\
JAR:=$(JDK_OUTPUTDIR)/newdemo/$2/$1/$$($1_JARFILE),\
JARMAIN:=$4,\
MANIFEST:=$(JDK_TOPDIR)/make/tools/manifest.mf,\
EXTRA_MANIFEST_ATTR:=$(11),\
SRCZIP:=$(JDK_OUTPUTDIR)/newdemo/$2/$1/src.zip,\
EXCLUDE_FILES:=$9))
BUILD_DEMOS += $$(BUILD_DEMO_$1) \
$(JDK_OUTPUTDIR)/newdemo/$2/$1/$$($1_JARFILE) \
$(JDK_OUTPUTDIR)/newdemo/$2/$1/src.zip
endif
# Copy files.
$1_COPY_TARGETS := $$(patsubst $(JDK_TOPDIR)/src/$6share/demo/$2/$1/%,\
$(JDK_OUTPUTDIR)/newdemo/$2/$1/%,\
$$(wildcard $$(addprefix $(JDK_TOPDIR)/src/$6share/demo/$2/$1/,$7)))
ifneq ($7,)
$(JDK_OUTPUTDIR)/newdemo/$2/$1/% : $(JDK_TOPDIR)/src/$6share/demo/$2/$1/%
mkdir -p $$(@D)
cp $$< $$@
chmod -f ug+w $$@
BUILD_DEMOS += $$($1_COPY_TARGETS)
endif
endef
$(eval $(call SetupDemo,CodePointIM,jfc,,CodePointIM,,,*.html))
$(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/_the.services : \
$(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/CodePointIM.jar \
$(JDK_TOPDIR)/src/share/demo/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor
(cd $(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM && \
$(MKDIR) -p _the.tmp/META-INF/services && \
$(CP) $(JDK_TOPDIR)/src/share/demo/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor _the.tmp/META-INF/services && \
cd _the.tmp && \
$(JAR) uf $(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/CodePointIM.jar META-INF/services/java.awt.im.spi.InputMethodDescriptor && \
cd META-INF/services && \
$(JAR) uf $(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/CodePointIM.jar java.awt.im.spi.InputMethodDescriptor)
$(RM) -r $(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/_the.tmp
touch $@
BUILD_DEMOS+=$(JDK_OUTPUTDIR)/newdemo/jfc/CodePointIM/_the.services
$(eval $(call SetupDemo,FileChooserDemo,jfc,,FileChooserDemo,,,README*))
$(eval $(call SetupDemo,Font2DTest,jfc,,Font2DTest,,,*.html *.txt))
$(eval $(call SetupDemo,Metalworks,jfc,,Metalworks,,,README*))
$(eval $(call SetupDemo,Notepad,jfc,,Notepad,,,README*))
$(eval $(call SetupDemo,SampleTree,jfc,,SampleTree,,,README*))
$(eval $(call SetupDemo,SwingApplet,jfc,,SwingApplet,,,README* *.html))
$(eval $(call SetupDemo,TableExample,jfc,,TableExample,,,README*))
$(eval $(call SetupDemo,TransparentRuler,jfc,,transparentruler.Ruler,,,README*))
$(eval $(call SetupDemo,jconsole-plugin,scripting,-cp $(JDK_OUTPUTDIR)/lib/jconsole.jar,,,,*.xml *.txt))
$(eval $(call SetupDemo,FullThreadDump,management,,FullThreadDump,,,README*))
$(eval $(call SetupDemo,JTop,management,-cp $(JDK_OUTPUTDIR)/lib/jconsole.jar,JTop,,,README*))
$(eval $(call SetupDemo,MemoryMonitor,management,,MemoryMonitor,,,README*))
$(eval $(call SetupDemo,VerboseGC,management,,VerboseGC,,,README*))
$(eval $(call SetupDemo,zipfs,nio,,,,,README* *.java))
ifndef OPENJDK
$(eval $(call SetupDemo,Laffy,jfc,,,,closed/,*))
$(eval $(call SetupDemo,SwingSet3,jfc,,,,closed/,*))
$(eval $(call SetupDemo,Java2D,jfc,,java2d.Java2Demo,,closed/,*.html README*,Java2Demo))
$(eval $(call SetupDemo,Stylepad,jfc,,Stylepad,\
$(JDK_TOPDIR)/src/share/demo/jfc/Notepad,closed/,*.txt,,$(JDK_TOPDIR)/src/share/demo/jfc/Notepad/README.txt))
$(eval $(call SetupDemo,SwingSet2,jfc,,SwingSet2,,closed/,README* *.html,,,.java COPYRIGHT,\
SplashScreen-Image: resources/images/splash.png,_NOSERV))
BUILD_DEMOS += $(patsubst $(JDK_TOPDIR)/src/closed/share/demo/nbproject/%,\
$(JDK_OUTPUTDIR)/newdemo/nbproject/%,\
$(shell $(FIND) $(JDK_TOPDIR)/src/closed/share/demo/nbproject/ -type f))
$(JDK_OUTPUTDIR)/newdemo/nbproject/% : $(JDK_TOPDIR)/src/closed/share/demo/nbproject/%
mkdir -p $(@D)
cp $< $@
chmod -f ug+w $@
endif
##################################################################################################
# Why do we install a demo jar into the main jre/lib/ext????????????????
$(JDK_OUTPUTDIR)/lib/ext/zipfs.jar : $(JDK_OUTPUTDIR)/newdemo/nio/zipfs/zipfs.jar
$(MKDIR) -p $(@D)
$(CP) $< $@
BUILD_DEMOS += $(JDK_OUTPUTDIR)/lib/ext/zipfs.jar
##################################################################################################
# In the old makefiles, j2dbench was not compiled.
#$(eval $(call SetupDemo,J2DBench,java2d,/src,,j2dbench/J2DBench))
define SetupJVMTIDemo
# Param 1 = Name of the demo
# Param 2 = add these directories to the includes, default is agent_util
# Param 3 = extra CFLAGS
# Param 4 = C or C++ (defaults to C)
# Param 5 = libs for posix
# Param 6 = libs for winapi
# Param 7 = libs for solaris
BUILD_DEMO_JVMTI_$1_EXTRA_SRC:= $$(wildcard $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/demo/jvmti/$1) \
$$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/,$2))
BUILD_DEMO_JVMTI_$1_EXTRA_INC:=$$(addprefix -I,$$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC))
BUILD_DEMO_JVMTI_$1_LANG:=C
BUILD_DEMO_JVMTI_$1_O_FLAG:=$(C_O_FLAG_NORM)
ifneq (,$4)
BUILD_DEMO_JVMTI_$1_LANG:=$4
endif
ifeq (C++,$4)
$1_EXTRA_CXX:=$(LIBCXX)
BUILD_DEMO_JVMTI_$1_O_FLAG:=$(CXX_O_FLAG_NORM)
endif
$$(eval $$(call SetupNativeCompilation,BUILD_DEMO_JVMTI_$1,\
SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC),\
LANG:=$$(BUILD_DEMO_JVMTI_$1_LANG),\
CFLAGS:=$(CFLAGS_JDKLIB) $$(BUILD_DEMO_JVMTI_$1_O_FLAG) -I$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3,\
LDFLAGS:=$(LDFLAGS_JDKLIB),\
LDFLAGS_SUFFIX:=$$($1_EXTRA_CXX),\
LDFLAGS_SUFFIX_posix:=$5,\
LDFLAGS_SUFFIX_winapi:=$6,\
LDFLAGS_SUFFIX_solaris:=-lc $7,\
BIN:=$(JDK_OUTPUTDIR)/newdemoobjs/jvmti/$1,\
LIB:=$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/lib/$(LIBRARY_PREFIX)$1$(SHARED_LIBRARY_SUFFIX)))
$$(eval $$(call SetupZipArchive,BUILD_DEMO_JVMTI_SRC_$1,\
SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC),\
ZIP:=$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/src.zip))
$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/README.txt : $(JDK_TOPDIR)/src/share/demo/jvmti/$1/README.txt
$(MKDIR) -p $$(@D)
$(CP) $$< $$@
$(CHMOD) -f ug+w $$@
ifneq (,$$(wildcard $(JDK_TOPDIR)/src/share/demo/jvmti/$1/*.java))
$$(eval $$(call SetupJavaCompilation,BUILD_DEMO_JVMTI_$1_JAVA,\
SETUP:=GENERATE_USINGJDKBYTECODE,\
SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1,\
BIN:=$(JDK_OUTPUTDIR)/newdemoclasses/jvmti/$1,\
COPY:=$(PATTERNS_TO_COPY),\
JAR:=$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/$1.jar,\
JARMAIN:=,\
MANIFEST:=$(JDK_TOPDIR)/make/tools/manifest.mf))
BUILD_DEMOS += $(JDK_OUTPUTDIR)/newdemo/jvmti/$1/$1.jar
endif
BUILD_DEMOS += $(JDK_OUTPUTDIR)/newdemo/jvmti/$1/lib/$(LIBRARY_PREFIX)$1$(SHARED_LIBRARY_SUFFIX) \
$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/src.zip \
$(JDK_OUTPUTDIR)/newdemo/jvmti/$1/README.txt
endef
$(eval $(call SetupJVMTIDemo,compiledMethodLoad, agent_util))
$(eval $(call SetupJVMTIDemo,gctest, agent_util))
$(eval $(call SetupJVMTIDemo,heapTracker, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,heapViewer, agent_util))
# hprof contains error messages using __FILE__ macro. These expand to the absolute path
# in the new build system and relative in the old, causing the binaries to differ.
$(eval $(call SetupJVMTIDemo,hprof, java_crw_demo,\
-I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/npt,C,\
-ldl,ws2_32.lib winmm.lib,-lsocket -lnsl))
$(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,waiters, agent_util,,C++))
$(eval $(call SetupJVMTIDemo,versionCheck, agent_util))
##################################################################################################
# The jpda demo (com/sun/tools/example) is oddly enough stored in src/share/classes.
# At least, we do not need to compile the jpda demo, just jar/zip up the sources.
JPDA_SOURCES:=$(shell $(FIND) $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example -type f)
# The number of files are few enough so that we can use echo safely below to list them.
JPDA_FILES:=$(subst $(JDK_TOPDIR)/src/share/classes/,,$(JPDA_SOURCES))
$(JDK_OUTPUTDIR)/newdemo/jpda/src.zip : $(JPDA_SOURCES)
mkdir -p $(@D)
(cd $(JDK_TOPDIR)/src/share/classes && $(ZIP) -qru $@ com -i "com/sun/tools/example/*")
$(JDK_OUTPUTDIR)/newdemo/jpda/examples.jar : $(JPDA_SOURCES)
mkdir -p $(@D)
$(RM) $(@D)/_the.sources
$(call ListPathsSafely,JPDA_FILES,\n, >> $(@D)/_the.sources)
$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
-e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" $(JDK_TOPDIR)/make/tools/manifest.mf > $(@D)/_the.manifest
$(ECHO) "Main-Class: " >> $(@D)/_the.manifest
(cd $(JDK_TOPDIR)/src/share/classes && $(JAR) cfm $@ $(@D)/_the.manifest @$(@D)/_the.sources)
(cd $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example && $(JAR) uf $@ README)
$(JDK_OUTPUTDIR)/newdemo/jpda/com/sun/tools/example/README : $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example/README
mkdir -p $(@D)
$(CP) $< $@
$(CHMOD) -f ug+w $@
BUILD_DEMOS += $(JDK_OUTPUTDIR)/newdemo/jpda/src.zip $(JDK_OUTPUTDIR)/newdemo/jpda/examples.jar \
$(JDK_OUTPUTDIR)/newdemo/jpda/com/sun/tools/example/README
##################################################################################################
$(JDK_OUTPUTDIR)/newdemo/management/index.html : $(JDK_TOPDIR)/src/share/demo/management/index.html
mkdir -p $(@D)
$(CP) $< $@
$(CHMOD) -f ug+w $@
$(JDK_OUTPUTDIR)/newdemo/jvmti/index.html : $(JDK_TOPDIR)/src/share/demo/jvmti/index.html
mkdir -p $(@D)
$(CP) $< $@
$(CHMOD) -f ug+w $@
BUILD_DEMOS += $(JDK_OUTPUTDIR)/newdemo/management/index.html \
$(JDK_OUTPUTDIR)/newdemo/jvmti/index.html
##################################################################################################
# The netbeans project files are copied into the demo directory.
NETBEANS_DEMO_PROJECTS_FILES=$(shell $(FIND) $(JDK_TOPDIR)/src/share/demo/nbproject -type f)
$(JDK_OUTPUTDIR)/newdemo/_the.nbproject: $(NETBEANS_DEMO_PROJECTS_FILES)
$(MKDIR) -p $(JDK_OUTPUTDIR)/newdemo
$(RM) -rf $(JDK_OUTPUTDIR)/newdemo/nbproject
echo Copying Netbeans demo projects
(cd $(JDK_TOPDIR)/src/share/demo && cp -r nbproject $(JDK_OUTPUTDIR)/newdemo)
touch $@
##################################################################################################
$(JDK_OUTPUTDIR)/newdemo/README : $(JDK_TOPDIR)/src/share/demo/README
mkdir -p $(@D)
cp $< $@
##################################################################################################
all: $(BUILD_DEMOS) $(JDK_OUTPUTDIR)/newdemo/_the.nbproject $(JDK_OUTPUTDIR)/newdemo/README
.PHONY: all

View File

@ -0,0 +1,243 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
EXCLUDES:= sun/dc \
sun/security/pkcs11 \
com/sun/pept \
com/sun/tools/example/trace\
com/sun/tools/example/debug/bdi\
com/sun/tools/example/debug/event\
com/sun/tools/example/debug/gui \
javax/crypto \
com/oracle/security
ifdef OPENJDK
EXCLUDES+= com/sun/jmx/snmp \
sun/management/snmp \
com/sun/script
endif
ifneq ($(PLATFORM),solaris)
# Exclude Solaris nio and two security related files in src/share/classes
EXFILES:=SolarisAclFileAttributeView.java \
SolarisFileStore.java \
SolarisFileSystem.java \
SolarisFileSystemProvider.java \
SolarisNativeDispatcher.java \
SolarisUserDefinedFileAttributeView.java \
SolarisWatchService.java \
DevPollArrayWrapper.java \
DevPollSelectorImpl.java \
DevPollSelectorProvider.java \
SolarisAsynchronousChannelProvider.java \
SolarisEventPort.java \
SolarisAclFileAttributeView.java \
SolarisFileStore.java \
SolarisFileSystem.java \
SolarisFileSystemProvider.java \
SolarisUserDefinedFileAttributeView.java \
SolarisNativeDispatcher.java \
SolarisWatchService.java \
SolarisLoginModule.java \
SolarisSystem.java \
sun/tools/attach/SolarisAttachProvider.java \
sun/tools/attach/SolarisVirtualMachine.java
endif
# Why?
EXFILES+=WrapperGenerator.java
ifneq ($(PLATFORM),windows)
# Exclude Window security related files in src/share/classes
EXFILES+=NTLoginModule.java \
NTSystem.java
endif
ifeq ($(PLATFORM),windows)
# Does nio channels exist on Windows?
EXCLUDES+=sun/nio/ch
endif
ifneq ($(PLATFORM),linux)
EXCLUDES+=com/sun/java/swing/plaf/gtk
EXFILES+=sun/tools/attach/LinuxAttachProvider.java \
sun/tools/attach/LinuxVirtualMachine.java
endif
ifneq ($(PLATFORM),macosx)
EXFILES+=sun/nio/fs/BsdFileStore.java \
sun/nio/fs/BsdFileSystem.java \
sun/nio/fs/BsdFileSystemProvider.java \
sun/nio/fs/BsdNativeDispatcher.java \
sun/tools/attach/BsdAttachProvider.java \
sun/tools/attach/BsdVirtualMachine.java
endif
# Generated nimbus files that apparently should not be compiled...
EXFILES+=InternalFrameTitlePanePainter.java \
OptionPaneMessageAreaPainter.java \
ScrollBarPainter.java \
SliderPainter.java \
SpinnerPainter.java \
SplitPanePainter.java \
TabbedPanePainter.java
# New class /java/lang/annotation/ContainerAnnotation.java is not included in old
# build
EXFILES+=java/lang/annotation/ContainerAnnotation.java
# Exclude BreakIterator classes that are just used in compile process to generate
# data files and shouldn't go in the product
EXFILES+=sun/text/resources/BreakIteratorRules.java \
sun/text/resources/BreakIteratorRules_th.java
# TODO: Add BUILD_HEADLESS_ONLY to configure?
ifdef BUILD_HEADLESS_ONLY
EXCLUDES+=sun/applet
endif
ifdef OPENJDK
EXCLUDES+=sun/java2d/cmm/kcms
else
EXCLUDES+=sun/java2d/cmm/lcms
endif
# Not used on windows
ifneq ($(PLATFORM), windows)
EXFILES+=sun/awt/AWTCharset.java
endif
# Exclude some generated AWT files that were implicitly not included by the old build.
EXFILES+=sun/awt/X11/ScreenFormat.java \
sun/awt/X11/XArc.java \
sun/awt/X11/XChar2b.java \
sun/awt/X11/XCharStruct.java \
sun/awt/X11/XClassHint.java \
sun/awt/X11/XComposeStatus.java \
sun/awt/X11/XExtCodes.java \
sun/awt/X11/XFontProp.java \
sun/awt/X11/XFontSetExtents.java \
sun/awt/X11/XFontStruct.java \
sun/awt/X11/XGCValues.java \
sun/awt/X11/XHostAddress.java \
sun/awt/X11/XIMCallback.java \
sun/awt/X11/XIMHotKeyTrigger.java \
sun/awt/X11/XIMHotKeyTriggers.java \
sun/awt/X11/XIMPreeditCaretCallbackStruct.java \
sun/awt/X11/XIMPreeditDrawCallbackStruct.java \
sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java \
sun/awt/X11/XIMStatusDrawCallbackStruct.java \
sun/awt/X11/XIMStringConversionCallbackStruct.java \
sun/awt/X11/XIMStringConversionText.java \
sun/awt/X11/XIMStyles.java \
sun/awt/X11/XIMText.java \
sun/awt/X11/XIMValuesList.java \
sun/awt/X11/XImage.java \
sun/awt/X11/XKeyboardControl.java \
sun/awt/X11/XKeyboardState.java \
sun/awt/X11/XOMCharSetList.java \
sun/awt/X11/XOMFontInfo.java \
sun/awt/X11/XOMOrientation.java \
sun/awt/X11/XPoint.java \
sun/awt/X11/XRectangle.java \
sun/awt/X11/XSegment.java \
sun/awt/X11/XStandardColormap.java \
sun/awt/X11/XTextItem.java \
sun/awt/X11/XTextItem16.java \
sun/awt/X11/XTextProperty.java \
sun/awt/X11/XTimeCoord.java \
sun/awt/X11/XWindowChanges.java \
sun/awt/X11/XdbeSwapInfo.java \
sun/awt/X11/XmbTextItem.java \
sun/awt/X11/XwcTextItem.java
# Exclude sun/security files that should go in a separate jar
EXFILES+=sun/security/ec/ECDHKeyAgreement.java \
sun/security/ec/ECDSASignature.java \
sun/security/ec/ECKeyPairGenerator.java \
sun/security/ec/SunEC$1.java \
sun/security/ec/SunEC.java \
sun/security/ec/SunECEntries.java
# Exclude another implicitly not included file.
EXFILES+=sun/util/locale/AsciiUtil.java
ifeq ($(PLATFORM), linux)
EXFILES+=sun/nio/fs/PollingWatchService.java
endif
# TODO: Fix when converting NIO
# Exclude *-linux-arm.java and *-linux-ppc.java from closed.
EXFILES+=-linux-arm.java \
-linux-ppc.java
# TODO: Is this necessary?
ifeq ($(PLATFORM), windows)
EXFILES+=sun/net/sdp/SdpProvider.java
else
EXFILES+=sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java
endif
# Acquire a list of files that should be copied straight over to the classes.
include CopyIntoClasses.gmk
# Now we have COPY_PATTERNS, COPY_FILES and COPY_EXTRA
ifndef OPENJDK
CLOSED_SRC_DIRS:=$(JDK_TOPDIR)/src/closed/share/classes \
$(JDK_TOPDIR)/src/closed/$(LEGACY_HOST_OS_API)/classes
endif
$(eval $(call SetupJavaCompilation,BUILD_JDK,\
SETUP:=GENERATE_JDKBYTECODE,\
SRC:=$(JDK_TOPDIR)/src/share/classes \
$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes \
$(JDK_OUTPUTDIR)/gensrc \
$(CLOSED_SRC_DIRS),\
EXCLUDES:=$(EXCLUDES),\
EXCLUDE_FILES:=$(EXFILES),\
BIN:=$(JDK_OUTPUTDIR)/newclasses,\
COPY:=$(COPY_PATTERNS),\
COPY_FILES:=$(COPY_FILES),\
JAR:=$(JDK_OUTPUTDIR)/newrt.jar,\
HEADERS:=$(JDK_OUTPUTDIR)/gensrc_headers))
# copy with -a to preserve timestamps so dependencies down the line aren't messed up
all: $(BUILD_JDK) $(JDK_OUTPUTDIR)/newrt.jar $(COPY_EXTRA)
(cd $(JDK_OUTPUTDIR); \
$(CP) -rp newclasses/* classes; \
$(FIND) classes -name "_the.*" $(FIND_DELETE); \
$(TOUCH) $(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin)
.PHONY: all

View File

@ -0,0 +1,360 @@
#
# Copyright (c) 2011, 2012, 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.
#
defalt: all
include $(SPEC)
include MakeBase.gmk
include NativeCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
BUILD_LAUNCHERS=
define SetupLauncher
# TODO: Fix mapfile on solaris. Won't work with ld as linker.
# Parameter 1 is the name of the launcher (java,javac,jar...)
# Parameter 2 are extra CFLAGS
# Parameter 3 are extra LDFLAGS
# Parameter 4 are extra LDFLAGS_SUFFIX_posix
# Parameter 5 are extra LDFLAGS_SUFFIX_winapi
$(call SetupNativeCompilation,BUILD_LAUNCHER_$1,\
SRC:=$(JDK_TOPDIR)/src/share/bin,\
INCLUDE_FILES:=main.c,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKEXE) $(C_O_FLAG_NORM) \
-I$(JDK_TOPDIR)/src/share/bin \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/bin \
-I$(JDK_TOPDIR)/src/$(PLATFORM)/bin \
-DFULL_VERSION='"$(FULL_VERSION)"' \
-DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
-DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
-DLIBARCHNAME='"$(ARCH)"' \
-DLAUNCHER_NAME='"openjdk"' \
-DPROGNAME='"$1"' $(DPACKAGEPATH) \
$2,\
CFLAGS_linux:=-fPIC,\
LDFLAGS:=$(LDFLAGS_JDKEXE) \
$(call SET_SHARED_LIBRARY_ORIGIN,../lib/$(LIBARCH)/jli) \
$(call SET_SHARED_LIBRARY_ORIGIN,../jre/lib/$(LIBARCH)/jli) \
$3,\
LDFLAGS_linux:=$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/launchers/mapfile-$(ARCH)),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKEXE_SUFFIX),\
LDFLAGS_SUFFIX_posix:=$4 -lc,\
LDFLAGS_SUFFIX_winapi:=$5,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/$1_objs,\
EXE:=$(JDK_OUTPUTDIR)/newobjs/$1$(EXE_SUFFIX),\
VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
RC_FLAGS:=$(RC_FLAGS)\
/D "JDK_FNAME=$1$(EXE_SUFFIX)" \
/D "JDK_INTERNAL_NAME=$1" \
/D "JDK_FTYPE=0x1L")
BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/newobjs/$1$(EXE_SUFFIX) $(JDK_OUTPUTDIR)/bin/$1$(EXE_SUFFIX)
endef
##########################################################################################
XLIBS:=-lX11
ifeq ($(PLATFORM),macosx)
DPACKAGEPATH:=-DPACKAGE_PATH='"$(PACKAGE_PATH)"'
XLIBS:=
endif
$(eval $(call SetupLauncher,java,\
-DEXPAND_CLASSPATH_WILDCARDS))
ifeq ($(PLATFORM),solaris)
THREAD_LIB:=-lthread
endif
ifeq ($(PLATFORM),linux)
THREAD_LIB:=-lpthread
endif
ifndef BUILD_HEADLESS_ONLY
$(eval $(call SetupLauncher,appletviewer,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.applet.Main"$(COMMA) }',,\
$(THREAD_LIB) $(XLIBS) -ldl))
endif
$(eval $(call SetupLauncher,extcheck,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.extcheck.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,idlj,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.corba.se.idl.toJavaPortable.Compile"$(COMMA) }'))
$(eval $(call SetupLauncher,jar,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jar.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,jarsigner,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.JarSigner"$(COMMA) }'))
$(eval $(call SetupLauncher,javac,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javac.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,javadoc,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javadoc.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,javah,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javah.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,javap,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javap.Main"$(COMMA) }'))
BUILD_LAUNCHER_jconsole_CPPFLAGS_windows:=-DJAVAW
BUILD_LAUNCHER_jconsole_LDFLAGS_windows:=user32.lib
$(eval $(call SetupLauncher,jconsole,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "-J-Djconsole.showOutputViewer"$(COMMA) "sun.tools.jconsole.JConsole"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/jconsole.jar"$(COMMA) "/lib/tools.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jdb,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.example.debug.tty.TTY"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jhat,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.hat.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,jinfo,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \
"sun.tools.jinfo.JInfo"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jmap,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \
"sun.tools.jmap.JMap"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jps,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jps.Jps"$(COMMA) }'))
$(eval $(call SetupLauncher,jrunscript,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.script.shell.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,jsadebugd,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.jvm.hotspot.jdi.SADebugServer"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jstack,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \
"-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \
"sun.tools.jstack.JStack"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }'))
$(eval $(call SetupLauncher,jstat,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jstat.Jstat"$(COMMA) }'))
$(eval $(call SetupLauncher,jstatd,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jstatd.Jstatd"$(COMMA) }'))
$(eval $(call SetupLauncher,keytool,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.KeyTool"$(COMMA) }'))
$(eval $(call SetupLauncher,native2ascii,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.native2ascii.Main"$(COMMA) }'))
ifndef BUILD_HEADLESS_ONLY
$(eval $(call SetupLauncher,policytool,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.policytool.PolicyTool"$(COMMA) }'))
endif
$(eval $(call SetupLauncher,rmic,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.rmic.Main"$(COMMA) }'))
$(eval $(call SetupLauncher,schemagen,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.jxc.SchemaGenerator"$(COMMA) }'))
$(eval $(call SetupLauncher,serialver,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.serialver.SerialVer"$(COMMA) }'))
$(eval $(call SetupLauncher,xjc,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.xjc.Driver"$(COMMA) }'))
$(eval $(call SetupLauncher,wsgen,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.ws.WsGen"$(COMMA) }'))
$(eval $(call SetupLauncher,wsimport,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.ws.WsImport"$(COMMA) }'))
$(eval $(call SetupLauncher,orbd,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \
"-J-Dcom.sun.CORBA.activation.DbDir=./orb.db"$(COMMA) \
"-J-Dcom.sun.CORBA.activation.Port=1049"$(COMMA) \
"-J-Dcom.sun.CORBA.POA.ORBServerId=1"$(COMMA) \
"com.sun.corba.se.impl.activation.ORBD"$(COMMA) }'))
$(eval $(call SetupLauncher,servertool,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.corba.se.impl.activation.ServerTool"$(COMMA) }'))
$(eval $(call SetupLauncher,tnameserv,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \
"-J-Dcom.sun.CORBA.activation.DbDir=./orb.db"$(COMMA) \
"-J-Djava.util.logging.LoggingPermission=contol"$(COMMA) \
"-J-Dcom.sun.CORBA.POA.ORBServerId=1"$(COMMA) \
"com.sun.corba.se.impl.naming.cosnaming.TransientNameServer"$(COMMA) }'))
$(eval $(call SetupLauncher,pack200,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.java.util.jar.pack.Driver"$(COMMA) "--pack" }'))
$(eval $(call SetupLauncher,rmid,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.server.Activation"$(COMMA) }'))
$(eval $(call SetupLauncher,rmiregistry,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.registry.RegistryImpl"$(COMMA) }'))
$(eval $(call SetupLauncher,jcmd,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jcmd.JCmd"$(COMMA) }'))
ifeq ($(PLATFORM),windows)
$(eval $(call SetupLauncher,kinit,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Kinit"$(COMMA) }'))
$(eval $(call SetupLauncher,klist,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Klist"$(COMMA) }'))
$(eval $(call SetupLauncher,ktab,\
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Ktab"$(COMMA) }'))
endif
##########################################################################################
# The order of the object files on the link command line affects the size of the resulting
# binary (at least on linux) which causes the size to differ between old and new build.
UNPACKEXE_ZIPOBJS = $(JDK_OUTPUTDIR)/newobjs/libzip/zcrc32$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/deflate$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/trees$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/zadler32$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/compress$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/zutil$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/inflate$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/infback$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/inftrees$(OBJ_SUFFIX) \
$(JDK_OUTPUTDIR)/newobjs/libzip/inffast$(OBJ_SUFFIX)
$(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE,\
SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack,\
EXCLUDE_FILES:=jni.cpp,\
LANG:=C++,\
CFLAGS:=$(CXXFLAGS_JDKEXE) $(CXX_O_FLAG_NORM) \
-DFULL \
-I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5,\
CFLAGS_release:=-DPRODUCT,\
CFLAGS_linux:=-fPIC,\
LDFLAGS:=$(LDFLAGS_JDKEXE) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libunpack/mapfile-vers-unpack200) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_SUFFIX:=$(UNPACKEXE_ZIPOBJS) $(LIBCXX),\
LDFLAGS_SUFFIX_solaris:=-lc,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/unpackexe,\
EXE:=$(JDK_OUTPUTDIR)/newobjs/unpack200$(EXE_SUFFIX),\
VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
RC_FLAGS:=$(RC_FLAGS)\
/D "JDK_FNAME=unpack200.exe" \
/D "JDK_INTERNAL_NAME=unpack200" \
/D "JDK_FTYPE=0x1L"))
$(JDK_OUTPUTDIR)/bin/unpack200$(EXE_SUFFIX): $(UNPACKEXE_ZIPOBJS)
ifeq ($(HOST_OS_API),winapi)
UNPACK_MANIFEST:=$(JDK_OUTPUTDIR)/newobjs/unpackexe/unpack200.exe.manifest
IMVERSIONVALUE=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VERSION).$(COOKED_BUILD_NUMBER)
SED_ALL_MANIFEST=$(SED) -e 's%IMVERSION%$(IMVERSIONVALUE)%g'
$(UNPACK_MANIFEST): $(JDK_TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest
$(CAT) $< | $(SED_ALL_MANIFEST) > $@
# Adding a dependency to spec file might be a good idea here, to force rerun on version change.
$(JDK_OUTPUTDIR)/newobjs/unpackexe/unpack200.exe.manifest.mt: $(UNPACK_MANIFEST)
$(MT) /manifest $< /outputresource:$(JDK_OUTPUTDIR)/newobjs/unpack200$(EXE_SUFFIX);#1
touch $@
$(JDK_OUTPUTDIR)/newobjs/unpackexe/unpack200.exe.manifest.mt: $(JDK_OUTPUTDIR)/bin/unpack200$(EXE_SUFFIX)
endif
BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin/unpack200$(EXE_SUFFIX)
##########################################################################################
#
# The java-rmi.cgi script in bin/ only gets delivered in certain situations
#
JAVA_RMI_CGI:=$(JDK_OUTPUTDIR)/bin/java-rmi.cgi
ifeq ($(PLATFORM), linux)
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
endif
ifeq ($(PLATFORM), solaris)
ifeq ($(ARCH_DATA_MODEL), 32)
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
endif
endif
# TODO:
# On windows java-rmi.cgi shouldn't be bundled since Java 1.2, but has been built all
# this time anyway. Since jdk6, it has been built from the wrong source and resulted
# in a copy of the standard java launcher named "java-rmi.exe" ending up in the final
# images bin dir. This weird behavior is mimicked here in the converted makefiles for
# now. Should probably just be deleted.
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6512052
ifeq ($(HOST_OS_API),winapi)
$(eval $(call SetupLauncher,java-rmi,\
-DEXPAND_CLASSPATH_WILDCARDS,\
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/java/main/java/mapfile-$(ARCH))))
$(JAVA_RMI_CGI): $(JDK_OUTPUTDIR)/newobjs/java-rmi$(EXE_SUFFIX)
$(CP) $< $@
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
else
$(JAVA_RMI_CGI): $(JDK_TOPDIR)/src/solaris/bin/java-rmi.cgi.sh
$(CP) $< $@
$(CHMOD) a+x $@
endif
##########################################################################################
$(JDK_OUTPUTDIR)/bin/% : $(JDK_OUTPUTDIR)/newobjs/%
echo Copying $(@F)
$(CP) $< $@
$(BUILD_LAUNCHERS) : $(JDK_TOPDIR)/makefiles/CompileLaunchers.gmk
all: $(BUILD_LAUNCHERS)
.PHONY: all

View File

@ -0,0 +1,608 @@
#
# Copyright (c) 2011, 2012, 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.
#
defalt: all
include $(SPEC)
include MakeBase.gmk
include NativeCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
# Copy files (can now depend on $(COPY_FILES))
include CopyFiles.gmk
# Include the javah generated headers.
CFLAGS_JDKLIB += -I$(JDK_OUTPUTDIR)/gensrc_headers
CXXFLAGS_JDKLIB += -I$(JDK_OUTPUTDIR)/gensrc_headers
# Put the libraries here. Different locations for different host apis.
ifeq ($(HOST_OS_API),posix)
ifneq ($(HOST_OS),macosx)
INSTALL_LIBRARIES_HERE:=$(JDK_OUTPUTDIR)/lib/$(LIBARCH)
LIBARCHDIR=$(LIBARCH)/
else
INSTALL_LIBRARIES_HERE:=$(JDK_OUTPUTDIR)/lib
LIBARCHDIR=/
endif
else
INSTALL_LIBRARIES_HERE:=$(JDK_OUTPUTDIR)/bin
endif
$(INSTALL_LIBRARIES_HERE)/%$(SHARED_LIBRARY_SUFFIX) : $(JDK_OUTPUTDIR)/newobjs/%$(SHARED_LIBRARY_SUFFIX)
echo Copying $(@F)
$(CP) $< $@
BUILD_LIBRARIES=
# TODO: Temporary until awt is converted:
# 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
##########################################################################################
$(eval $(call SetupNativeCompilation,BUILD_LIBZIP,\
SRC:=$(JDK_TOPDIR)/src/share/native/java/util/zip,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS) \
-I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5 \
-I$(JDK_TOPDIR)/src/share/native/java/io \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/java/io,\
CFLAGS_posix:=-DUSE_MMAP,\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(EXPORT_ZIP_FUNCS) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libzip/mapfile-vers),\
LDFLAGS_winapi:=-export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
-export:ZIP_ReadEntry -export:ZIP_GetNextEntry,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libzip,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)zip$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)zip$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
LIBUNPACK_LIB_FILE := $(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)
$(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK,\
SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack,\
EXCLUDE_FILES:=main.cpp,\
LANG:=C++,\
CFLAGS:=$(CXXFLAGS_JDKLIB) $(CXX_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS) \
-DNO_ZLIB -DUNPACK_JNI -DFULL,\
CFLAGS_release:=-DPRODUCT,\
LDFLAGS:=$(LDFLAGS_JDKLIB)\
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libunpack/mapfile-vers) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_winapi:=-map:$(JDK_OUTPUTDIR)/newobjs/unpack.map /debug,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_posix:=$(LIBCXX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libunpack,\
LIB:=$(LIBUNPACK_LIB_FILE),\
VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\
RC_FLAGS:=$(RC_FLAGS)\
/D "JDK_FNAME=unpack.dll" \
/D "JDK_INTERNAL_NAME=unpack" \
/D "JDK_FTYPE=0x2L"))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)
ifeq ($(HOST_OS_API),winapi)
$(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.map: $(LIBUNPACK_LIB_FILE)
echo Copying $(@F)
$(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX),%.map,$<) $@
$(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.pdb: $(LIBUNPACK_LIB_FILE)
echo Copying $(@F)
$(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX),%.pdb,$<) $@
endif
##########################################################################################
$(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY,\
SRC:=$(JDK_TOPDIR)/src/share/native/common,\
EXCLUDE_FILES:=check_version.c jdk_util.c jio.c jni_util.c verify_stub.c,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) ${C_O_FLAG_HI} $(SHARED_LIBRARY_FLAGS), \
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libverify/mapfile-vers),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libverify,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)verify$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)verify$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
$(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM,\
SRC:=$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) ${C_O_FLAG_NONE}\
-I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include,\
CFLAGS_winapi_debug:=-DLOGGING,\
ARFLAGS:=$(ARFLAGS),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libfdlibm,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)
##########################################################################################
LIBATTACH_EXCLUDE_FILES:=
ifneq ($(PLATFORM),solaris)
LIBATTACH_EXCLUDE_FILES+=SolarisVirtualMachine.c
endif
ifneq ($(PLATFORM),linux)
LIBATTACH_EXCLUDE_FILES+=LinuxVirtualMachine.c
endif
ifneq ($(PLATFORM),macosx)
LIBATTACH_EXCLUDE_FILES+=BsdVirtualMachine.c
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBATTACH,\
SRC:=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/tools/attach,\
EXCLUDE_FILES:=$(LIBATTACH_EXCLUDE_FILES),\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS),\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libattach/mapfile-$(PLATFORM)) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_solaris:=-ldoor,\
LDFLAGS_winapi:=psapi.lib advapi32.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libattach,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
$(eval $(call SetupNativeCompilation,BUILD_LIBDT_SOCKET,\
SRC:=$(JDK_TOPDIR)/src/share/transport/socket \
$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/transport/socket,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) -DUSE_MMAP $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS) \
-I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(PLATFORM) \
-I$(JDK_TOPDIR)/src/share/transport/socket \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/transport/socket \
-I$(JDK_TOPDIR)/src/share/back/export \
-I$(JDK_TOPDIR)/src/share/back,\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libdt_socket/mapfile-vers),\
LDFLAGS_SUFFIX_linux:=-lpthread,\
LDFLAGS_SUFFIX_solaris:=-lnsl -lsocket,\
LDFLAGS_SUFFIX_winapi:=-export:jdwpTransport_OnLoad ws2_32.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libdt_socket,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)dt_socket$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)dt_socket$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
ifeq ($(HOST_OS_API),winapi)
$(eval $(call SetupNativeCompilation,BUILD_LIBDT_SHMEM,\
SRC:= $(JDK_TOPDIR)/src/share/native/com/sun/tools/jdi \
$(JDK_TOPDIR)/src/share/transport/shmem \
$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/transport/shmem,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) -DUSE_MMAP $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS)\
-I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(PLATFORM) \
-I$(JDK_TOPDIR)/src/share/transport/shmem \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/transport/shmem \
-I$(JDK_TOPDIR)/src/share/back/export, \
LDFLAGS:=$(LDFLAGS_JDKLIB),\
LDFLAGS_winapi:=-export:jdwpTransport_OnLoad,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libdt_shmem,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)dt_shmem$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)dt_shmem$(SHARED_LIBRARY_SUFFIX)
endif # PLATFORM
##########################################################################################
# JDWP_LOGGING causes log messages to be compiled into the library. These reference the
# __FILE__ macro which here expands to the absolute path of the file while the old build
# system used a relative path. This causes the binaries to differ in size.
$(eval $(call SetupNativeCompilation,BUILD_LIBJDWP,\
SRC:=$(JDK_TOPDIR)/src/share/back $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/back,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) -DJDWP_LOGGING $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS)\
-I$(JDK_TOPDIR)/src/share/transport/export \
-I$(JDK_TOPDIR)/src/share/back/export \
-I$(JDK_TOPDIR)/src/share/npt \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/npt \
-I$(JDK_TOPDIR)/src/share/back \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/back \
-I$(JDK_OUTPUTDIR)/gensrc_jdwp_headers,\
LDFLAGS:=$(filter-out -ljava,$(LDFLAGS_JDKLIB)) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libjdwp/mapfile-vers),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_linux:=-ldl,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjdwp,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jdwp$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)jdwp$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
ifneq ($(PLATFORM),solaris)
LIBJAAS_EXCLUDE_FILES:=Solaris.c
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBJAAS,\
SRC:=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/com/sun/security/auth/module,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS),\
LDFLAGS:=$(filter-out -ljava,$(LDFLAGS_JDKLIB)) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_winapi:=netapi32.lib user32.lib mpr.lib advapi32.lib,\
LDFLAGS_solaris:=$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libjaas/mapfile-vers),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
EXCLUDE_FILES:=$(LIBJAAS_EXCLUDE_FILES),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjaas,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jaas$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jaas$(SHARED_LIBRARY_SUFFIX)
# Oddly enough, it is called jaas_nt.dll under winapi and libjaas_unix.so under posix.
ifeq ($(PLATFORM),windows)
$(INSTALL_LIBRARIES_HERE)/jaas_nt.dll : $(JDK_OUTPUTDIR)/newobjs/jaas.dll
echo Copying $(@F)
$(CP) $< $@
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/jaas_nt.dll
else
$(INSTALL_LIBRARIES_HERE)/libjaas_unix$(SHARED_LIBRARY_SUFFIX) : $(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jaas$(SHARED_LIBRARY_SUFFIX)
echo Copying $(@F)
$(CP) $< $@
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/libjaas_unix$(SHARED_LIBRARY_SUFFIX)
endif
##########################################################################################
ifeq ($(HOST_OS_API),posix)
# TODO make this work on macosx
ifneq ($(HOST_OS),macosx)
#
# NOTE: Change -L flag to point to new lib location after converting libnio. Also
# add dependency on nio from sctp.
$(eval $(call SetupNativeCompilation,BUILD_LIBSCTP,\
SRC:=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/nio/ch/sctp,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS)\
-I$(JDK_TOPDIR)/src/share/native/sun/nio/ch \
-I$(JDK_TOPDIR)/src/share/native/sun/nio/ch/sctp \
-I$(JDK_TOPDIR)/src/share/native/java/net \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/nio/ch \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/java/net,\
CFLAGS_linux:=-Werror,\
LDFLAGS:=$(LDFLAGS_JDKLIB) -L$(JDK_OUTPUTDIR)/lib/$(LIBARCHDIR)\
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libsctp/mapfile-vers) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_SUFFIX_linux:=-lpthread,\
LDFLAGS_SUFFIX_posix:=-ldl -lnio -lnet,\
LDFLAGS_SUFFIX_solaris:=-lsocket,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
INCLUDE_FILES:=SctpNet.c SctpChannelImpl.c SctpServerChannelImpl.c,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libsctp,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)sctp$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)sctp$(SHARED_LIBRARY_SUFFIX)
endif
endif
##########################################################################################
$(eval $(call SetupNativeCompilation,BUILD_LIBJSDT,\
SRC:=$(JDK_TOPDIR)/src/share/native/sun/tracing/dtrace\
$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/tracing/dtrace,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM) $(SHARED_LIBRARY_FLAGS)\
-I$(JDK_TOPDIR)/src/share/native/sun/tracing/dtrace,\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libjsdt/mapfile-vers) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX) -ldl,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjsdt,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jsdt$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)jsdt$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
ifdef OPENJDK
# TODO: Update awt lib path when awt is converted
$(eval $(call SetupNativeCompilation,BUILD_LIBLCMS,\
SRC:=$(JDK_TOPDIR)/src/share/native/sun/java2d/cmm/lcms \
$(JDK_TOPDIR)/src/share/native/sun/java2d/,\
INCLUDE_FILES:=cmscam02.c cmscgats.c cmscnvrt.c cmserr.c \
cmsgamma.c cmsgmt.c cmsintrp.c cmsio0.c \
cmsio1.c cmslut.c cmsmd5.c cmsmtrx.c \
cmsnamed.c cmsopt.c cmspack.c cmspcs.c \
cmsplugin.c cmsps2.c cmssamp.c cmssm.c \
cmstypes.c cmsvirt.c cmswtpnt.c cmsxform.c \
LCMS.c,\
LANG:=C,\
CFLAGS:=$(filter-out -xc99=%none,$(CFLAGS_JDKLIB)) $(C_O_FLAG_NORM) \
$(SHARED_LIBRARY_FLAGS) \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug,\
CFLAGS_solaris:=-xc99=no_lib,\
CFLAGS_winapi:=-DCMS_IS_WINDOWS_,\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/liblcms/mapfile-vers),\
LDFLAGS_posix:=-L$(JDK_OUTPUTDIR)/lib/$(LIBARCHDIR)xawt,\
LDFLAGS_solaris:=/usr/lib$(ISA_DIR)/libm.so.2,\
LDFLAGS_winapi:=$(JDK_OUTPUTDIR)/tmp/sun/sun.awt/awt/$(OBJDIRNAME)/awt.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_posix:=-lawt,\
LDFLAGS_SUFFIX_linux:=-lm,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/liblcms,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)lcms$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)lcms$(SHARED_LIBRARY_SUFFIX)
endif
##########################################################################################
ifdef OPENJDK
BUILD_LIBJPEG_MAPFILE := makefiles/mapfiles/libjpeg/mapfile-vers
else
BUILD_LIBJPEG_MAPFILE := makefiles/mapfiles/libjpeg/mapfile-vers-closed
BUILD_LIBJPEG_CLOSED_SRC := $(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
BUILD_LIBJPEG_CLOSED_INCLUDES := -I$(BUILD_LIBJPEG_CLOSED_SRC)
endif
ifeq ($(PLATFORM), solaris)
ifneq ($(ARCH), amd64)
BUILD_LIBJPEG_REORDER := $(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/reorder-$(ARCH)
$(JDK_OUTPUTDIR)/newobjs/libjpeg/mapfile-vers : $(JDK_TOPDIR)/$(BUILD_LIBJPEG_MAPFILE) \
$(BUILD_LIBJPEG_REORDER)
$(MKDIR) -p $(@D)
$(CAT) $(JDK_TOPDIR)/$(BUILD_LIBJPEG_MAPFILE) > $@
$(SED) -e 's=OUTPUTDIR=$(JDK_OUTPUTDIR)=' $(BUILD_LIBJPEG_REORDER) >> $@
LIBJPEG_MAPFILE:=$(JDK_OUTPUTDIR)/newobjs/libjpeg/mapfile-vers
$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jpeg$(SHARED_LIBRARY_SUFFIX): \
$(JDK_OUTPUTDIR)/newobjs/libjpeg/mapfile-vers
endif
endif
# Suppress gcc warnings like "variable might be clobbered by 'longjmp'
# or 'vfork'": this warning indicates that some variable is placed to
# a register by optimized compiler and it's value might be lost on longjmp().
# Recommended way to avoid such warning is to declare the variable as
# volatile to prevent the optimization. However, this approach does not
# work because we have to declare all variables as volatile in result.
#ifndef CROSS_COMPILE_ARCH
# CC_43_OR_NEWER := \
# $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
# \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
# ifeq ($(CC_43_OR_NEWER),1)
# BUILD_LIBJPEG_CFLAGS_linux += -Wno-clobbered
# endif
#endif
$(eval $(call SetupNativeCompilation,BUILD_LIBJPEG,\
SRC:=$(BUILD_LIBJPEG_CLOSED_SRC) \
$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_HI) $(SHARED_LIBRARY_FLAGS) \
$(BUILD_LIBJPEG_CLOSED_INCLUDES) \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\
CFLAGS_solaris:=-xF,\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,$(BUILD_LIBJPEG_MAPFILE))\
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_linux:=-ldl,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjpeg,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jpeg$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)jpeg$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
ifndef OPENJDK
FONT_HEADERS := -I$(CLOSED_SRC)/share/native/$(PKGDIR)/t2k
BUILD_LIBFONTMANAGER_MAPFILE := makefiles/mapfiles/libfontmanager/mapfile-vers
LIBFONTMANAGER_EXCLUDE_FILES += freetypeScaler.c
else
FONT_HEADERS := $(FREETYPE2_CFLAGS)
BUILD_LIBFONTMANAGER_MAPFILE := makefiles/mapfiles/libfontmanager/mapfile-vers.openjdk
BUILD_LIBFONTMANAGER_FONTLIB := $(FREETYPE2_LIBS)
endif
ifeq ($(PLATFORM),windows)
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
X11TextRenderer.c
else
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
lcdglyph.c
endif
BUILD_LIBFONTMANAGER_CFLAGS_COMMON := $(SHARED_LIBRARY_FLAGS) \
-DLE_STANDALONE -DHEADLESS \
$(FONT_HEADERS) \
-I$(JDK_TOPDIR)/src/share/native/sun/font \
-I$(JDK_TOPDIR)/src/share/native/sun/font/layout \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/awt \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/java2d \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d
$(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER,\
SRC:=$(JDK_TOPDIR)/src/share/native/sun/font\
$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/font,\
EXCLUDE_FILES:=$(LIBFONTMANAGER_EXCLUDE_FILES) \
AccelGlyphCache.c,\
LANG:=C++,\
CFLAGS:=$(CFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON),\
CXXFLAGS:=$(CXXFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON),\
CFLAGS_posix:=$(C_O_FLAG_HI),\
CXXFLAGS_posix:=$(CXX_O_FLAG_HI),\
CFLAGS_windows=$(C_O_FLAG_NORM)\
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/windows \
-DCC_NOEX, \
LDFLAGS:=$(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) \
$(call SET_SHARED_LIBRARY_MAPFILE,$(BUILD_LIBFONTMANAGER_MAPFILE)) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_solaris:=-L$(JDK_OUTPUTDIR)/lib/$(LIBARCHDIR)headless,\
LDFLAGS_windows:=advapi32.lib user32.lib gdi32.lib $(JDK_OUTPUTDIR)/tmp/sun/sun.awt/awt/$(OBJDIRNAME)/awt.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX) \
$(BUILD_LIBFONTMANAGER_FONTLIB),\
LDFLAGS_SUFFIX_linux:=-lawt $(LIBM) $(LIBCXX),\
LDFLAGS_SUFFIX_solaris:=-lawt -lawt_xawt -lc $(LIBM) $(LIBCXX),\
LDFLAGS_SUFFIX_macosx:=-lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libfontmanager,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)fontmanager$(SHARED_LIBRARY_SUFFIX)))
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)fontmanager$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
ifndef OPENJDK
# ifeq ($(PLATFORM), linux)
# ifeq ("$(CC_VER_MAJOR)", "3")
# OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
# endif
# endif
#
# The resulting size of the t2k lib file is (at least on linux) dependant on the order of
# the input .o files. Because of this the new build will differ in size to the old build.
BUILD_LIBT2K_CFLAGS_COMMON:=-I$(JDK_TOPDIR)/src/share/native/sun/font \
-I$(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k \
-I$(JDK_TOPDIR)/src/closed/share/native/sun/font \
-I$(JDK_TOPDIR)/src/share/share/native/sun/font \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/font \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d/loops \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d/pipe \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/java2d \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d
$(eval $(call SetupNativeCompilation,BUILD_LIBT2K,\
SRC:=$(JDK_TOPDIR)/src/closed/share/native/sun/font \
$(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k \
$(JDK_TOPDIR)/src/closed/share/native/sun/font/t2k/ttHints,\
EXCLUDE_FILES:=orion.c,\
LANG:=C++,\
CFLAGS:=$(CFLAGS_JDKLIB) $(BUILD_LIBT2K_CFLAGS_COMMON) $(C_O_FLAG_HI),\
CXXFLAGS:=$(CXXFLAGS_JDKLIB) $(BUILD_LIBT2K_CFLAGS_COMMON) $(CXX_O_FLAG_HI),\
CFLAGS_windows=-DCC_NOEX, \
CXXFLAGS_windows=-DCC_NOEX, \
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libt2k/mapfile-vers) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_windows:=user32.lib $(JDK_OUTPUTDIR)/newobjs/fontmanager.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_linux:=$(LIBCXX) $(LIBM) -L$(INSTALL_LIBRARIES_HERE) -lfontmanager,\
LDFLAGS_SUFFIX_solaris:=$(LIBCXX) $(LIBM) -L$(INSTALL_LIBRARIES_HERE) -lfontmanager -lawt \
-lawt_xawt,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libt2k,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)t2k$(SHARED_LIBRARY_SUFFIX)))
# t2k is linked against fontmanager
$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)t2k$(SHARED_LIBRARY_SUFFIX): \
$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)fontmanager$(SHARED_LIBRARY_SUFFIX)
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)t2k$(SHARED_LIBRARY_SUFFIX)
endif
##########################################################################################
ifeq ($(PLATFORM), windows)
ifeq ($(ARCH_DATA_MODEL), 32)
KERNEL32_LIB := kernel32.lib
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBJAWT,\
SRC:=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/windows,\
INCLUDE_FILES:=jawt.cpp,\
LANG:=C++,\
CFLAGS:=$(CXXFLAGS_JDKLIB) $(CXX_O_FLAG_NORM) \
-EHsc -DUNICODE -D_UNICODE \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/windows \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \
-I$(JDK_TOPDIR)/src/share/native/sun/java2d \
-I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \
-I$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/java2d/windows, \
LDFLAGS:=$(LDFLAGS_JDKLIB) $(KERNEL32_LIB) \
advapi32.lib $(JDK_OUTPUTDIR)/tmp/sun/sun.awt/awt/$(OBJDIRNAME)/awt.lib,\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjawt,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)))
$(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX): \
$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)
echo Copying $(@F)
$(CP) $(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX) $@
BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX)
else # PLATFORM not windows
ifndef BUILD_HEADLESS_ONLY
MAWT_AWT_LIB =-lawt_xawt
else
MAWT_AWT_LIB =-lawt_headless
HEADLESS_CFLAG += -DHEADLESS
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBJAWT,\
SRC:=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/native/sun/awt,\
INCLUDE_FILES:=jawt.c,\
LANG:=C,\
CFLAGS:=$(CFLAGS_JDKLIB) $(C_O_FLAG_NORM), \
CFLAGS_linux:=$(HEADLESS_CFLAG),\
LDFLAGS:=$(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_MAPFILE,makefiles/mapfiles/libjawt/mapfile-vers) \
$(call SET_SHARED_LIBRARY_ORIGIN),\
LDFLAGS_solaris:=-L/usr/openwin/sfw/lib$(ISA_DIR) -L/usr/openwin/lib$(ISA_DIR),\
LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX) $(MAWT_AWT_LIB) -lawt,\
LDFLAGS_SUFFIX_solaris:=-lXrender,\
BIN:=$(JDK_OUTPUTDIR)/newobjs/libjawt,\
LIB:=$(JDK_OUTPUTDIR)/newobjs/$(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)))
endif # PLATFORM
BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)
##########################################################################################
all: $(COPY_FILES) $(BUILD_LIBRARIES)
.PHONY: all

232
jdk/makefiles/CopyFiles.gmk Normal file
View File

@ -0,0 +1,232 @@
#
# Copyright (c) 2011, 2012, 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.
#
INCLUDEDIR = $(JDK_OUTPUTDIR)/include
# TODO: Platform dir needs to be "win32" on windows /erikj
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM)
#
# Copy exported header files to outputdir.
#
H_TARGET_FILES =$(INCLUDEDIR)/jdwpTransport.h \
$(INCLUDEDIR)/jni.h \
$(INCLUDEDIR)/jvmti.h \
$(INCLUDEDIR)/jvmticmlr.h \
$(INCLUDEDIR)/classfile_constants.h \
$(INCLUDEDIR)/jawt.h \
$(PLATFORM_INCLUDE)/jni_md.h \
$(PLATFORM_INCLUDE)/jawt_md.h
$(INCLUDEDIR)/%.h: $(JDK_TOPDIR)/src/share/javavm/export/%.h
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(PLATFORM_INCLUDE)/%.h: $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/javavm/export/%.h
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES = $(H_TARGET_FILES)
##########################################################################################
LIBDIR = $(JDK_OUTPUTDIR)/lib
SERVICETAG_LIBDIR = $(LIBDIR)/servicetag
$(SERVICETAG_LIBDIR)/jdk_header.png: $(JDK_TOPDIR)/src/share/classes/com/sun/servicetag/resources/jdk_header.png
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(CHMOD) 444 $@
COPY_FILES += $(SERVICETAG_LIBDIR)/jdk_header.png
##########################################################################################
MGMT_LIBDIR = $(LIBDIR)/management
MGMT_LIB_SRC = $(JDK_TOPDIR)/src/share/lib/management
MGMT_SRC_FILES = $(wildcard $(MGMT_LIB_SRC)/*)
MGMT_TARGET_FILES = $(subst $(MGMT_LIB_SRC),$(MGMT_LIBDIR),$(MGMT_SRC_FILES))
$(MGMT_LIBDIR)/management.properties: $(MGMT_LIB_SRC)/management.properties
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(CHMOD) 644 $@
$(MGMT_LIBDIR)/%: $(MGMT_LIB_SRC)/%
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(CHMOD) 444 $@
COPY_FILES += $(MGMT_TARGET_FILES)
##########################################################################################
LOGGING_LIB_SRC = $(JDK_TOPDIR)/src/share/lib
$(LIBDIR)/logging.properties: $(LOGGING_LIB_SRC)/logging.properties
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(LIBDIR)/logging.properties
##########################################################################################
#
# Copy property files from sun/print to LIBDIR
#
PSFONTPROPFILE_SRC_DIR = $(JDK_TOPDIR)/src/share/classes/sun/print
PSFONTPROPFILE_SRCS = $(wildcard $(PSFONTPROPFILE_SRC_DIR)/*.properties*)
PSFONTPROPFILE_TARGET_FILES = $(subst $(PSFONTPROPFILE_SRC_DIR),$(LIBDIR),$(PSFONTPROPFILE_SRCS))
$(PSFONTPROPFILE_TARGET_FILES): $(PSFONTPROPFILE_SRCS)
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(PSFONTPROPFILE_TARGET_FILES)
##########################################################################################
#
# Copy flavormap.properties, cursor.properties and cursors gif files to LIBDIR
#
PLATFORM_LIB_SRC = $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/lib
$(LIBDIR)/flavormap.properties: $(PLATFORM_LIB_SRC)/flavormap.properties
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(LIBDIR)/flavormap.properties
CURSORS_DEST_DIR = $(LIBDIR)/images/cursors
CURSORS_PLATFORM_LIB_SRC = $(PLATFORM_LIB_SRC)/images/cursors
$(CURSORS_DEST_DIR)/cursors.properties: $(CURSORS_PLATFORM_LIB_SRC)/cursors.properties
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(CURSORS_DEST_DIR)/cursors.properties
CURSORS_LIB_SRC = $(JDK_TOPDIR)/src/share/lib/images/cursors
ifeq ($(PLATFORM), windows)
CURSORS_SRC_FILES = $(CURSORS_LIB_SRC)/invalid32x32.gif $(wildcard $(CURSORS_LIB_SRC)/win32_*.gif)
else # PLATFORM
CURSORS_SRC_FILES = $(CURSORS_LIB_SRC)/invalid32x32.gif $(wildcard $(CURSORS_LIB_SRC)/motif_*.gif)
endif # PLATFORM
CURSORS_TARGET_FILES = $(subst $(CURSORS_LIB_SRC),$(CURSORS_DEST_DIR),$(CURSORS_SRC_FILES))
$(CURSORS_TARGET_FILES): $(CURSORS_SRC_FILES)
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(CURSORS_TARGET_FILES)
##########################################################################################
CONTENT_TYPES_SRC=$(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/lib
$(LIBDIR)/content-types.properties: $(CONTENT_TYPES_SRC)/content-types.properties
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(LIBDIR)/content-types.properties
##########################################################################################
ICCPROFILE_DEST_DIR := $(LIBDIR)/cmm
ifdef OPENJDK
ICCPROFILE_SRC_DIR := $(JDK_TOPDIR)/src/share/lib/cmm/lcms
else
ICCPROFILE_SRC_DIR := $(JDK_TOPDIR)/src/closed/share/lib/cmm/kcms
endif
ICCPROFILE_SRCS:=$(wildcard $(ICCPROFILE_SRC_DIR)/*.pf)
ICCPROFILE_TARGET_FILES:=$(subst $(ICCPROFILE_SRC_DIR),$(ICCPROFILE_DEST_DIR),$(ICCPROFILE_SRCS))
$(ICCPROFILE_DEST_DIR)%.pf: $(ICCPROFILE_SRC_DIR)%.pf
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(CHMOD) 444 $@
COPY_FILES += $(ICCPROFILE_TARGET_FILES)
##########################################################################################
#make sure freetype dll will be available at runtime as well as link time
#
#NB: Default freetype build system uses -h linker option and
# result .so contains hardcoded library name that is later
# used for adding dependencies to other objects
# (e.g. libfontmanager.so).
#
# It is not obvious how to extract that hardcoded name (libfreetype.so.6)
# without overcomplicating logic here.
# To workaround this we hardcode .6 suffix for now.
#
# Note that .so.6 library will not be found by System.loadLibrary()
# but fortunately we need to load FreeType library explicitly
# on windows only
#
#TODO: rework this to avoid hardcoding library name in the makefile
#
ifdef OPENJDK
ifeq ($(PLATFORM), windows)
FREETYPE_LIB = $(JDK_OUTPUTDIR)/bin/$(call SHARED_LIBRARY,freetype)
else
ifeq ($(USING_SYSTEM_FT_LIB), false)
FREETYPE_LIB = $(JDK_OUTPUTDIR)/lib/$(LIBARCH)/$(call SHARED_LIBRARY,freetype).6
endif
endif
$(FREETYPE_LIB):
$(CP) $(FREETYPE2_LIB_PATH)/$(call SHARED_LIBRARY,freetype) $@
COPY_FILES += $(FREETYPE_LIB)
endif
##########################################################################################
# Copy msvcr100.dll on windows
ifeq ($(PLATFORM),windows)
MSVCRNN_TARGET := $(JDK_OUTPUTDIR)/bin/$(notdir $(MSVCRNN_DLL))
$(MSVCRNN_TARGET): $(MSVCRNN_DLL)
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(MSVCRNN_TARGET)
endif
##########################################################################################

View File

@ -0,0 +1,150 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Copy icu and _dict files used by the text break iterator
COPY_PATTERNS = .icu _dict
# Copy config files for com.sun.org.apache.xml.internal.security
XMLSECURITY_RESOURCEDIR = $(JDK_TOPDIR)/src/share/classes/com/sun/org/apache/xml/internal/security/resource
COPY_FILES += \
$(XMLSECURITY_RESOURCEDIR)/config.dtd \
$(XMLSECURITY_RESOURCEDIR)/config.xml
# Copy sun/tools related files into the classes directory.
# Extra jstat files
JSTAT_RESOURCEDIR = $(JDK_TOPDIR)/src/share/classes/sun/tools/jstat/resources
COPY_FILES += \
$(JSTAT_RESOURCEDIR)/jstat_options \
$(JSTAT_RESOURCEDIR)/jstat_unsupported_options
# Extra jhat files
JHAT_RESOURCEDIR = $(JDK_TOPDIR)/src/share/classes/com/sun/tools/hat/resources
COPY_FILES += \
$(JHAT_RESOURCEDIR)/hat.js \
$(JHAT_RESOURCEDIR)/oqlhelp.html \
$(JHAT_RESOURCEDIR)/platform_names.txt
# Extra jrunscript files
JRUNSCRIPT_RESOURCEDIR = $(JDK_TOPDIR)/src/share/classes/com/sun/tools/script/shell
COPY_FILES += \
$(JRUNSCRIPT_RESOURCEDIR)/init.js \
$(JRUNSCRIPT_RESOURCEDIR)/messages.properties
# Extra jvmstat files
COPY_FILES += \
$(JDK_TOPDIR)/src/share/classes/sun/jvmstat/perfdata/resources/aliasmap
# Servicetag resources
SERVICETAG_RESOURCES_DIR = $(JDK_TOPDIR)/src/share/classes/com/sun/servicetag/resources
COPY_FILES += \
$(SERVICETAG_RESOURCES_DIR)/product_registration.xsd \
$(SERVICETAG_RESOURCES_DIR)/register.html \
$(SERVICETAG_RESOURCES_DIR)/register_ja.html \
$(SERVICETAG_RESOURCES_DIR)/register_zh_CN.html \
$(wildcard $(SERVICETAG_RESOURCES_DIR)/javase_*.properties)
# JConsole resources
JCONSOLE_RESOURCES_DIR = $(JDK_TOPDIR)/src/share/classes/sun/tools/jconsole/resources
COPY_FILES += \
$(wildcard $(JCONSOLE_RESOURCES_DIR)/*.png) \
$(wildcard $(JCONSOLE_RESOURCES_DIR)/*.gif)
# Print resources
PRINT_RESOURCES_DIR = $(JDK_TOPDIR)/src/share/classes/sun/print/resources
COPY_FILES += \
$(wildcard $(PRINT_RESOURCES_DIR)/*.png)
# IDN resources
COPY_FILES += \
$(JDK_TOPDIR)/src/share/classes/sun/net/idn/uidna.spp
##########################################################################################
#
# Copy the META-INF/services configuration files that are scattered around the source tree
# into classes/META-INF/services. Be aware that META-INF directories that are located at a
# source root (.../classes/META-INF) are automatically copied verbatim by the
# SetupJavaCompilation macro.
#
# Any other META-INF/services configuration file is found here and platform specific comments
# are uncommented and the configuration file is stored in the output META-INF directory.
# Make sure the output directory is created.
$(shell $(MKDIR) -p $(JDK_OUTPUTDIR)/newclasses/META-INF/services)
# Find all META-INF/services/* files
ALL_META-INF_DIRS_share:=$(shell $(FIND) $(JDK_TOPDIR)/src/share/classes -type d -a -name META-INF)
ALL_META-INF_DIRS_hostapi:=$(shell $(FIND) $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes -type d -a -name META-INF)
# Platform specific overrides shared
ifneq ($(ALL_META-INF_DIRS_hostapi),)
ALL_META-INF_DIRS:=$(ALL_META-INF_DIRS_hostapi) \
$(filter-out %$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes%,%,$(ALL_META-INF_DIRS_hostapi)),\
$(ALL_META-INF_DIRS_share))
else
ALL_META-INF_DIRS:=$(ALL_META-INF_DIRS_share)
endif
# Filter out META-INF dirs that shouldn't be included
ALL_META-INF_DIRS:=$(filter-out %sun/nio/cs/ext/META-INF,$(ALL_META-INF_DIRS))
ifdef OPENJDK
ALL_META-INF_DIRS:=$(filter-out %com/sun/script/javascript/META-INF,$(ALL_META-INF_DIRS))
endif
SRC_SERVICES_FILES:=$(wildcard $(addsuffix /services/*,$(ALL_META-INF_DIRS)))
ifdef OPENJDK
SRC_SERVICES_FILES:=$(filter-out %sun/dc/META-INF/services/sun.java2d.pipe.RenderingEngine,$(SRC_SERVICES_FILES))
SRC_SERVICES_FILES:=$(filter-out %sun/java2d/cmm/kcms/META-INF/services/sun.java2d.cmm.PCMM,$(SRC_SERVICES_FILES))
else
SRC_SERVICES_FILES:=$(filter-out %sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine,$(SRC_SERVICES_FILES))
SRC_SERVICES_FILES:=$(filter-out %sun/java2d/cmm/lcms/META-INF/services/sun.java2d.cmm.PCMM,$(SRC_SERVICES_FILES))
endif
# The number of services files are relatively few. If the increase in numbers, then
# we have to use ListPathsSafelyNow here.
# Change $(JDK_TOPDIR)/src/.../META-INF/services/yyyy into $(JDK_OUTPUTDIR)/newclasses/META-INF/services/yyyy
# The \n in the printf command is needed to make sed work on Solaris.
OUT_SERVICES_FILES:=$(addprefix $(JDK_OUTPUTDIR)/newclasses/META-INF/services/,\
$(shell $(PRINTF) "$(SRC_SERVICES_FILES)\n" | $(SED) -e 's|/[^ ]*/META-INF/services/||g'))
OUT_SERVICES_FILES_COLON:=$(addsuffix :,$(OUT_SERVICES_FILES))
# Exception handling for print services with no META-INF directory
SRC_SERVICES_FILES_PRINT = $(wildcard $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes/sun/print/services/*)
OUT_SERVICES_FILES_PRINT = $(addprefix $(JDK_OUTPUTDIR)/newclasses/META-INF/services/,\
$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes/sun/print/services/%,%,\
$(SRC_SERVICES_FILES_PRINT)))
OUT_SERVICES_FILES_PRINT_COLON = $(addsuffix :,$(OUT_SERVICES_FILES_PRINT))
RULES_SERVICES_PRINT = $(join $(OUT_SERVICES_FILES_PRINT_COLON),$(SRC_SERVICES_FILES_PRINT))
# Now setup the dependency rules to generate a META-INF/services/... from the correct source.
META-INF_RULES_SERVICES:=$(RULES_SERVICES_PRINT) $(join $(OUT_SERVICES_FILES_COLON),$(SRC_SERVICES_FILES))
# Eval the newly created rules to incorporate them into the make tree.
define addto_meta-inf_services
$1
echo Installing META-INF/services/$$(@F)
$(CAT) $$< | $(SED) -e "s/^#\[$(PLATFORM)\]//" > $$@
endef
$(foreach i,$(META-INF_RULES_SERVICES),$(eval $(call addto_meta-inf_services,$i)))
# Here is the generic rule, whose receipt the above rules will trigger.
COPY_EXTRA += $(OUT_SERVICES_FILES)
COPY_EXTRA += $(OUT_SERVICES_FILES_PRINT)

View File

@ -0,0 +1,75 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
SAMPLE_TARGET_DIR = $(JDK_OUTPUTDIR)/sample
SAMPLE_SOURCE_DIR = $(JDK_TOPDIR)/src/share/sample
SAMPLE_CLOSED_SOURCE_DIR = $(JDK_TOPDIR)/src/closed/share/sample
SAMPLE_SOLARIS_SOURCE_DIR = $(JDK_TOPDIR)/src/solaris/sample
# Exclude the vm directory
SAMPLE_FIND_FILTER = -name vm -prune -o
SAMPLE_SOURCE := $(shell $(FIND) $(SAMPLE_SOURCE_DIR) $(SAMPLE_FIND_FILTER) -type f -print)
SAMPLE_TARGET := $(subst $(SAMPLE_SOURCE_DIR),$(SAMPLE_TARGET_DIR),$(SAMPLE_SOURCE))
ifndef OPENJDK
# Exclude Main.java in EbayClient dir
SAMPLE_CLOSED_SOURCE := $(shell $(FIND) $(SAMPLE_CLOSED_SOURCE_DIR) -type f -print | $(GREP) -v EbayClient/Main.java)
SAMPLE_CLOSED_TARGET := $(subst $(SAMPLE_CLOSED_SOURCE_DIR),$(SAMPLE_TARGET_DIR),$(SAMPLE_CLOSED_SOURCE))
SAMPLE_TARGET += $(SAMPLE_CLOSED_TARGET)
endif
ifeq ($(PLATFORM),solaris)
SAMPLE_SOLARIS_SOURCE := $(shell $(FIND) $(SAMPLE_SOLARIS_SOURCE_DIR) -type f -print)
SAMPLE_SOLARIS_TARGET := $(subst $(SAMPLE_SOLARIS_SOURCE_DIR),$(SAMPLE_TARGET_DIR),$(SAMPLE_SOLARIS_SOURCE))
SAMPLE_TARGET += $(SAMPLE_SOLARIS_TARGET)
endif
$(SAMPLE_TARGET_DIR)/dtrace/%: $(SAMPLE_SOLARIS_SOURCE_DIR)/dtrace/%
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(SAMPLE_TARGET_DIR)/webservices/%: $(SAMPLE_CLOSED_SOURCE_DIR)/webservices/%
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
$(SAMPLE_TARGET_DIR)/%: $(SAMPLE_SOURCE_DIR)/%
$(MKDIR) -p $(@D)
rm -f $@
$(CP) $< $@
COPY_FILES += $(SAMPLE_TARGET)
all: $(COPY_FILES)
.PHONY: all

View File

@ -0,0 +1,97 @@
#
# Copyright (c) 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.
#
#
# Make file for generating BreakIterator data files.
#
# input
#
# Notes: sun.text.resources.BreakIteratorRules no longer goes to runtime.
# They are used at JDK build phase in order to create $(BIFILES) which
# are used on runtime instead.
#
TEXT_SRCDIR = $(JDK_TOPDIR)/src/share/classes
TEXT_PKG = sun/text/resources
TEXT_SOURCES = %$(TEXT_PKG)/BreakIteratorRules.java \
%$(TEXT_PKG)/BreakIteratorInfo.java \
%$(TEXT_PKG)/BreakIteratorRules_th.java \
%$(TEXT_PKG)/BreakIteratorInfo_th.java
# Generate BreakIteratorData
BREAK_ITERATOR_DIR = $(JDK_OUTPUTDIR)/break_iterator
BREAK_ITERATOR_CLASSES = $(BREAK_ITERATOR_DIR)/classes
# JAVAC_SOURCE_PATH_UGLY_OVERRIDE is set to isolate the compile to just those
# two files in that directory and not get anything implicit from
# surrounding directories which aren't jdk 6 compatible.
# Because we are targeting jdk 6, but the surrounding source code is jdk 7. Ugh.
# These two files should be moved out to a build tool!
$(eval $(call SetupJavaCompilation,BUILD_BREAKITERATOR,\
SETUP:=GENERATE_OLDBYTECODE,\
SRC:=$(TEXT_SRCDIR),\
JAVAC_SOURCE_PATH_UGLY_OVERRIDE:=$(TEXT_SRCDIR)/$(TEXT_PKG),\
INCLUDES:=$(TEXT_PKG),\
INCLUDE_FILES:=$(TEXT_SOURCES),\
BIN:=$(BREAK_ITERATOR_CLASSES)))
# Generate data resource files.
# input
UNICODEDATA = $(JDK_TOPDIR)/make/tools/UnicodeData/UnicodeData.txt
# output
DATA_PKG_DIR = $(JDK_OUTPUTDIR)/newclasses/sun/text/resources
BIFILES = $(DATA_PKG_DIR)/CharacterBreakIteratorData \
$(DATA_PKG_DIR)/WordBreakIteratorData \
$(DATA_PKG_DIR)/LineBreakIteratorData \
$(DATA_PKG_DIR)/SentenceBreakIteratorData
BIFILES_TH = $(DATA_PKG_DIR)/WordBreakIteratorData_th \
$(DATA_PKG_DIR)/LineBreakIteratorData_th
$(BIFILES): $(BREAK_ITERATOR_DIR)/_the.bifiles
$(BREAK_ITERATOR_DIR)/_the.bifiles: JAVA_FLAGS += -Xbootclasspath/p:$(BREAK_ITERATOR_CLASSES)
$(BREAK_ITERATOR_DIR)/_the.bifiles: $(BUILD_TOOLS) $(UNICODEDATA) $(BUILD_BREAKITERATOR)
$(ECHO) "Generating BreakIteratorData"
$(MKDIR) -p $(DATA_PKG_DIR)
rm -f $(BIFILES)
$(TOOL_GENERATEBREAKITERATORDATA) \
-o $(DATA_PKG_DIR) \
-spec $(UNICODEDATA)
touch $@
$(BIFILES_TH): $(BREAK_ITERATOR_DIR)/_the.bifiles_th
$(BREAK_ITERATOR_DIR)/_the.bifiles_th: JAVA_FLAGS += -Xbootclasspath/p:$(BREAK_ITERATOR_CLASSES)
$(BREAK_ITERATOR_DIR)/_the.bifiles_th: $(BUILD_TOOLS) $(UNICODEDATA) $(BUILD_BREAKITERATOR)
$(ECHO) "Generating BreakIteratorData_th"
$(MKDIR) -p $(DATA_PKG_DIR)
rm -f $(BIFILES_TH)
$(TOOL_GENERATEBREAKITERATORDATA) \
-o $(DATA_PKG_DIR) \
-spec $(UNICODEDATA) \
-language th
touch $@
BREAK_ITERATOR += $(BIFILES) $(BIFILES_TH)

View File

@ -0,0 +1,95 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include RMICompile.gmk
CLASSES_DIR := $(JDK_OUTPUTDIR)/classes
# Depend on files in newclasses for now to avoid bad dependency handling caused by
# copy always updating timestamps in classes.
NEWCLASSES_DIR := $(JDK_OUTPUTDIR)/newclasses
# Generate classes into separate dir for now. Can't drop in same dir as JavaCompilation
# macros as that will mess up recompile deps.
STUB_CLASSES_DIR := $(JDK_OUTPUTDIR)/newrmicclasses
RMIC_GENSRC_DIR := $(JDK_OUTPUTDIR)/gendocsrc_rmic
GENCLASSES :=
##########################################################################################
#
# Generate RMI stubs
#
$(eval $(call SetupRMICompilation,RMI_12,\
CLASSES:=sun.rmi.server.Activation$$$$ActivationSystemImpl\
java.rmi.activation.ActivationGroup\
com.sun.jndi.rmi.registry.ReferenceWrapper,\
CLASSES_DIR:=$(NEWCLASSES_DIR),\
STUB_CLASSES_DIR:=$(STUB_CLASSES_DIR),\
RUN_V12:=true))
GENCLASSES += $(RMI_12)
$(eval $(call SetupRMICompilation,RMI_11,\
CLASSES:=sun.rmi.registry.RegistryImpl\
sun.rmi.transport.DGCImpl,\
CLASSES_DIR:=$(NEWCLASSES_DIR),\
STUB_CLASSES_DIR:=$(STUB_CLASSES_DIR),\
RUN_V11:=true))
GENCLASSES += $(RMI_11)
# For RMI/IIOP call rmic a second time with -standardPackage option
# so that *_tie classes are generated in package without the prefix
# org.omg.stub (6375696)
JMAN_RMI_CLASSES:=javax.management.remote.rmi.RMIConnectionImpl\
javax.management.remote.rmi.RMIServerImpl
$(eval $(call SetupRMICompilation,RMI_IIOP,\
CLASSES:=$(JMAN_RMI_CLASSES),\
CLASSES_DIR:=$(NEWCLASSES_DIR),\
STUB_CLASSES_DIR:=$(STUB_CLASSES_DIR),\
RUN_V12:=true,\
RUN_IIOP:=true,\
RUN_IIOP_STDPKG:=true))
GENCLASSES += $(RMI_IIOP)
# Keep generated RMI/JRMP Stub source files and copy them to RMIC_GENSRC_DIR
# so that javadoc can include them in the API (4997471)
$(eval $(call SetupRMICompilation,RMI_SRC,\
CLASSES:=$(JMAN_RMI_CLASSES),\
CLASSES_DIR:=$(NEWCLASSES_DIR),\
STUB_CLASSES_DIR:=$(RMIC_GENSRC_DIR),\
RUN_V12:=true,\
KEEP_GENERATED:=true))
GENCLASSES += $(filter %.java,$(RMI_SRC))
##########################################################################################
all: $(GENCLASSES)
$(FIND) $(RMIC_GENSRC_DIR) -name "*.class" $(FIND_DELETE)
$(CP) -rp $(STUB_CLASSES_DIR)/* $(CLASSES_DIR)
.PHONY: all

View File

@ -0,0 +1,49 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
# We need the tools.
include Tools.gmk
# Now include all the rules that generate data resources.
# These are written directly into newclasses dir.
include GendataBreakIterator.gmk
GENDATA += $(BREAK_ITERATOR)
##########################################################################################
$(GENDATA) : $(BUILD_TOOLS)
all: $(GENDATA)
.PHONY: all

View File

@ -0,0 +1,68 @@
#
# Copyright (c) 2011, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include NativeCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
# We need the tools.
include Tools.gmk
# Now include all the rules that generate Java sources.
# The Java sources are written into the gensrc_.... directories.
include GensrcProperties.gmk
GENSRC += $(GENSRC_PROPERTIES)
include GensrcLocaleDataMetaInfo.gmk
GENSRC += $(GENSRC_LOCALEDATAMETAINFO)
include GensrcCharacterData.gmk
GENSRC += $(GENSRC_CHARACTERDATA)
include GensrcJDWP.gmk
GENSRC += $(GENSRC_JDWP)
include GensrcMisc.gmk
GENSRC += $(GENSRC_MISC)
$(GENSRC) : $(BUILD_TOOLS)
all: $(GENSRC)
$(MKDIR) -p $(JDK_OUTPUTDIR)/gensrc
(cd $(JDK_OUTPUTDIR) && \
chmod -R u+rw gensrc && \
cp -rp gensrc_characterdata/* gensrc && \
cp -rp gensrc_properties/* gensrc && \
cp -rp gensrc_localedatametainfo/* gensrc && \
cp -rp gensrc_jdwp/* gensrc && \
cp -rp gensrc_misc/* gensrc)
.PHONY: all

View File

@ -0,0 +1,65 @@
#
# Copyright (c) 2011, 2012, 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.
#
#
# Rules to create $(JDK_OUTPUTDIR)/gensrc_characterdata/sun/lang/CharacterData*.java
#
GENSRC_CHARACTERDATA:=
CHARACTERDATA = $(JDK_TOPDIR)/make/tools/GenerateCharacter
UNICODEDATA = $(JDK_TOPDIR)/make/tools/UnicodeData
define SetupCharacterData
$(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/$1.java : $(CHARACTERDATA)/$1.java.template $(BUILD_TOOLS)
mkdir -p $$(@D)
echo Generating $1.java
$(TOOL_GENERATECHARACTER) $2 \
-template $(CHARACTERDATA)/$1.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/$1.java -string \
-usecharforbyte $3
GENSRC_CHARACTERDATA += $(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/$1.java
endef
$(eval $(call SetupCharacterData,CharacterDataLatin1,,-latin1 8))
$(eval $(call SetupCharacterData,CharacterData00,-plane 0,11 4 1))
$(eval $(call SetupCharacterData,CharacterData01,-plane 1,11 4 1))
$(eval $(call SetupCharacterData,CharacterData02,-plane 2,11 4 1))
$(eval $(call SetupCharacterData,CharacterData0E,-plane 14,11 4 1))
# Copy two Java files that need no preprocessing.
$(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/%.java : $(CHARACTERDATA)/%.java.template
$(MKDIR) -p $(@D)
echo Generating $(@F)
$(CP) -f $< $@
GENSRC_CHARACTERDATA += $(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/CharacterDataUndefined.java \
$(JDK_OUTPUTDIR)/gensrc_characterdata/java/lang/CharacterDataPrivateUse.java
$(GENSRC_CHARACTERDATA) : $(BUILD_TOOLS)

View File

@ -0,0 +1,38 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Translate the Java debugger wire protocol (jdwp.spec) file into a JDWP.java file
# and a JDWPCommands.h C-header file.
$(JDK_OUTPUTDIR)/gensrc_jdwp_headers/JDWPCommands.h : $(JDK_TOPDIR)/makefiles/jpda/jdwp/jdwp.spec
$(JDK_OUTPUTDIR)/gensrc_jdwp/com/sun/tools/jdi/JDWP.java : $(JDK_TOPDIR)/makefiles/jpda/jdwp/jdwp.spec
mkdir -p $(@D)
mkdir -p $(JDK_OUTPUTDIR)/gensrc_jdwp_headers
$(ECHO) Creating JDWP.java and JDWPCommands.h from jdwp.spec
$(TOOL_JDWPGEN) $< -jdi $@ -include $(JDK_OUTPUTDIR)/gensrc_jdwp_headers/JDWPCommands.h
GENSRC_JDWP:= $(JDK_OUTPUTDIR)/gensrc_jdwp/com/sun/tools/jdi/JDWP.java \
$(JDK_OUTPUTDIR)/gensrc_jdwp_headers/JDWPCommands.h

View File

@ -0,0 +1,93 @@
#
# Copyright (c) 2011, 2012, 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.
#
# Scan for all locale resources and extract for which locales there exists
# resources. Then put this meta information about exiting (supported?) locales
# into LocaleDataMetaInfo.java
# First go look for all locale files
LOCALE_FILES:=$(shell $(FIND) $(JDK_TOPDIR)/src/share/classes \
-name "FormatData_*.java" -o -name "FormatData_*.properties" -o \
-name "CollationData_*.java" -o -name "CollationData_*.properties" -o \
-name "TimeZoneNames_*.java" -o -name "TimeZoneNames_*.properties" -o \
-name "LocaleNames_*.java" -o -name "LocaleNames_*.properties" -o \
-name "CurrencyNames_*.java" -o -name "CurrencyNames_*.properties" -o \
-name "CalendarData_*.java" -o -name "CalendarData_*.properties")
# Then translate the locale files into for example: FormatData_sv
LOCALE_RESOURCES:=$(sort $(subst .properties,,$(subst .java,,$(notdir $(LOCALE_FILES)))))
# Include the list of resources found during the previous compile.
-include $(JDK_OUTPUTDIR)/gensrc_localedatametainfo/_the.locale_resources
MISSING_RESOURCES:=$(filter-out $(LOCALE_RESOURCES),$(PREV_LOCALE_RESOURCES))
NEW_RESOURCES:=$(filter-out $(PREV_LOCALE_RESOURCES),$(LOCALE_RESOURCES))
ifneq (,$(MISSING_RESOURCES)$(NEW_RESOURCES))
# There is a difference in the number of supported resources. Trigger a regeneration.
$(shell $(RM) $(JDK_OUTPUTDIR)/gensrc_localedatametainfo/sun/util/LocaleDataMetaInfo.java)
endif
# The non-euro zone locales have to be separated from the euro-zone locales.
NON_EURO_LOCALES:=ar% hi% iw% ja% ko% th% vi% zh%
# This macro creates a sed expression that substitues for example:
# #FormatData_EuroLocales# with: be be_BY bg bg_BG ca ca_ES... and some more.
CAPTURE_LOCALE='s/$$(HASH)$1_$2EuroLocales$$(HASH)/ $$($3 $(NON_EURO_LOCALES),$$(filter-out $1,$$(subst $1_,,$$(filter $1_%,$(LOCALE_RESOURCES)))))/g'
SED_ARGS:=-e 's|$(HASH)warn This file is preprocessed before being compiled|// -- This file was mechanically generated: Do not edit! -- //|g'
#sun.text.resources.FormatData
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,FormatData,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,FormatData,Non,filter))
#sun.text.resources.CollationData
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CollationData,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CollationData,Non,filter))
#sun.util.resources.TimeZoneNames
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,TimeZoneNames,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,TimeZoneNames,Non,filter))
#sun.util.resources.LocaleNames
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,LocaleNames,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,LocaleNames,Non,filter))
#sun.util.resources.CurrencyNames
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CurrencyNames,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CurrencyNames,Non,filter))
#sun.util.resources.CalendarData
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CalendarData,,filter-out))
$(eval SED_ARGS+=-e $(call CAPTURE_LOCALE,CalendarData,Non,filter))
$(JDK_OUTPUTDIR)/gensrc_localedatametainfo/sun/util/LocaleDataMetaInfo.java: \
$(JDK_TOPDIR)/src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java.template
mkdir -p $(@D)
$(ECHO) Creating sun/util/LocaleDataMetaInfo.java from $(words $(LOCALE_RESOURCES)) found resources.
$(PRINTF) "PREV_LOCALE_RESOURCES:=$(LOCALE_RESOURCES)" > $(JDK_OUTPUTDIR)/gensrc_localedatametainfo/_the.locale_resources
$(SED) $(SED_ARGS) $(JDK_TOPDIR)/src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java.template \
> $(JDK_OUTPUTDIR)/gensrc_localedatametainfo/sun/util/LocaleDataMetaInfo.java
GENSRC_LOCALEDATAMETAINFO:=$(JDK_OUTPUTDIR)/gensrc_localedatametainfo/sun/util/LocaleDataMetaInfo.java

View File

@ -0,0 +1,74 @@
#
# Copyright (c) 2011, 2012, 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.
#
##########################################################################################
# Install the launcher name, release version string, full version
# string and the runtime name into the Version.java file.
# To be printed by java -version
$(JDK_OUTPUTDIR)/gensrc_misc/sun/misc/Version.java: \
$(JDK_TOPDIR)/src/share/classes/sun/misc/Version.java.template
$(MKDIR) -p $(@D)
echo Generating sun/misc/Version.java
$(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \
-e 's/@@java_version@@/$(RELEASE)/g' \
-e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \
-e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \
$< > $@
GENSRC_MISC += $(JDK_OUTPUTDIR)/gensrc_misc/sun/misc/Version.java
##########################################################################################
# Version file for jconsole
$(JDK_OUTPUTDIR)/gensrc_misc/sun/tools/jconsole/Version.java: \
$(JDK_TOPDIR)/src/share/classes/sun/tools/jconsole/Version.java.template
$(MKDIR) -p $(@D)
echo Generating sun/tools/jconsole/Version.java
$(SED) -e 's/@@jconsole_version@@/$(FULL_VERSION)/g' $< > $@
GENSRC_MISC += $(JDK_OUTPUTDIR)/gensrc_misc/sun/tools/jconsole/Version.java
##########################################################################################
ifeq ($(HOST_OS_API),posix)
UPSUFFIX:=$(PLATFORM)
ifeq ($(PLATFORM),macosx)
UPSUFFIX:=bsd
endif
# UNIXProcess.java is different for solaris and linux. We need to copy
# the correct UNIXProcess.java over to $(JDK_OUTPUTDIR)/gensrc/java/lang/.
$(JDK_OUTPUTDIR)/gensrc_misc/java/lang/UNIXProcess.java : \
$(JDK_TOPDIR)/src/solaris/classes/java/lang/UNIXProcess.java.$(UPSUFFIX)
$(MKDIR) -p $(@D)
echo Copying UNIXProcess.java.$(PLATFORM) to java/lang/UNIXProcess.java
$(CP) $< $@
$(CHMOD) u+rw $@
GENSRC_MISC += $(JDK_OUTPUTDIR)/gensrc_misc/java/lang/UNIXProcess.java
endif
##########################################################################################

View File

@ -0,0 +1,272 @@
#
# Copyright (c) 2011, 2012, 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.
#
# All .properties files to be compiled are appended to this variable.
ALL_COMPILED_PROPSOURCES:=
# All generated .java files from compilation are appended to this variable.
ALL_COMPILED_PROPJAVAS:=
# The (very long) command line for compilation, stored in a file, prior to use.
COMPILE_PROPCMDLINE:=
# All .properties files to be cleaned are appended to this variable.
ALL_CLEANED_PROPSOURCES:=
# All generated cleaned .properties files from cleaning are appended to this variable.
ALL_CLEANED_PROPOUTPUT:=
# The (very long) command line for cleaning, stored in a file, prior to use.
CLEAN_PROPCMDLINE:=
define add_properties_to_compile
# $1 is the name of the properties group
# $2 is the files belonging to this group
# $3 is the super class for the generated java file.
# $4 is a from pattern for translating stripped name from source to target
# $5 is the to pattern replacing $3 in the target
# Strip away prefix and suffix,
# leaving for example: sun/util/resources/CurrencyNames_sv
$1_PROPPATHS:=$$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes/%.properties,%,\
$$(patsubst $(JDK_TOPDIR)/src/share/classes/%.properties,%,$2))
# Apply optional name transformation, example: hz_TW -> hz_HK
$(if $4,$1_PROPPATHS:=$$(patsubst $4,$5,$$($1_PROPPATHS)))
# Accumulate all found properties files.
ALL_COMPILED_PROPSOURCES+=$2
# Generate the list of to be created java files.
ALL_COMPILED_PROPJAVAS+=$$(patsubst %,$(JDK_OUTPUTDIR)/gensrc_properties/%.java,$$($1_PROPPATHS))
# Now generate a sequence of "-compile ...CurrencyNames_sv.properties ...CurrencyNames_sv.java ListResourceBundle"
# suitable to be fed into the CompileProperties command.
COMPILE_PROPCMDLINE+=$$(subst _SPACE_,$(SPACE),$$(join $$(addprefix -compile_SPACE_,$2), \
$$(addsuffix _SPACE_$(strip $3),\
$$(addprefix _SPACE_$(JDK_OUTPUTDIR)/gensrc_properties/,\
$$(addsuffix .java,$$($1_PROPPATHS))))))
endef
define add_properties_to_clean
# $1 is the name of the properties group
# $2 is the files belonging to this group
# $3 is a from pattern for translating stripped name from source to target
# $4 is the to pattern replacing $3 in the target
# $5 optional name of extra directory to put properties files in (ex: resources)
# Strip away prefix and suffix,
# leaving for example: sun/util/resources/CurrencyNames_sv
$1_PROPPATHS:=$$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_HOST_OS_API)/classes/%.properties,%,\
$$(patsubst $(JDK_TOPDIR)/src/share/classes/%.properties,%,$2))
# Apply optional name transformation, example: hz_TW -> hz_HK
$(if $3,$1_PROPPATHS:=$$(patsubst $3,$4,$$($1_PROPPATHS)))
# Accumulate all found properties files.
ALL_CLEANED_PROPSOURCES+=$2
# Generate the list of to be created java files.
$1_PROPOUTPUT:=$$(patsubst %,$(JDK_OUTPUTDIR)/newclasses/%.properties,$$($1_PROPPATHS))
# If the properties target file isn't in a "resources" dir, add one.
ifneq ($5,)
$1_PROPOUTPUT:=$$(foreach p,$$($1_PROPOUTPUT), $$(dir $$p)$5/$$(notdir $$p))
endif
ALL_CLEANED_PROPOUTPUT+=$$($1_PROPOUTPUT)
# Now generate a sequence of "-clean ...[src]...CurrencyNames_sv.properties ...[build]...CurrencyNames_sv.properties"
# suitable to be fed into the StripProperties command.
CLEAN_PROPCMDLINE+=$$(subst _SPACE_,$(SPACE),$$(join $$(addprefix -clean_SPACE_,$2), \
$$(addprefix _SPACE_,$$($1_PROPOUTPUT))))
endef
# Some packages contain pregenerated java files instead of properties files.
# But unfortunately not all properties should be converted, some should be
# copied....argggghhh.
# For example:
# sun/applet/resources
# sun/misc/resources
# sun/text/resources
# sun/tools/jconsole/resources
# sun/tools/native2ascii/resources
# sun/util/resources
# Some packages have properties that need to be converted to java source files.
#com/sun/accessibility/internal/resources
$(eval $(call add_properties_to_compile,COM_SUN_ACCESSIBILITY,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/accessibility/internal/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,COM_SUN_ACCESSIBILITY_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/accessibility/internal/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
#com/sun/imageio/plugins/common
#com/sun/java/swing/plaf/gtk/resources
#com/sun/java/swing/plaf/motif/resources
#com/sun/java/swing/plaf/windows/resources
#com/sun/java/util/jar/pack
$(eval $(call add_properties_to_clean,JNDI_COSNAMING,\
$(JDK_TOPDIR)/src/share/classes/com/sun/java/util/jar/pack/intrinsic.properties))
#com/sun/jndi/cosnaming
$(eval $(call add_properties_to_clean,JNDI_COSNAMING,\
$(JDK_TOPDIR)/src/share/classes/com/sun/jndi/cosnaming/jndiprovider.properties))
#com/sun/jndi/ldap
$(eval $(call add_properties_to_clean,JNDI_COSNAMING,\
$(JDK_TOPDIR)/src/share/classes/com/sun/jndi/ldap/jndiprovider.properties))
#com/sun/org/apache/xml/internal/security/resource
#FIXME: The "xmlsecurity*.properties" pattern is not ideal; we might want to find
#a better way to select the properties files that are needed.
$(eval $(call add_properties_to_clean,XML_SECURITY,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/org/apache/xml/internal/security/resource -name "xmlsecurity*.properties")))
#com/sun/rowset
$(eval $(call add_properties_to_clean,COM_SUN_ROWSET,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/rowset -name "*.properties")))
$(eval $(call add_properties_to_clean,COM_SUN_ROWSET_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/rowset -name "*zh_TW.properties"),\
%zh_TW,%zh_HK))
#com/sun/servicetag/resources
#com/sun/swing/internal/plaf/basic/resources
#com/sun/swing/internal/plaf/metal/resources
#com/sun/swing/internal/plaf/synth/resources
#com/sun/tools/jdi/resources
$(eval $(call add_properties_to_compile,COM_SUN_TOOLS_JDI,\
$(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/tools/jdi/resources -name "*.properties"),\
ListResourceBundle))
#com/sun/tools/script/shell
#java/util
#javax/sql/rowset
#sun/awt/resources
$(eval $(call add_properties_to_compile,SUN_AWT,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/awt/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,SUN_AWT_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/awt/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
#sun/launcher/resources
$(eval $(call add_properties_to_compile,SUN_LAUNCHER,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/launcher/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,SUN_LAUNCHER_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/launcher/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
#sun/management/resources
#sun/print
#sun/print/resources
$(eval $(call add_properties_to_compile,SUN_PRINT,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/print/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,SUN_PRINT_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/print/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
#sun/rmi/registry/resources
$(eval $(call add_properties_to_clean,SUN_RMI_REGISTRY,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/registry/resources -name "*.properties")))
$(eval $(call add_properties_to_clean,SUN_RMI_REGISTRY_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/registry/resources -name "*zh_TW.properties"),\
%zh_TW,%zh_HK))
#sun/rmi/rmic/resources
$(eval $(call add_properties_to_clean,SUN_RMI_RMIC,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/rmic/resources -name "*.properties")))
#sun/rmi/server/resources
$(eval $(call add_properties_to_clean,SUN_RMI_SERVER,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/server/resources -name "*.properties")))
$(eval $(call add_properties_to_clean,SUN_RMI_SERVER_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/server/resources -name "*zh_TW.properties"),\
%zh_TW,%zh_HK))
# sun/tools/jar/resources
$(eval $(call add_properties_to_compile,SUN_TOOLS_JAR,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/jar/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,SUN_TOOLS_JAR_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/jar/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
#sun/tools/javac/resources
# It's unclear if the other localized property files here are supposed to be copied or not
# but the old build system didn't copy them.
$(eval $(call add_properties_to_clean,SUN_TOOLS_SERIALVER,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/javac/resources -name "javac.properties")))
#sun/tools/serialver
$(eval $(call add_properties_to_clean,SUN_TOOLS_SERIALVER,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/serialver -name "*.properties"),,,resources))
#sun/util/logging/resources
$(eval $(call add_properties_to_compile,SUN_UTIL_LOGGING,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/logging/resources -name "*.properties"),\
ListResourceBundle))
$(eval $(call add_properties_to_compile,SUN_UTIL_LOGGING_HK,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/logging/resources -name "*.properties"),\
ListResourceBundle,%zh_TW,%zh_HK))
# sun/util/resources
$(eval $(call add_properties_to_compile,SUN_UTIL,\
$(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/resources -name "*.properties"),\
LocaleNamesBundle))
# Now setup the rule for the generation of the resource bundles.
$(JDK_OUTPUTDIR)/gensrc_properties/_the.compiled_properties : $(ALL_COMPILED_PROPSOURCES) $(BUILD_TOOLS)
$(RM) -rf $(JDK_OUTPUTDIR)/gensrc_properties/*
# Generate all output directories in advance since the build tool does not do that...
$(MKDIR) -p $(sort $(dir $(ALL_COMPILED_PROPJAVAS)))
echo Compiling $(words $(ALL_COMPILED_PROPSOURCES)) properties into resource bundles
$(call ListPathsSafely,COMPILE_PROPCMDLINE,\n, >> $(JDK_OUTPUTDIR)/gensrc_properties/_the.cmdline)
$(TOOL_COMPILEPROPERTIES) -quiet @$(JDK_OUTPUTDIR)/gensrc_properties/_the.cmdline
touch $@
# Now setup the rule for the generation of the cleaned properties.
# FIXME: We currently don't handle removed properties incrementally.
$(JDK_OUTPUTDIR)/newclasses/_the.cleaned_properties : $(ALL_CLEANED_PROPSOURCES) $(BUILD_TOOLS)
$(RM) -f $(JDK_OUTPUTDIR)/newclasses/_the.cleaned_properties.cmdline
# Generate all output directories in advance since the build tool does not do that...
$(MKDIR) -p $(sort $(dir $(ALL_CLEANED_PROPOUTPUT)))
echo Copying and cleaning $(words $(ALL_CLEANED_PROPSOURCES)) properties
$(call ListPathsSafely,CLEAN_PROPCMDLINE,\n, >> $(JDK_OUTPUTDIR)/newclasses/_the.cleaned_properties.cmdline)
$(TOOL_STRIPPROPERTIES) @$(JDK_OUTPUTDIR)/newclasses/_the.cleaned_properties.cmdline
touch $@
$(ALL_COMPILED_PROPJAVAS) : $(JDK_OUTPUTDIR)/gensrc_properties/_the.compiled_properties
$(ALL_CLEANED_PROPOUTPUT) : $(JDK_OUTPUTDIR)/newclasses/_the.cleaned_properties
# Some zh_HK resources are just copied of zh_TW
$(JDK_OUTPUTDIR)/gensrc_properties/%_zh_HK.java: $(JDK_TOPDIR)/src/share/classes/%_zh_TW.java
$(MKDIR) -p $(@D)
$(CAT) $< | $(SED) -e '/class/s/_zh_TW/_zh_HK/' > $@
ZH_HK_JAVA:= sun/applet/resources/MsgAppletViewer_zh_HK.java \
sun/misc/resources/Messages_zh_HK.java \
sun/security/util/AuthResources_zh_HK.java
ZH_HK_JAVA_FILES:=$(addprefix $(JDK_OUTPUTDIR)/gensrc_properties/,$(ZH_HK_JAVA))
GENSRC_PROPERTIES:=$(ALL_COMPILED_PROPJAVAS) $(ALL_CLEANED_PROPOUTPUT) $(ZH_HK_JAVA_FILES)

74
jdk/makefiles/Images.gmk Normal file
View File

@ -0,0 +1,74 @@
#
# Copyright (c) 2011, 2012, 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.
#
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include Setup.gmk
default: $(IMAGES_OUTPUTDIR)/_the.images
include Tools.gmk
JARS:=
##########################################################################################
JCONSOLE_JAR_DEPS := \
$(shell $(FIND) $(JDK_OUTPUTDIR)/newclasses/sun/tools/jconsole/ -name "_the.package") \
$(shell $(FIND) $(JDK_OUTPUTDIR)/newclasses/com/sun/tools/jconsole/ -name "_the.package")
$(eval $(call SetupArchive,BUILD_JCONSOLE_JAR,$(JCONSOLE_JAR_DEPS),\
SRCS:=$(JDK_OUTPUTDIR)/newclasses,\
SUFFIXES:=.class .gif .png,\
INCLUDES:=sun/tools/jconsole com/sun/tools/jconsole,\
JARMAIN:=sun.tools.jconsole.JConsole,\
JAR:=$(JDK_OUTPUTDIR)/lib/jconsole.jar,\
SKIP_METAINF:=true))
JARS+=$(JDK_OUTPUTDIR)/lib/jconsole.jar
##########################################################################################
# Need to define BUILDDIR for Release.gmk to work
BUILDDIR=$(JDK_TOPDIR)/makefiles
include common/Defs.gmk
include common/Release.gmk
# A rudimentary attempt at band-aiding the dependency tracking.
DEPS:= $(shell $(FIND) $(JDK_OUTPUTDIR)/newclasses -name "*.class" -type f) \
$(shell $(FIND) $(JDK_OUTPUTDIR)/bin -type f) \
$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f)
$(IMAGES_OUTPUTDIR)/_the.images : $(DEPS) $(JARS)
$(MKDIR) -p $(@D)
# Restart this makefile, ugly, but since double colon (::) rules
# have been used in Release.gmk, it is impossible to craft on
# dependencies on these. I.e. -do-not-use- :: rules!!!!!
# Repeat after me: -do-not-use- :: rules!!!!!
$(MAKE) -j1 -f Images.gmk $(IMAGES_MAKE_ARGS) images
$(TOUCH) $@
.PHONY: default

View File

@ -0,0 +1,57 @@
#
# Copyright (c) 2011, 2012, 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.
#
include $(SPEC)
include MakeBase.gmk
all: $(JDK_OUTPUTDIR)/_the.legacy_make
DEPS:= $(shell $(FIND) $(JDK_TOPDIR)/makefiles/java -type f) \
$(shell $(FIND) $(JDK_TOPDIR)/makefiles/javax -type f) \
$(shell $(FIND) $(JDK_TOPDIR)/makefiles/sun -type f) \
$(shell $(FIND) $(JDK_TOPDIR)/makefiles/com -type f) \
$(shell $(FIND) $(JDK_TOPDIR)/makefiles/apple -type f)
$(JDK_OUTPUTDIR)/_the.legacy_make: $(DEPS)
(echo Building single threaded Java subdir && \
$(MAKE) -j1 -C java all && \
(if test "$(PLATFORM)" = macosx; then \
echo Building single threaded Apple subdir && \
$(MAKE) -j1 -C apple all; \
fi) && \
echo Building single threaded javax subdir && \
$(MAKE) -j1 -C javax all && \
echo Building single threaded sun subdir && \
$(MAKE) -j1 -C sun all && \
echo Building single threaded com subdir && \
$(MAKE) -j1 -C com all && \
if [ -z "$(OPENJDK)" ]; then \
echo Building single threaded altclasses subdir && \
$(MAKE) -j1 -C altclasses all; \
fi && \
touch $@)
.PHONY: all

92
jdk/makefiles/Makefile Normal file
View File

@ -0,0 +1,92 @@
#
# Copyright (c) 1995, 2012, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include NativeCompilation.gmk
# Setup the java compilers for the JDK build.
include Setup.gmk
# Setup the build tools.
include Tools.gmk
all: $(BUILD_TOOLS)
+make -f GenerateJavaSources.gmk
# Drop back to the old makefiles for
# packages/libs that have not yet been converted.
+make -f LegacyMakefiles.gmk
# Ok, now gensrc is fully populated.
+make -f GenerateData.gmk
+make -f CompileJavaClasses.gmk
# The classes have been built, now generate
# classes that have other sources.
+make -f GenerateClasses.gmk
# The classes are now built and
# any javah files have now been generated.
+make -f CompileNativeLibraries.gmk
# Finally compile the launchers.
+make -f CompileLaunchers.gmk
# Now we have a complete jdk, which you can run.
# It is not yet wrapped up as an installed image.
# The demos are compiled against this jdk.
ifndef NO_DEMOS
+make -f CompileDemos.gmk
endif
# Now copy the sample sources into the jdk.
ifndef NO_SAMPLES
+make -f CopySamples.gmk
endif
# Create the final jdk and jre images, to be wrapped up
# into packages, or instealled.
images: all
+make $(IMAGES_MAKE_ARGS) -f Images.gmk
BINARIES:=$(shell if test -d $(IMAGES_OUTPUTDIR)/j2sdk-image/bin; then cd $(IMAGES_OUTPUTDIR)/j2sdk-image/bin && $(LS) ; fi)
INSTALLDIR:=openjdk-$(RELEASE)
# Install the jdk image, in a very crude way. Not taking into
# account, how to install properly on macosx or windows etc.
install: images
echo Installing jdk image into $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
echo and creating $(words $(BINARIES)) links from $(INSTALL_PREFIX)/bin into the jdk.
$(MKDIR) -p $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
$(RM) -r $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)/*
$(CP) -rp $(IMAGES_OUTPUTDIR)/j2sdk-image/* $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
$(RM) $(addprefix $(INSTALL_PREFIX)/bin/,$(BINARIES))
$(foreach b,$(BINARIES),$(LN) -s $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)/bin/$b $(INSTALL_PREFIX)/bin/$b &&) true
# Create the deb,rpm,tgz,zip, packages.
packages: images
echo Creating packages...well, in the future.
$(MKDIR) -p $(OUTPUT_ROOT)/packages
.PHONY: all install

View File

@ -0,0 +1,31 @@
BUILD,RUNTIME 5.8 Sparc 109147-24 x86 109148-24 REQ "Linker patch"
BUILD,RUNTIME 5.8 Sparc 108652-66 x86 108653-55 REQ "Xserver patch"
BUILD,RUNTIME 5.8 Sparc 108940-52 x86 108941-52 REQ "Motif 2.1 patch"
BUILD,RUNTIME 5.8 Sparc 108989-02 x86 108990-02 REQ "Accounting patch"
BUILD,RUNTIME 5.8 Sparc none x86 111307-04 REQ "boot.bin, bootconf.exe, bootenv.rc and nbp patch"
BUILD,RUNTIME 5.8 Sparc 111310-01 x86 111311-01 REQ "libhcpagent.so.l patch"
BUILD,RUNTIME 5.8 Sparc 112396-02 x86 112397-02 REQ "fgrep patch"
BUILD,RUNTIME 5.8 Sparc 108987-13 x86 108988-13 REQ "patchadd, patchrm patch"
BUILD,RUNTIME 5.8 Sparc 111111-03 x86 111112-03 REQ "nawk patch"
BUILD,RUNTIME 5.8 Sparc 108528-20 x86 108529-20 REQ "Kernel update"
BUILD,RUNTIME 5.8 Sparc 108993-18 x86 none REQ "LDAP2 Patch"
BUILD,RUNTIME 5.8 Sparc none x86 110400-01 REQ "RBAC Feature patch"
BUILD,RUNTIME 5.8 Sparc none x86 111024-02 REQ "/kernel/fs/mntfs patch"
BUILD,RUNTIME 5.8 Sparc none x86 108994-18 REQ "LDAP2 patch"
BUILD,RUNTIME 5.8 Sparc 109147-23 x86 109148-23 REQ "linker patch"
BUILD,RUNTIME 5.8 Sparc 111308-03 x86 111309-03 REQ "Performance for apps using memory alloc"
RUNTIME 5.8 Sparc 112003-03 x86 none REQ "Fontset patch for sparcv9"
RUNTIME 5.8 Sparc 108921-16 x86 108922-16 REQ "CDE patch"
RUNTIME 5.8 Sparc 108773-18 x86 108774-18 REQ "X input method patch"
RUNTIME 5.8 Sparc 110386-03 x86 none REQ "RBAC Feature Patch"
RUNTIME 5.8 Sparc 111023-02 x86 none REQ "/kernel/fs/mntfs and /kernel/fs/sparcv9/mntfs patch"
RUNTIME 5.8 Sparc 112472-01 x86 112473-01 OPT "Font2DTest2 patch"
RUNTIME 5.8 Sparc 112438-01 x86 112439-01 REQ "/kernel/drv/random patch"
COMPILER 5.8 Sparc 109505-06 x86 109502-03 REQ "For C 5.0, C++ 5.0"
COMPILER 5.8 Sparc 109513-05 x86 109514-03 REQ "For Forte Development 6 C compiler"
COMPILER 5.8 Sparc 109508-03 x86 109509-03 REQ "For Forte Development 6 update 1 C++ compiler"
COMPILER 5.8 Sparc 109510-03 x86 109511-03 REQ "For Forte 6.1 Debugger"
COMPILER 5.8 Sparc 109516-02 x86 109517-02 REQ "For Forte 6.1 Performance Analyzer"
COMPILER 5.8 Sparc 110480-01 x86 110481-01 REQ "For Forte TeamWare"

77
jdk/makefiles/Setup.gmk Normal file
View File

@ -0,0 +1,77 @@
#
# Copyright (c) 2011, 2012, 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.
#
JAVAC_JARS ?= "-Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar" -jar $(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar
JAVAH_JARS ?= "-Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javah.jar" -jar $(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javah.jar
DISABLE_WARNINGS:=-Xlint:all,-deprecation,-unchecked,-rawtypes,-cast,-serial,-dep-ann,-static,-fallthrough,-try,-varargs,-empty,-finally
# The generate old bytecode javac setup uses the new compiler to compile for the
# boot jdk to generate tools that need to be run with the boot jdk.
# Thus we force the target bytecode to 6.
$(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
FLAGS:=-source 7 -target 7 -bootclasspath $(BOOT_RTJAR) $(DISABLE_WARNINGS),\
SERVER_DIR:=$(JAVAC_SERVERS),\
SERVER_JVM:=$(SERVER_JAVA),\
MODE:=$(JAVAC_USE_MODE),\
USE_DEPS:=$(JAVAC_USE_DEPS)))
# The generate new bytecode javac setup uses the new compiler to compile for the
# new jdk. This new bytecode might only be possible to run using the new jvm.
$(eval $(call SetupJavaCompiler,GENERATE_JDKBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
JAVAH:=$(JAVAH_JARS),\
FLAGS:=-bootclasspath "$(JDK_OUTPUTDIR)/newclasses$(PATH_SEP)$(JDK_OUTPUTDIR)/classes" -Xprefer:source -XDignore.symbol.file=true $(DISABLE_WARNINGS),\
SERVER_DIR:=$(JAVAC_SERVERS),\
SERVER_JVM:=$(SERVER_JAVA),\
MODE:=$(JAVAC_USE_MODE),\
USE_DEPS:=$(JAVAC_USE_DEPS)))
# After the jdk is built, we want to build demos using only the recently
# generated jdk classes and nothing else, no jdk source, etc etc.
# I.e. the rt.jar, but since rt.jar has not yet been generated
# (it will be in "make images") therefore we use classes instead.
$(eval $(call SetupJavaCompiler,GENERATE_USINGJDKBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
FLAGS:= -Xbootclasspath:$(JDK_OUTPUTDIR)/classes $(DISABLE_WARNINGS),\
SERVER_DIR:=$(JAVAC_SERVERS),\
SERVER_JVM:=$(SERVER_JAVA),\
MODE:=$(JAVAC_USE_MODE),\
USE_DEPS:=$(JAVAC_USE_DEPS)))
# A temporary solution to work around the fact that Matrix3D.java
# exists in several applets. The javacserver does not like to be
# fed the same class twice. Thus we compile one applet outside of the
# javacserver.
$(eval $(call SetupJavaCompiler,GENERATE_USINGJDKBYTECODE_NOSERV,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
FLAGS:= -Xbootclasspath:$(JDK_OUTPUTDIR)/classes $(DISABLE_WARNINGS),\
MODE:=SINGLE_THREADED_BATCH,\
USE_DEPS:=FALSE))

114
jdk/makefiles/Tools.gmk Normal file
View File

@ -0,0 +1,114 @@
#
# Copyright (c) 2011, 2012, 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.
#
ifeq (,$(BUILD_TOOLS))
$(eval $(call SetupJavaCompilation,BUILD_TOOLS,\
SETUP:=GENERATE_OLDBYTECODE,\
SRC:=$(JDK_TOPDIR)/make/tools/src,\
BIN:=$(JDK_OUTPUTDIR)/btclasses))
endif
ifndef DISABLE_NIMBUS
$(JDK_OUTPUTDIR)/btclasses/build/tools/generatenimbus/resources/%.template : \
$(JDK_TOPDIR)/src/share/classes/javax/swing/plaf/nimbus/%.template
mkdir -p $(@D)
cp $< $@
BUILD_TOOLS += $(foreach i,$(wildcard $(JDK_TOPDIR)/src/share/classes/javax/swing/plaf/nimbus/*.template),$(JDK_OUTPUTDIR)/btclasses/build/tools/generatenimbus/resources/$(notdir $i))
endif
# Add a checksum ("jsum") to the end of a text file. Prevents trivial tampering with class lists.
TOOL_ADDJSUM=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.addjsum.AddJsum
# The buildmetaindex tool creates a meta-index to make core class loaders lazier.
TOOL_BUILDMETAINDEX=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.buildmetaindex.BuildMetaIndex
# The comment checker is not currently used. Should it be removed or added to javac?
TOOL_COMMENTCHECKER=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.commentchecker.CommentChecker
TOOL_COMPILEFONTCONFIG=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.compilefontconfig.CompileFontConfig
TOOL_COMPILEPROPERTIES=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.compileproperties.CompileProperties
TOOL_STRIPPROPERTIES=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.stripproperties.StripProperties
TOOL_JARREORDER=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.jarreorder.JarReorder
TOOL_GENERATECHARACTER=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.generatecharacter.GenerateCharacter
TOOL_CHARACTERNAME=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.generatecharacter.CharacterName
TOOL_DIRDIFF=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.dirdiff.DirDiff
TOOL_DTDBUILDER=$(JAVA) -Ddtd_home=$(JDK_TOPDIR)/make/tools/dtdbuilder/dtds \
-cp $(JDK_OUTPUTDIR)/btclasses build.tools.dtdbuilder.DTDBuilder
TOOL_GENERATEBREAKITERATORDATA=$(JAVA) \
-cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.generatebreakiteratordata.GenerateBreakIteratorData
TOOL_GENERATECURRENCYDATA=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.generatecurrencydata.GenerateCurrencyData
TOOL_HASHER=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.hasher.Hasher
# Jarsplit used in jdk/makefiles/common/Release.gmk
TOOL_JARSPLIT=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.jarsplit.JarSplit
TOOL_JAVAZIC=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.javazic.Main
# TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml
# and nbproject/project.properties in the same dir. Needs to be looked at.
TOOL_JDWPGEN=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses build.tools.jdwpgen.Main
# TODO: Lots of files in jdk/make/tools/CharsetMapping dir
TOOL_CHARSETMAPPING=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.charsetmapping.Main
TOOL_SPP=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses build.tools.spp.Spp
# TODO: Only referenced in jdk/make/tools/sharing/README.txt. Find out what it means.
TOOL_MAKECLASSLIST=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.makeclasslist.MakeClasslist
# Nimbus is used somewhere in the swing build.
TOOL_GENERATENIMBUS=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.generatenimbus.Generator

View File

@ -0,0 +1,84 @@
#
# Copyright (c) 2010, 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 building alternate runtime classes (not used by default)
#
BUILDDIR = ..
PRODUCT = altclasses
include $(BUILDDIR)/common/Defs.gmk
# Root of alternate class sources
ALTCLASSES_SRCDIR = $(CLOSED_SRC)/share/altclasses
# Alternate runtime classes
ALTRT_JAR_FILE = $(LIBDIR)/alt-rt.jar
ALTRT_JAR_SOURCE_FILE = $(TEMPDIR)/alt-rt.jarsrclist
ALTRT_JAR_SOURCES = $(wildcard $(ALTCLASSES_SRCDIR)/java/*/*.java)
# Use a special file suffix for the file that holds the source list
.SUFFIXES: .jarsrclist
# Build rules
all build:
@if [ -d $(ALTCLASSES_SRCDIR) ] ; then \
$(MAKE) $(ALTRT_JAR_FILE); \
fi
# Source list file creation
$(ALTRT_JAR_SOURCE_FILE): $(ALTRT_JAR_SOURCES) FRC
$(prep-target)
$(ECHO) $(ALTRT_JAR_SOURCES) > $@
clean clobber::
$(RM) $(ALTRT_JAR_FILE) $(ALTRT_JAR_SOURCE_FILE)
$(RM) -r $(ALTRT_JAR_SOURCE_FILE).classes
include $(BUILDDIR)/common/Classes.gmk
# Pattern rule to turn a source list file into a jar file
$(LIBDIR)/%.jar : $(TEMPDIR)/%.jarsrclist
$(prep-target)
$(RM) -r $(<).classes
$(MKDIR) -p $(<).classes
$(JAVAC_CMD) -implicit:none -d $(<).classes @$<
$(BOOT_JAR_CMD) cf $@ -C $(<).classes . $(BOOT_JAR_JFLAGS)
# Force target
FRC:
# Non file targets
.PHONY: all build clean clobber

View File

@ -0,0 +1,39 @@
#
# Copyright (c) 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 building com/apple
#
BUILDDIR = ..
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = applescript
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,71 @@
#
# Copyright (c) 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.
#
BUILDDIR = ../..
PACKAGE = apple.applescript
LIBRARY = AppleScriptEngine
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# Files
#
AUTO_FILES_JAVA_DIRS = apple/applescript
FILES_objc = \
$(TARGDIR)AppleScriptEngine.m \
$(TARGDIR)AppleScriptExecutionContext.m \
$(TARGDIR)AS_NS_ConversionUtils.m \
$(TARGDIR)NS_Java_ConversionUtils.m
FILES_export = \
apple/applescript/AppleScriptEngine.java \
apple/applescript/AppleScriptEngineFactory.java
#
# Rules
#
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
#
# Extra rules
#
#
# Add to ambient vpath to get files in a subdirectory
#
vpath %.m $(call NativeSrcDirList,,native/apple/applescript)
CPPFLAGS += \
-I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders
OTHER_LDLIBS = \
-framework Cocoa \
-framework Carbon \
-framework JavaNativeFoundation

View File

@ -0,0 +1,44 @@
#
# Copyright (c) 1997, 2010, 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 building all of java
#
BUILDDIR = ..
PRODUCT = com
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = sun oracle
ifeq ($(PLATFORM), macosx)
SUBDIRS += apple
endif
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,39 @@
#
# Copyright (c) 1997, 2010, 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 building com/apple
#
BUILDDIR = ../..
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = osx osxui
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,91 @@
#
# 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.
#
BUILDDIR = ../../..
PACKAGE = com.apple.osx
LIBRARY = osx
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# Files
#
AUTO_FILES_JAVA_DIRS = apple/launcher apple/security com/apple/concurrent com/apple/eio java/util/prefs
FILES_objc += \
$(TARGDIR)Dispatch.m \
$(TARGDIR)CFileManager.m \
$(TARGDIR)KeystoreImpl.m \
$(TARGDIR)JavaAppLauncher.m \
$(TARGDIR)MacOSXPreferencesFile.m \
$(TARGDIR)SCDynamicStoreConfig.m
FILES_export += \
com/apple/concurrent/LibDispatchNative.java \
com/apple/eio/FileManager.java \
apple/security/KeychainStore.java \
apple/launcher/JavaAppLauncher.java \
java/util/prefs/MacOSXPreferencesFile.java
# TODO: couldn't figure out how to get resources working
#LOCALE_SET_DEFINITION = jre
#RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES = apple/launcher/appLauncherErrors.properties
#
# Rules
#
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
#
# Extra rules
#
#
# Add to ambient vpath to get files in a subdirectory
#
vpath %.m $(call NativeSrcDirList,,native/com/apple/concurrent)
vpath %.m $(call NativeSrcDirList,,native/com/apple/eio)
vpath %.m $(call NativeSrcDirList,,native/apple/launcher)
vpath %.m $(call NativeSrcDirList,,native/apple/security)
vpath %.m $(call NativeSrcDirList,,native/java/util)
CPPFLAGS += \
$(call NativeSrcDirList,-I,native/com/apple/laf) \
$(call NativeSrcDirList,-I,native/apple/awt) \
$(call NativeSrcDirList,-I,native/sun/awt) \
$(call NativeSrcDirList,-I,native/sun/osxapp)
OTHER_LDLIBS = \
-losxapp \
-framework Cocoa \
-framework ApplicationServices \
-framework JavaNativeFoundation \
-framework JavaRuntimeSupport \
-framework Security \
-framework SystemConfiguration

View File

@ -0,0 +1,106 @@
#
# 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.
#
BUILDDIR = ../../..
PACKAGE = com.apple.osxui
LIBRARY = osxui
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# Files
#
AUTO_FILES_JAVA_DIRS = apple/laf com/apple/laf com/apple/eawt
FILES_objc = \
$(TARGDIR)AquaFileView.m \
$(TARGDIR)AquaLookAndFeel.m \
$(TARGDIR)AquaNativeResources.m \
$(TARGDIR)JRSUIConstantSync.m \
$(TARGDIR)JRSUIController.m \
$(TARGDIR)JRSUIFocus.m \
$(TARGDIR)ScreenPopupFactory.m \
$(TARGDIR)ScreenMenu.m
FILES_export = \
apple/laf/AquaLookAndFeel.java \
apple/laf/JRSUIConstants.java \
apple/laf/JRSUIControl.java \
apple/laf/JRSUIFocus.java \
apple/laf/JRSUIState.java \
apple/laf/JRSUIStateFactory.java \
apple/laf/JRSUIUtils.java \
com/apple/laf/AquaFileView.java \
com/apple/laf/AquaNativeResources.java \
com/apple/laf/ScreenPopupFactory.java \
com/apple/laf/ScreenMenu.java \
com/apple/laf/ScreenMenuBar.java \
com/apple/laf/ScreenMenuBarProvider.java \
com/apple/laf/ScreenMenuItem.java \
com/apple/laf/ScreenMenuItemCheckbox.java \
com/apple/laf/ScreenMenuItemUI.java \
com/apple/laf/ScreenMenuPropertyHandler.java \
com/apple/laf/ScreenMenuPropertyListener.java
#RESOURCE_BUNDLES_COMPILED_PROPERTIES += \
# com/apple/laf/resources/aqua.properties \
# com/apple/laf/resources/aqua_de.properties \
# com/apple/laf/resources/aqua_fr.properties \
# com/apple/laf/resources/aqua_ja.properties
#
# Rules
#
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
#
# Extra rules
#
#
# Add to ambient vpath to get files in a subdirectory
#
vpath %.m $(call NativeSrcDirList,,native/com/apple/laf)
vpath %.m $(call NativeSrcDirList,,native/com/apple/eawt)
CPPFLAGS += \
$(call NativeSrcDirList,-I,native/com/apple/laf) \
$(call NativeSrcDirList,-I,native/apple/awt) \
$(call NativeSrcDirList,-I,native/sun/awt) \
$(call NativeSrcDirList,-I,native/sun/osxapp) \
-I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders
OTHER_LDLIBS = \
-lawt -losxapp \
-lawt_lwawt -L$(LIBDIR) -Xlinker -rpath -Xlinker @loader_path \
-framework Cocoa \
-framework Carbon \
-framework ApplicationServices \
-framework JavaNativeFoundation \
-framework JavaRuntimeSupport

View File

@ -0,0 +1,54 @@
#
# Copyright (c) 2012, 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.
#
BUILDDIR = ../..
PRODUCT = oracle
#SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
#SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
#SUBDIRS_MAKEFLAGS += JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation,-path
include $(BUILDDIR)/common/Defs.gmk
# build com/oracle/security/ucrypto on Solaris platform for non-OpenJDK builds
UCRYPTO =
ifndef OPENJDK
ifeq ($(PLATFORM), solaris)
UCRYPTO = security/ucrypto
endif
endif
JFR =
ifndef OPENJDK
ifndef JAVASE_EMBEDDED
JFR = jfr
endif
endif
SUBDIRS = $(JFR) $(UCRYPTO)
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,73 @@
#
# Copyright (c) 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.
#
BUILDDIR = ../../..
PACKAGE = oracle.jrockit.jfr
LIBRARY = jfr
PRODUCT = oracle
include $(BUILDDIR)/common/Defs.gmk
#
# Use mapfile
#
FILES_m = $(CLOSED_SHARE_SRC)/native/oracle/jfr/mapfile-vers
include $(BUILDDIR)/common/Mapfile-vers.gmk
#
# Files to compile
#
FILES_c = VMJFR.c
AUTO_FILES_JAVA_DIRS = com/oracle/jrockit/jfr oracle/jrockit/jfr
# Find C source files
#
vpath %.c $(CLOSED_SHARE_SRC)/native/oracle/jfr
#
# Library to compile.
#
include $(BUILDDIR)/common/Library.gmk
JVMLIB =
JAVALIB =
OTHER_LDLIBS =
clean clobber::
$(RM) -r $(CLASSDESTDIR)/com/oracle/jrockit/jfr
$(RM) -r $(CLASSDESTDIR)/oracle/jrockit/jfr
# Copy pre-shipped .jfs files
JFR_LIBDIR = $(LIBDIR)/jfr
JFR_SRCDIR = $(CLOSED_SHARE_SRC)/lib/jfr
$(JFR_LIBDIR)/%.jfs: $(JFR_SRCDIR)/%.jfs
$(install-file)
JFS_FILES := $(subst $(JFR_SRCDIR),$(JFR_LIBDIR),$(wildcard $(JFR_SRCDIR)/*.jfs))
all build : $(JFS_FILES)

View File

@ -0,0 +1,30 @@
#
# Copyright (c) 2012, 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.
#
ifndef OPENJDK
FILES_c = \
nativeFunc.c \
nativeCrypto.c
endif

View File

@ -0,0 +1,270 @@
#
# Copyright (c) 2012, 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 building ucrypto.jar and its native libraries.
#
# This file was modified from make/sun/security/pkcs11/Makefile.
#
#
# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Oracle
# JDK builds respectively.)
#
# This Makefile does the "real" build of the Ucrypto provider files.
# Since the sources are unavailable for OpenJDK, this Makefile is only
# useful for JDK.
#
#
# Main Targets (JDK on Solaris):
#
# all The usual, ucrypto.jar plus the native libraries.
# builds and installs the prebuilt/signed jar.
#
# clobber/clean Cleans up the temp directory, ucrypto.jar, the
# native libraries, and the config file from the
# build area
#
# jar Builds, signs and installs ucrypto.jar
# (Can only be done on machines with access to
# the signing keystore)
#
# Other lesser-used Targets (JDK on Solaris):
#
# build-jar Builds ucrypto.jar (no sign/install)
#
# sign Builds/signs ucrypto.jar (no install)
#
# release Builds all targets in preparation
# for workspace integration.
# (Can only be done on machines with access to
# the signing keystore)
#
# install-prebuilt Installs the pre-built jar files
#
# NOTE: None of the above target will update the prebuilt provider binary
# under the closed workspace. To update it, you must explicitly copy the
# binary from either the tmp/signed or lib/ext directory.
#
# This makefile was written to support parallel target execution.
#
BUILDDIR = ../../../..
include $(BUILDDIR)/common/Defs.gmk
ifndef OPENJDK
ifneq ($(PLATFORM), solaris)
all:
else
PACKAGE = com.oracle.security.ucrypto
LIBRARY = j2ucrypto
PRODUCT = oracle
#
# The following is for when we need to do postprocessing
# (signing/obfuscation) against a read-only build. If the OUTPUTDIR
# isn't writable, the build currently crashes out.
#
ifdef ALT_JCE_BUILD_DIR
# =====================================================
# Where to place the output, in case we're building from a read-only
# build area. (e.g. a release engineering build.)
JCE_BUILD_DIR=${ALT_JCE_BUILD_DIR}
IGNORE_WRITABLE_OUTPUTDIR_TEST=true
else
JCE_BUILD_DIR=${TEMPDIR}
endif
JAVAC_MAX_WARNINGS=false
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL=true
#
# C and Java Files
#
include FILES_c.gmk
#
# Subdirectories of these are automatically included.
#
AUTO_FILES_JAVA_DIRS = com/oracle/security/ucrypto
#
# Java files that define native methods
#
FILES_export = \
com/oracle/security/ucrypto/UcryptoProvider.java \
com/oracle/security/ucrypto/NativeCipher.java \
com/oracle/security/ucrypto/NativeDigest.java \
com/oracle/security/ucrypto/NativeKey.java \
com/oracle/security/ucrypto/NativeRSASignature.java \
com/oracle/security/ucrypto/NativeRSACipher.java
#
# Find native code
#
vpath %.c \
$(CLOSED_PLATFORM_SRC)/native/com/oracle/security/ucrypto
#
# Find include files
#
OTHER_INCLUDES += \
-I$(CLOSED_PLATFORM_SRC)/native/com/oracle/security/ucrypto
#
# Rules
#
CLASSDESTDIR = $(TEMPDIR)/classes
JAVAHFLAGS = -bootclasspath \
"$(CLASSDESTDIR)$(CLASSPATH_SEPARATOR)$(CLASSBINDIR)"
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
#
# Libraries to link
#
OTHER_LDLIBS = -ldl
# Default config file
UCRYPTO_CFG_SRC = $(CLOSED_SRC)/share/lib/security/ucrypto-solaris.cfg
UCRYPTO_CFG_BUILD = $(LIBDIR)/security/ucrypto-solaris.cfg
#
# We use a variety of subdirectories in the $(TEMPDIR) depending on what
# part of the build we're doing. Build is initially done in the unsigned
# area and when files are signed, they will be placed in the appropriate area.
#
UNSIGNED_DIR = $(TEMPDIR)/unsigned
#
# Rules
#
all: ucrypto-cfg build-jar install-prebuilt
$(build-warning)
ucrypto-cfg: $(UCRYPTO_CFG_BUILD)
$(UCRYPTO_CFG_BUILD): $(UCRYPTO_CFG_SRC)
$(install-file)
include $(BUILDDIR)/javax/crypto/Defs-jce.gmk
# =====================================================
# Build the unsigned ucrypto.jar file.
#
JAR_DESTFILE = $(EXTDIR)/ucrypto.jar
#
# The ucrypto.jar needs to be in the extension class directory,
# therefore none of its classes can appear in $(CLASSBINDIR).
# Currently no one is using any of the internals, so these files
# should not have been built.
#
#
# Since the -C option to jar is used below, each directory entry must be
# preceded with the appropriate directory to "cd" into.
#
JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
build-jar: $(UNSIGNED_DIR)/ucrypto.jar
#
# Build ucrypto.jar.
#
$(UNSIGNED_DIR)/ucrypto.jar: build
$(prep-target)
$(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
#
# Sign ucrypto.jar
#
SIGNED_DIR = $(JCE_BUILD_DIR)/signed
sign: $(SIGNED_DIR)/ucrypto.jar
ifndef ALT_JCE_BUILD_DIR
$(SIGNED_DIR)/ucrypto.jar: $(UNSIGNED_DIR)/ucrypto.jar
else
#
# We have to remove the build dependency, otherwise, we'll try to rebuild it
# which we can't do on a read-only filesystem.
#
$(SIGNED_DIR)/ucrypto.jar:
@if [ ! -r $(UNSIGNED_DIR)/ucrypto.jar ] ; then \
$(ECHO) "Couldn't find $(UNSIGNED_DIR)/ucrypto.jar"; \
exit 1; \
fi
endif
$(call sign-file, $(UNSIGNED_DIR)/ucrypto.jar)
# =====================================================
# Create the Release Engineering files. Signed builds, etc.
#
release: $(SIGNED_DIR)/ucrypto.jar
$(RM) $(JCE_BUILD_DIR)/release/ucrypto.jar
$(MKDIR) -p $(JCE_BUILD_DIR)/release
$(CP) $(SIGNED_DIR)/ucrypto.jar $(JCE_BUILD_DIR)/release
$(release-warning)
# =====================================================
# Install routines.
#
#
# Install ucrypto.jar, depending on which type is requested.
#
jar: $(JAR_DESTFILE)
$(release-warning)
$(JAR_DESTFILE): $(SIGNED_DIR)/ucrypto.jar
$(install-file)
install-prebuilt:
@$(ECHO) "\n>>>Installing prebuilt OracleUcrypto provider..."
$(RM) $(JAR_DESTFILE)
$(CP) $(PREBUILT_DIR)/ucrypto/ucrypto.jar $(JAR_DESTFILE)
# =====================================================
# Support routines.
#
clobber clean::
$(RM) -r $(JAR_DESTFILE) $(TEMPDIR) $(JCE_BUILD_DIR)
$(RM) -r $(UCRYPTO_CFG_BUILD)
.PHONY: build-jar jar sign release install-prebuilt
endif #ifneq ($(PLATFORM), solaris)
endif #ifndef OPENJDK

View File

@ -0,0 +1,69 @@
#
# Copyright (c) 2012, 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.
#
# Define public interface.
SUNWprivate_1.1 {
global:
JNI_OnLoad;
Java_com_oracle_security_ucrypto_UcryptoProvider_loadLibraries;
Java_com_oracle_security_ucrypto_UcryptoProvider_getMechList;
Java_com_oracle_security_ucrypto_NativeDigest_nativeInit;
Java_com_oracle_security_ucrypto_NativeDigest_nativeUpdate;
Java_com_oracle_security_ucrypto_NativeDigest_nativeDigest;
Java_com_oracle_security_ucrypto_NativeDigest_nativeClone;
Java_com_oracle_security_ucrypto_NativeDigest_nativeFree;
Java_com_oracle_security_ucrypto_NativeCipher_nativeInit;
Java_com_oracle_security_ucrypto_NativeCipher_nativeUpdate;
Java_com_oracle_security_ucrypto_NativeCipher_nativeFinal;
Java_com_oracle_security_ucrypto_NativeKey_nativeFree;
Java_com_oracle_security_ucrypto_NativeKey_00024RSAPrivateCrt_nativeInit;
Java_com_oracle_security_ucrypto_NativeKey_00024RSAPublic_nativeInit;
Java_com_oracle_security_ucrypto_NativeRSASignature_nativeInit;
Java_com_oracle_security_ucrypto_NativeRSASignature_nativeUpdate__JZ_3BII;
Java_com_oracle_security_ucrypto_NativeRSASignature_nativeUpdate__JZJI;
Java_com_oracle_security_ucrypto_NativeRSASignature_nativeFinal;
Java_com_oracle_security_ucrypto_NativeRSACipher_nativeAtomic;
JavaCritical_com_oracle_security_ucrypto_NativeDigest_nativeInit;
JavaCritical_com_oracle_security_ucrypto_NativeDigest_nativeUpdate;
JavaCritical_com_oracle_security_ucrypto_NativeDigest_nativeDigest;
JavaCritical_com_oracle_security_ucrypto_NativeDigest_nativeClone;
JavaCritical_com_oracle_security_ucrypto_NativeDigest_nativeFree;
JavaCritical_com_oracle_security_ucrypto_NativeCipher_nativeInit;
JavaCritical_com_oracle_security_ucrypto_NativeCipher_nativeUpdate;
JavaCritical_com_oracle_security_ucrypto_NativeCipher_nativeFinal;
JavaCritical_com_oracle_security_ucrypto_NativeKey_nativeFree;
JavaCritical_com_oracle_security_ucrypto_NativeKey_00024RSAPrivateCrt_nativeInit;
JavaCritical_com_oracle_security_ucrypto_NativeKey_00024RSAPublic_nativeInit;
JavaCritical_com_oracle_security_ucrypto_NativeRSASignature_nativeInit;
JavaCritical_com_oracle_security_ucrypto_NativeRSASignature_nativeUpdate__JZ_3BII;
JavaCritical_com_oracle_security_ucrypto_NativeRSASignature_nativeUpdate__JZJI;
JavaCritical_com_oracle_security_ucrypto_NativeRSASignature_nativeFinal;
JavaCritical_com_oracle_security_ucrypto_NativeRSACipher_nativeAtomic;
local:
*;
};

View File

@ -0,0 +1,54 @@
#
# 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 building com/sun
#
BUILDDIR = ../..
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
ifndef OPENJDK
ORG_EXISTS := $(call DirExists,$(CLOSED_SRC)/share/classes/sun/org,,)
ifneq ("$(ORG_EXISTS)", "")
SCRIPT_SUBDIR = script
endif
endif
# jarsigner is part of JRE
SUBDIRS =
SUBDIRS_management =
SUBDIRS_enterprise = crypto/provider
SUBDIRS_misc =
# Omit mirror since it's built with the apt tool.
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,275 @@
#
# Copyright (c) 2007, 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 building sunjce_provider.jar.
#
# This file was derived from make/javax/crypto/Makefile.
#
#
# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Sun JDK builds
# respectively.)
#
# JCE builds are very different between OpenJDK and JDK. The OpenJDK JCE
# jar files do not require signing, but those for JDK do. If an unsigned
# jar file is installed into JDK, things will break when the crypto
# routines are called.
#
# This Makefile does the "real" build of the JCE files. There are some
# javac options currently specific to JCE, so we recompile now to make
# sure any implicit compilations didn't use any incorrect flags.
#
# For OpenJDK, the jar files built here are installed directly into the
# OpenJDK.
#
# For JDK, the binaries use pre-built/pre-signed binary files stored in
# the closed workspace that are not shipped in the OpenJDK workspaces.
# We still build the JDK files here to verify the files compile, and in
# preparation for possible signing. Developers working on JCE in JDK
# must sign the JCE files before testing. The JCE signing key is kept
# separate from the JDK workspace to prevent its disclosure.
#
# SPECIAL NOTE TO JCE/JDK developers: The source files must eventually
# be built and signed, and the resulting jar files MUST BE CHECKED INTO
# THE CLOSED PART OF THE WORKSPACE*. This separate step *MUST NOT BE
# FORGOTTEN*, otherwise a bug fixed in the source code will not be
# reflected in the shipped binaries. The "release" target should be
# used to generate the required files.
#
# There are a number of targets to help both JDK/OpenJDK developers.
#
# Main Targets (JDK/OPENJDK):
#
# all/clobber/clean The usual.
# If OpenJDK, installs sunjce_provider.jar.
# If JDK, installs prebuilt
# sunjce_provider.jar.
#
# jar Builds/installs sunjce_provider.jar
# If OpenJDK, does not sign.
# If JDK, tries to sign.
#
# Other lesser-used Targets (JDK/OPENJDK):
#
# build-jar Builds sunjce_provider.jar
# (does not sign/install)
#
# install-jar Alias for "jar" above.
#
# Other targets (JDK only):
#
# sign Alias for sign-jar
# sign-jar Builds/signs sunjce_provider.jar (no install)
#
# release Builds all targets in preparation
# for workspace integration.
#
# install-prebuilt Installs the pre-built jar files
#
# This makefile was written to support parallel target execution.
#
BUILDDIR = ../../../..
PACKAGE = com.sun.crypto.provider
PRODUCT = sun
#
# The following is for when we need to do postprocessing
# (signing) against a read-only build. If the OUTPUTDIR
# isn't writable, the build currently crashes out.
#
ifndef OPENJDK
ifdef ALT_JCE_BUILD_DIR
# =====================================================
# Where to place the output, in case we're building from a read-only
# build area. (e.g. a release engineering build.)
JCE_BUILD_DIR=${ALT_JCE_BUILD_DIR}
IGNORE_WRITABLE_OUTPUTDIR_TEST=true
else
JCE_BUILD_DIR=${TEMPDIR}
endif
endif
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
# Location for the newly built classfiles.
#
CLASSDESTDIR = $(TEMPDIR)/classes
#
# Subdirectories of these are automatically included.
#
AUTO_FILES_JAVA_DIRS = \
com/sun/crypto/provider
include $(BUILDDIR)/common/Classes.gmk
#
# Rules
#
#
# Some licensees do not get the security sources, but we still need to
# be able to build "all" for them. Check here to see if the sources were
# available. If not, then we don't need to continue this rule.
#
ifdef OPENJDK
all: build-jar install-jar
else # OPENJDK
ifeq ($(strip $(FILES_java)),)
all: install-prebuilt
$(no-source-warning)
else # FILES_java available
all: build-jar install-prebuilt
$(build-warning)
endif # $(FILES_java) available
endif # OPENJDK
#
# We use a variety of subdirectories in the $(TEMPDIR) depending on what
# part of the build we're doing. Both OPENJDK/JDK builds are initially
# done in the unsigned area. When files are signed in JDK, they will be
# placed in the appropriate areas.
#
UNSIGNED_DIR = $(TEMPDIR)/unsigned
include $(BUILDDIR)/javax/crypto/Defs-jce.gmk
# =====================================================
# Build the unsigned sunjce_provider.jar file.
#
JAR_DESTFILE = $(EXTDIR)/sunjce_provider.jar
#
# The sunjce_provider.jar needs to be in the extension class directory,
# therefore none of its classes should appear in $(CLASSBINDIR).
# Currently no one is using any of the SunJCE internals, so these files
# should not have been built.
#
#
# Since the -C option to jar is used below, each directory entry must be
# preceded with the appropriate directory to "cd" into.
#
JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
build-jar: $(UNSIGNED_DIR)/sunjce_provider.jar
#
# Build sunjce_provider.jar.
#
$(UNSIGNED_DIR)/sunjce_provider.jar: build $(JCE_MANIFEST_FILE)
$(prep-target)
$(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
ifndef OPENJDK
# =====================================================
# Sign the provider jar file. Not needed for OpenJDK.
#
SIGNED_DIR = $(JCE_BUILD_DIR)/signed
sign: sign-jar
sign-jar: $(SIGNED_DIR)/sunjce_provider.jar
ifndef ALT_JCE_BUILD_DIR
$(SIGNED_DIR)/sunjce_provider.jar: $(UNSIGNED_DIR)/sunjce_provider.jar
else
#
# We have to remove the build dependency, otherwise, we'll try to rebuild it
# which we can't do on a read-only filesystem.
#
$(SIGNED_DIR)/sunjce_provider.jar:
@if [ ! -r $(UNSIGNED_DIR)/sunjce_provider.jar ] ; then \
$(ECHO) "Couldn't find $(UNSIGNED_DIR)/sunjce_provider.jar"; \
exit 1; \
fi
endif
$(call sign-file, $(UNSIGNED_DIR)/sunjce_provider.jar)
# =====================================================
# Create the Release Engineering files. Signed builds, etc.
#
release: $(SIGNED_DIR)/sunjce_provider.jar
$(RM) $(JCE_BUILD_DIR)/release/sunjce_provider.jar
$(MKDIR) -p $(JCE_BUILD_DIR)/release
$(CP) $(SIGNED_DIR)/sunjce_provider.jar $(JCE_BUILD_DIR)/release
$(release-warning)
endif # OPENJDK
# =====================================================
# Install routines.
#
#
# Install sunjce_provider.jar, depending on which type is requested.
#
install-jar jar: $(JAR_DESTFILE)
ifndef OPENJDK
$(release-warning)
endif
ifdef OPENJDK
$(JAR_DESTFILE): $(UNSIGNED_DIR)/sunjce_provider.jar
else
$(JAR_DESTFILE): $(SIGNED_DIR)/sunjce_provider.jar
endif
$(install-file)
ifndef OPENJDK
install-prebuilt:
@$(ECHO) "\n>>>Installing prebuilt SunJCE provider..."
$(RM) $(JAR_DESTFILE)
$(CP) $(PREBUILT_DIR)/jce/sunjce_provider.jar $(JAR_DESTFILE)
endif
# =====================================================
# Support routines.
#
clobber clean::
$(RM) -r $(JAR_DESTFILE) $(TEMPDIR) $(JCE_BUILD_DIR)
.PHONY: build-jar jar install-jar
ifndef OPENJDK
.PHONY: sign sign-jar release install-prebuilt
endif

View File

@ -0,0 +1,67 @@
#
# Copyright (c) 1995, 2005, 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.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
include $(JDK_TOPDIR)/makefiles/common/Rules.gmk
#
# Say you built classes into $(ALT_CLASSBINDIR) and then at the end of
# the build you might want to copy them over to $(ALT_CLASSDESTDIR);
# this rule takes care of that. No one should really set these
# variables except the bootstrap/recompile stage of the java compiler.
#
ifdef ALT_CLASSBINDIR
# By default post-processing is copying. Suppose you want to build
# a jar file then set ALT_CLASSES_DISPOSITION to '../../dest/nameof.jar'
# before including this file.
ifndef ALT_CLASSES_DISPOSITION
ALT_CLASSES_DISPOSITION = copy-classes
endif
build : $(ALT_CLASSES_DISPOSITION)
copy-classes:
ifneq ($(ALT_CLASSBINDIR), $(ALT_CLASSDESTDIR))
@if [ -s $(TEMPDIR)/.classes.list ]; then \
mkdir -p $(ALT_CLASSDESTDIR); \
echo "Copying $(ALT_CLASSBINDIR)..."; \
echo "(cd $(ALT_CLASSBINDIR); tar cf - .) | \
(cd $(ALT_CLASSDESTDIR); tar xf -)"; \
(cd $(ALT_CLASSBINDIR); tar cf - .) | \
(cd $(ALT_CLASSDESTDIR); tar xf -); \
fi
else # ALT_CLASSBINDIR
@if [ -s $(TEMPDIR)/.classes.list ]; then \
echo "Copy source and destination are the same: $(ALT_CLASSBINDIR) -- Copy skipped..."; \
fi
endif # ALT_CLASSBINDIR
.PHONY: copy-classes
endif # ALT_CLASSBINDIR

View File

@ -0,0 +1,100 @@
#
# Copyright (c) 1998, 2010, 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.
#
#
# The cscope.out file is made in the current directory and spans the entire
# source tree.
#
# Things to note:
# 1. We use relative names for cscope.
# 2. We *don't* remove the old cscope.out file, because cscope is smart
# enough to only build what has changed. It can be confused, however,
# if files are renamed or removed, so it may be necessary to manually
# remove cscope.out if a lot of reorganization has occurred.
#
CSDIRS = $(JDK_TOPDIR)/src $(JDK_TOPDIR)/build
CSINCS = $(CSDIRS:%=-I%)
#
# Set CSFLAGS env variable to -b when using fast cscope to build the fast
# (but large) cscope data bases.
#
CSCOPE = cscope-fast
ifeq ($(CSCOPE), cscope-fast)
CSFLAGS = -b
endif
#
# Adding .java files pushes the file count of a full workspace up about 2500
# files, which slows database lookup. Thus allow these files to be added from
# the environment (CSCLASSES=yes).
#
ifdef CSCLASSES
ADDCLASSES= -o -name '*.java'
endif
#
# Adding CClassHeaders also pushes the file count of a full workspace up about
# 200 files (these files also don't exist in a new workspace, and thus will
# cause the recreation of the database as they get created, which might seem
# A little confusing). Thus allow these files to be added from the environment
# (CSHEADERS=yes).
#
ifndef CSHEADERS
RMCCHEADERS= -o -name CClassHeaders
endif
.PRECIOUS: cscope.out
cscope.out: cscope.files FRC
$(CSCOPE) $(CSFLAGS)
#
# What files should we include? A simple rule might be just those files under
# SCM control, however this would miss files we create like the opcodes and
# CClassHeaders. The following attempts to find everything that is *useful*.
# (demo directories contain many .java files
# that probably aren't useful for development, and the pkgarchive may contain
# duplicates of files within the source hierarchy). The ordering of the .raw
# file is an attempt to make cscope display the most relevant files first.
#
cscope.files: FRC
@-$(RM) cscope.files cscope.files.raw
echo "$(CSINCS)" > cscope.files
-find $(CSDIRS) $(SCM_DIRS_prune) -o -type d \( -name '.del-*' -o \
-name '*demo' -o -name pkgarchive $(RMCCHEADERS) \) -prune -o \
-type f \( -name '*.[Ccshlxy]' -o -name '*.il' -o -name '*.cc' -o \
-name 'Makefile*' -o -name GNUmakefile -o -name '*.gmk' -o \
-name '*.cpp' $(ADDCLASSES) \) -print > cscope.files.raw
-egrep -v "\.java|\/build\/" cscope.files.raw >> cscope.files
-fgrep ".java" cscope.files.raw >> cscope.files
-fgrep "/build/" cscope.files.raw >> cscope.files
@-$(RM) cscope.files.raw
cscope.clean:
-$(RM) cscope.files cscope.files.raw cscope.out
FRC:

View File

@ -0,0 +1,76 @@
#
# Copyright (c) 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.
#
#
# Variable definitions for SE Embedded builds. This file should
# not contain rules.
#
ifdef JAVASE_EMBEDDED
# Compress jar files
COMPRESS_JARS = true
# Don't mmap zip files
LIBZIP_CAN_USE_MMAP = false
# Disable ALSA version check
REQUIRED_ALSA_VERSION =
# Compilation settings
OTHER_CPPFLAGS += -DJAVASE_EMBEDDED
# Product naming
PRODUCT_SUFFIX = SE Runtime Environment for Embedded
RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
# Reduced JRE locations
JRE_REDUCED_HEADLESS_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-headless-image
JRE_REDUCED_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-image
# Override on linux to further reduce binary/lib sizes in product build
ifeq ($(PLATFORM), linux)
ifeq ($(VARIANT), OPT)
ifneq ($(NO_STRIP), true)
ifneq ($(DEBUG_BINARIES), true)
POST_STRIP_PROCESS = $(STRIP) --strip-unneeded
endif
endif
endif
endif
# NIO Platform specific source file location
ifdef CROSS_COMPILE_ARCH
NIO_PLATFORM_CLASSES_ROOT_DIR = $(CLOSED_PLATFORM_SRC)/classes/
endif
# For ARM sflt we need to link to a library with improved FP accuracy
# and it must be linked after fdlibm - this places it at the end after libc
# -z muldefs avoids linker errors for duplicate symbols.
ifeq ($(CROSS_COMPILE_ARCH), arm)
EXTRA_LIBS += $(EXT_LIBS_PATH)/sflt_glibc_jdk.a -Xlinker -z -Xlinker muldefs
endif
endif # JAVASE_EMBEDDED

View File

@ -0,0 +1,430 @@
#
# Copyright (c) 1999, 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 to specify compiler flags for programs and libraries
# targeted to Linux. Should not contain any rules.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
# Warning: the following variables are overriden by Defs.gmk. Set
# values will be silently ignored:
# CFLAGS (set $(OTHER_CFLAGS) instead)
# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
# LDFLAGS (set $(OTHER_LDFAGS) instead)
# LDLIBS (set $(EXTRA_LIBS) instead)
# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
# Part of INCREMENTAL_BUILD mechanism.
# Compiler emits things like: path/file.o: file.h
# We want something like: relative_path/file.o relative_path/file.d: file.h
CC_DEPEND = -MM
CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
ifndef PLATFORM_SRC
PLATFORM_SRC = $(BUILDDIR)/../src/solaris
endif # PLATFORM_SRC
# Platform specific closed sources
ifndef OPENJDK
ifndef CLOSED_PLATFORM_SRC
CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/solaris
endif
endif
# platform specific include files
PLATFORM_INCLUDE_NAME = $(PLATFORM)
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
# suffix used for make dependencies files.
DEPEND_SUFFIX = d
# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = a
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX =
# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
# Default OBJCOPY comes from GNU Binutils on Linux:
DEF_OBJCOPY=/usr/bin/objcopy
ifdef CROSS_COMPILE_ARCH
# don't try to generate .debuginfo files when cross compiling
_JUNK_ := $(shell \
echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \
"skipping .debuginfo generation.")
OBJCOPY=
else
OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
ifneq ($(ALT_OBJCOPY),)
_JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
# disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
endif
endif
ifdef LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS
# The setting of OBJCOPY above enables the JDK build to import
# .debuginfo files from the HotSpot build. However, adding FDS
# support to the JDK build will occur in phases so a different
# make variable is used to indicate that a particular library
# supports FDS.
ifeq ($(OBJCOPY),)
_JUNK_ := $(shell \
echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
else
_JUNK_ := $(shell \
echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
# Library stripping policies for .debuginfo configs:
# all_strip - strips everything from the library
# min_strip - strips most stuff from the library; leaves minimum symbols
# no_strip - does not strip the library at all
#
# Oracle security policy requires "all_strip". A waiver was granted on
# 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
#
DEF_STRIP_POLICY="min_strip"
ifeq ($(ALT_STRIP_POLICY),)
STRIP_POLICY=$(DEF_STRIP_POLICY)
else
STRIP_POLICY=$(ALT_STRIP_POLICY)
endif
_JUNK_ := $(shell \
echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
endif
endif
#
# Default optimization
#
ifndef OPTIMIZATION_LEVEL
ifeq ($(PRODUCT), java)
OPTIMIZATION_LEVEL = HIGHER
else
OPTIMIZATION_LEVEL = LOWER
endif
endif
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
CC_OPT/NONE =
CC_OPT/LOWER = -O2
CC_OPT/HIGHER = -O3
CC_OPT/HIGHEST = -O3
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
# For all platforms, do not omit the frame pointer register usage.
# We need this frame pointer to make it easy to walk the stacks.
# This should be the default on X86, but ia64 and amd64 may not have this
# as the default.
CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
CFLAGS_REQUIRED_arm += -fsigned-char -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN
ifeq ($(ZERO_BUILD), true)
CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
ifeq ($(ZERO_ENDIANNESS), little)
CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
endif
LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
else
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
endif
# If this is a --hash-style=gnu system, use --hash-style=both
# The gnu .hash section won't work on some Linux systems like SuSE 10.
_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | $(GREP) -- '--hash-style=gnu')
ifneq ($(_HAS_HASH_STYLE_GNU),)
LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
endif
LDFLAGS_COMMON += $(LDFLAGS_HASH_STYLE)
#
# Selection of warning messages
#
GCC_INHIBIT = -Wno-unused -Wno-parentheses
GCC_STYLE =
GCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
#
# Treat compiler warnings as errors, if warnings not allowed
#
ifeq ($(COMPILER_WARNINGS_FATAL),true)
GCC_WARNINGS += -Werror
endif
#
# Misc compiler options
#
ifneq ($(ARCH),ppc)
CFLAGS_COMMON = -fno-strict-aliasing
endif
PIC_CODE_LARGE = -fPIC
PIC_CODE_SMALL = -fpic
GLOBAL_KPIC = $(PIC_CODE_LARGE)
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
ifeq ($(ARCH), amd64)
CFLAGS_COMMON += -pipe
endif
# Linux 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
DEBUG_FLAG = -g
ifeq ($(FASTDEBUG), true)
ifeq ($(ARCH_DATA_MODEL), 64)
DEBUG_FLAG = -g1
endif
endif
# DEBUG_BINARIES overrides everything, use full -g debug information
ifeq ($(DEBUG_BINARIES), true)
DEBUG_FLAG = -g
CFLAGS_REQUIRED += $(DEBUG_FLAG)
endif
CFLAGS_OPT = $(CC_OPT)
CFLAGS_DBG = $(DEBUG_FLAG)
CFLAGS_COMMON += $(CFLAGS_REQUIRED)
CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
CXXFLAGS_OPT = $(CC_OPT)
CXXFLAGS_DBG = $(DEBUG_FLAG)
CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
ifeq ($(FASTDEBUG), true)
CFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
endif
CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
ifneq ($(ARCH),alpha)
CPP_ARCH_FLAGS += -D$(ARCH)
else
CPP_ARCH_FLAGS += -D_$(ARCH)_
endif
CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -DLINUX $(VERSION_DEFINES) \
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
ifeq ($(ARCH_DATA_MODEL), 64)
CPPFLAGS_COMMON += -D_LP64=1
endif
CPPFLAGS_OPT = -DNDEBUG
CPPFLAGS_DBG = -DDEBUG
ifneq ($(PRODUCT), java)
CPPFLAGS_DBG += -DLOGGING
endif
ifdef LIBRARY
# Libraries need to locate other libraries at runtime, and you can tell
# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
# buried inside the .so. The $ORIGIN says to look relative to where
# the library itself is and it can be followed with relative paths from
# that. By default we always look in $ORIGIN, optionally we add relative
# paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
# On Linux we add a flag -z origin, not sure if this is necessary, but
# doesn't seem to hurt.
# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
# Try: 'readelf -d lib*.so' to see these settings in a library.
#
Z_ORIGIN_FLAG/sparc = -Xlinker -z -Xlinker origin
Z_ORIGIN_FLAG/i586 = -Xlinker -z -Xlinker origin
Z_ORIGIN_FLAG/amd64 = -Xlinker -z -Xlinker origin
Z_ORIGIN_FLAG/ia64 = -Xlinker -z -Xlinker origin
Z_ORIGIN_FLAG/arm =
Z_ORIGIN_FLAG/ppc =
Z_ORIGIN_FLAG/zero = -Xlinker -z -Xlinker origin
LDFLAG_Z_ORIGIN = $(Z_ORIGIN_FLAG/$(ARCH_FAMILY))
LDFLAGS_COMMON += $(LDFLAG_Z_ORIGIN) -Xlinker -rpath -Xlinker \$$ORIGIN
LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=$(LDFLAG_Z_ORIGIN) -Xlinker -rpath -Xlinker \$$ORIGIN/%)
endif
EXTRA_LIBS += -lc
LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
#LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
#
# -L paths for finding and -ljava
#
LDFLAGS_OPT = -Xlinker -O1
LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
#
# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
# statically link libgcc but will print a warning with the flag. We don't
# want the warning, so check gcc version first.
#
ifeq ($(CC_MAJORVER),3)
OTHER_LDFLAGS += -static-libgcc
endif
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
# (See Rules.gmk) The gcc 5 compiler might have an option for this?
AUTOMATIC_PCH_OPTION =
#
# Post Processing of libraries/executables
#
ifeq ($(VARIANT), OPT)
ifneq ($(NO_STRIP), true)
ifneq ($(DEBUG_BINARIES), true)
# Debug 'strip -g' leaves local function Elf symbols (better stack
# traces)
POST_STRIP_PROCESS = $(STRIP) -g
endif
endif
endif
#
# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
#
LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
#
# Support for Quantify.
#
ifdef QUANTIFY
QUANTIFY_CMD = quantify
QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
endif
#
# Path and option to link against the VM, if you have to. Note that
# there are libraries that link against only -ljava, but they do get
# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
# the library itself should not.
#
VM_NAME = server
# First try to link against server, if that does not exist link against client.
JVMLIB = -L$(LIBDIR)/$(LIBARCH)/server -L$(LIBDIR)/$(LIBARCH)/client -ljvm
JAVALIB = -ljava $(JVMLIB)
#
# We want to privatize JVM symbols on Solaris. This is so the user can
# write a function called FindClass and this should not override the
# FindClass that is inside the JVM. At this point in time we are not
# concerned with other JNI libraries because we hope that there will
# not be as many clashes there.
#
PRIVATIZE_JVM_SYMBOLS = false
USE_PTHREADS = true
override ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
override AWT_RUNPATH =
override HAVE_ALTZONE = false
override HAVE_FILIOH = false
override HAVE_GETHRTIME = false
override HAVE_GETHRVTIME = false
override HAVE_SIGIGNORE = true
override LEX_LIBRARY = -lfl
ifeq ($(STATIC_CXX),true)
override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
else
override LIBCXX = -lstdc++
endif
override LIBPOSIX4 =
override LIBSOCKET =
override LIBNSL =
override LIBSCF =
override LIBTHREAD =
override LIBDL = -ldl
override MOOT_PRIORITIES = true
override NO_INTERRUPTIBLE_IO = true
ifeq ($(ARCH), amd64)
override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
else
override OPENWIN_LIB = $(OPENWIN_HOME)/lib
endif
override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
override SUN_CMM_SUBDIR =
override THREADS_FLAG = native
override USE_GNU_M4 = true
override USING_GNU_TAR = true
override WRITE_LIBVERSION = false
# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
# resulting resolved absolute name of the executable in the environment
# variable EXECNAME. That executable name is then used that to locate the
# installation area.
override USE_EXECNAME = true
# If your platform has DPS, it will have Type1 fonts too, in which case
# it is best to enable DPS support until such time as 2D's rasteriser
# can fully handle Type1 fonts in all cases. Default is "yes".
# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
# DPS (Displayable PostScript) is available on Solaris machines
HAVE_DPS = no
#
# Japanese manpages
#
JA_SOURCE_ENCODING = eucJP
JA_TARGET_ENCODINGS = UTF-8
# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
SA_DEBUGINFO_NAME = $(LIB_PREFIX)saproc.debuginfo
# The JDI - Serviceability Agent binding is not currently supported
# on Linux-ia64.
ifeq ($(ARCH), ia64)
INCLUDE_SA = false
else
INCLUDE_SA = true
endif
ifdef CROSS_COMPILE_ARCH
# X11 headers are not under /usr/include
OTHER_CFLAGS += -I$(OPENWIN_HOME)/include
OTHER_CXXFLAGS += -I$(OPENWIN_HOME)/include
OTHER_CPPFLAGS += -I$(OPENWIN_HOME)/include
endif

View File

@ -0,0 +1,402 @@
#
# Copyright (c) 1999, 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 to specify compiler flags for programs and libraries
# targeted to MACOSX. Should not contain any rules.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
# Warning: the following variables are overriden by Defs.gmk. Set
# values will be silently ignored:
# CFLAGS (set $(OTHER_CFLAGS) instead)
# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
# LDFLAGS (set $(OTHER_LDFAGS) instead)
# LDLIBS (set $(EXTRA_LIBS) instead)
# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
# Part of INCREMENTAL_BUILD mechanism.
# Compiler emits things like: path/file.o: file.h
# We want something like: relative_path/file.o relative_path/file.d: file.h
CC_DEPEND = -MM
CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
ifndef PLATFORM_SRC
PLATFORM_SRC = $(BUILDDIR)/../src/solaris
endif # PLATFORM_SRC
PLATFORM_SRC_MACOS = $(BUILDDIR)/../src/macosx
# BSD build pulls its platform sources from the solaris tree.
JAVA_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share
NATIVE_SRCDIR_LIST = src/$(PLATFORM) src/solaris src/share
# Platform specific closed sources
ifndef OPENJDK
ifndef CLOSED_PLATFORM_SRC
CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/solaris
endif
endif
# platform specific include files
PLATFORM_INCLUDE_NAME = $(OS_NAME)
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
# suffix used for make dependencies files.
DEPEND_SUFFIX = d
# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = a
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX =
# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
#
# Default optimization
#
ifndef OPTIMIZATION_LEVEL
ifeq ($(PRODUCT), java)
OPTIMIZATION_LEVEL = HIGHER
else
OPTIMIZATION_LEVEL = LOWER
endif
endif
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
# For macosx use -Os by default, unless -O3 can be proved to be worth the cost, as per policy
# <http://wikis.sun.com/display/OpenJDK/Mac+OS+X+Port+Compilers>
CC_OPT/NONE =
CC_OPT/LOWER = -Os
CC_OPT/HIGHER = -Os
CC_OPT/HIGHEST = -Os
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
# For all platforms, do not omit the frame pointer register usage.
# We need this frame pointer to make it easy to walk the stacks.
# This should be the default on X86, but ia64 and amd64 may not have this
# as the default.
CFLAGS_REQUIRED_amd64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
LDFLAGS_COMMON_amd64 += -m64
CFLAGS_REQUIRED_i586 += -m32 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
LDFLAGS_COMMON_i586 += -m32
CFLAGS_REQUIRED_ia64 += -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
CFLAGS_REQUIRED_arm += -fsigned-char -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN
ifeq ($(ZERO_BUILD), true)
CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
ifeq ($(ZERO_ENDIANNESS), little)
CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
endif
LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
else ifeq ($(ARCH), universal)
CFLAGS_REQUIRED += -arch i386 -arch x86_64 -D_LITTLE_ENDIAN
LDFLAGS_COMMON += -arch i386 -arch x86_64
else
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
endif
# 16-byte stack re-alignment on 32-bit Darwin
CFLAGS_REQUIRED_i586 += -mstackrealign
OTHER_CFLAGS = \
-F/System/Library/Frameworks/JavaVM.framework/Frameworks \
-F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
#
# Selection of warning messages
#
GCC_INHIBIT = -Wno-unused -Wno-parentheses
GCC_STYLE =
GCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
#
# Treat compiler warnings as errors, if warnings not allowed
#
ifeq ($(COMPILER_WARNINGS_FATAL),true)
GCC_WARNINGS += -Werror
endif
#
# Misc compiler options
#
ifneq ($(ARCH),ppc)
CFLAGS_COMMON = -fno-strict-aliasing
endif
PIC_CODE_LARGE = -fPIC
PIC_CODE_SMALL = -fpic
GLOBAL_KPIC = $(PIC_CODE_LARGE)
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
ifeq ($(ARCH), amd64)
CFLAGS_COMMON += -pipe
endif
# BSD 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
DEBUG_FLAG = -g
ifeq ($(FASTDEBUG), true)
ifeq ($(ARCH_DATA_MODEL), 64)
DEBUG_FLAG = -g1
endif
endif
# DEBUG_BINARIES overrides everything, use full -g debug information
ifeq ($(DEBUG_BINARIES), true)
DEBUG_FLAG = -g
CFLAGS_REQUIRED += $(DEBUG_FLAG)
endif
CFLAGS_OPT = $(CC_OPT)
CFLAGS_DBG = $(DEBUG_FLAG)
CFLAGS_COMMON += $(CFLAGS_REQUIRED)
CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
CXXFLAGS_OPT = $(CC_OPT)
CXXFLAGS_DBG = $(DEBUG_FLAG)
CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
ifeq ($(FASTDEBUG), true)
CFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
endif
CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
ifneq ($(ARCH),alpha)
CPP_ARCH_FLAGS += -D$(ARCH)
else
CPP_ARCH_FLAGS += -D_$(ARCH)_
endif
CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -D_ALLBSD_SOURCE $(VERSION_DEFINES) \
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
CPPFLAGS_COMMON += -DMACOSX
ifeq ($(ARCH_DATA_MODEL), 64)
CPPFLAGS_COMMON += -D_LP64=1
endif
CPPFLAGS_OPT = -DNDEBUG
CPPFLAGS_DBG = -DDEBUG
ifneq ($(PRODUCT), java)
CPPFLAGS_DBG += -DLOGGING
endif
# Libraries need to locate other libraries at runtime, and you can tell
# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
# buried inside the .{so,dylib}. The {$ORIGIN,@loader_path/} says to look
# relative to where the library itself is and it can be followed
# with relative paths from that. By default we always look in
# {$ORIGIN,@loader_path/}, optionally we add relative paths if the Makefile
# sets LD_RUNPATH_EXTRAS to those relative paths.
# Except on MacOS X we add a flag -z origin, not sure if this is necessary,
# but doesn't seem to hurt.
# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
# See 'man {dyld,rtld}' for more information.
# Try: 'readelf -d lib*.so' to see these settings in a library.
#
LDFLAGS_COMMON += -Xlinker -rpath -Xlinker @loader_path/.
LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -rpath -Xlinker @loader_path/%)
LDFLAGS_COMMON += -Xlinker -install_name -Xlinker @rpath/$(@F)
#
# -L paths for finding and -ljava
#
LDFLAGS_COMMON += -L$(LIBDIR)
#
# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
# statically link libgcc but will print a warning with the flag. We don't
# want the warning, so check gcc version first.
#
ifeq ($(CC_MAJORVER),3)
OTHER_LDFLAGS += -static-libgcc
endif
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
# (See Rules.gmk) The gcc 5 compiler might have an option for this?
AUTOMATIC_PCH_OPTION =
#
# Post Processing of libraries/executables
#
ifeq ($(VARIANT), OPT)
ifneq ($(NO_STRIP), true)
ifneq ($(DEBUG_BINARIES), true)
# Debug 'strip -S' leaves local function Elf symbols (better stack
# traces)
POST_STRIP_PROCESS = $(STRIP) -S
endif
endif
endif
#
# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
#
LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
#
# Support for Quantify.
#
ifdef QUANTIFY
QUANTIFY_CMD = quantify
QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
endif
# Darwin does not support linker map files.
LDNOMAP=true
#
# Path and option to link against the VM, if you have to. Note that
# there are libraries that link against only -ljava, but they do get
# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
# the library itself should not.
#
VM_NAME = server
JVMLIB = -L$(LIBDIR)/server -L$(LIBDIR)/client -ljvm
JAVALIB = -ljava $(JVMLIB)
#
# We want to privatize JVM symbols on Solaris. This is so the user can
# write a function called FindClass and this should not override the
# FindClass that is inside the JVM. At this point in time we are not
# concerned with other JNI libraries because we hope that there will
# not be as many clashes there.
#
PRIVATIZE_JVM_SYMBOLS = false
USE_PTHREADS = true
override ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
override AWT_RUNPATH =
override HAVE_ALTZONE = false
override HAVE_FILIOH = false
override HAVE_GETHRTIME = false
override HAVE_GETHRVTIME = false
override HAVE_SIGIGNORE = true
override LEX_LIBRARY = -lfl
ifeq ($(STATIC_CXX),true)
override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
else
override LIBCXX = -lstdc++
endif
override LIBPOSIX4 =
override LIBSOCKET =
override LIBNSL =
override LIBTHREAD =
override LIBDL =
override MOOT_PRIORITIES = true
override NO_INTERRUPTIBLE_IO = true
override OPENWIN_HOME = $(X11_PATH)
override OPENWIN_LIB = $(OPENWIN_HOME)/lib
override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
override SUN_CMM_SUBDIR =
override THREADS_FLAG = native
override USE_GNU_M4 = true
override USING_GNU_TAR = true
override WRITE_LIBVERSION = false
ifdef ALT_X11_PATH
X11_PATH = $(ALT_X11_PATH)
else
X11_PATH = /usr/X11R6
endif
ifdef ALT_PACKAGE_PATH
PACKAGE_PATH = $(ALT_PACKAGE_PATH)
else
PACKAGE_PATH = /opt/local
endif
# ALSA
ifdef ALT_ALSA_LIB_PATH
ALSA_LIB_PATH = $(ALT_ALSA_LIB_PATH)
else
ALSA_LIB_PATH = $(PACKAGE_PATH)/lib
endif
ifdef ALT_ALSA_HEADERS_PATH
ALSA_HEADERS_PATH = $(ALT_ALSA_HEADERS_PATH)
else
ALSA_HEADERS_PATH = $(PACKAGE_PATH)/include
endif
# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
# resulting resolved absolute name of the executable in the environment
# variable EXECNAME. That executable name is then used that to locate the
# installation area.
override USE_EXECNAME = true
# If your platform has DPS, it will have Type1 fonts too, in which case
# it is best to enable DPS support until such time as 2D's rasteriser
# can fully handle Type1 fonts in all cases. Default is "yes".
# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
# DPS (Displayable PostScript) is available on Solaris machines
HAVE_DPS = no
SYSTEM_ZLIB = true
#
# Japanese manpages
#
JA_SOURCE_ENCODING = eucJP
JA_TARGET_ENCODINGS = UTF-8
# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
# The JDI - Serviceability Agent binding is not currently supported
# on ia64.
ifeq ($(ARCH), ia64)
INCLUDE_SA = false
else
INCLUDE_SA = true
endif
ifdef CROSS_COMPILE_ARCH
# X11 headers are not under /usr/include
OTHER_CFLAGS += -I$(OPENWIN_HOME)/include
OTHER_CXXFLAGS += -I$(OPENWIN_HOME)/include
OTHER_CPPFLAGS += -I$(OPENWIN_HOME)/include
endif
LIB_LOCATION ?= $(LIBDIR)

View File

@ -0,0 +1,757 @@
#
# 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.
#
#
# Makefile to specify compiler flags for programs and libraries
# targeted to Solaris. Should not contain any rules.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
# Warning: the following variables are overridden by Defs.gmk. Set
# values will be silently ignored:
# CFLAGS (set $(OTHER_CFLAGS) instead)
# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
# LDFLAGS (set $(OTHER_LDFAGS) instead)
# LDLIBS (set $(EXTRA_LIBS) instead)
# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
# LINTFLAGS (set $(OTHER_LINTFLAGS) instead)
#
# Note: CPPFLAGS are used in C and C++ compiles.
#
# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
ifndef PLATFORM_SRC
PLATFORM_SRC = $(BUILDDIR)/../src/solaris
endif # PLATFORM_SRC
# Platform specific closed sources
ifndef OPENJDK
ifndef CLOSED_PLATFORM_SRC
CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/solaris
endif
endif
# platform specific include files
PLATFORM_INCLUDE_NAME = $(PLATFORM)
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
# suffix used for make dependencies files
DEPEND_SUFFIX = d
# suffix used for lint files
LINT_SUFFIX = ln
# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = a
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX =
# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
ifdef ENABLE_FULL_DEBUG_SYMBOLS
# Only check for Full Debug Symbols support on Solaris if it is
# specifically enabled. Hopefully, it can be enabled by default
# once the .debuginfo size issues are worked out.
# Default OBJCOPY comes from the SUNWbinutils package:
DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
# On Solaris AMD64/X64, gobjcopy is not happy and fails:
#
# usr/sfw/bin/gobjcopy --add-gnu-debuglink=<lib>.debuginfo <lib>.so
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
# /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
# /usr/sfw/bin/gobjcopy: libsaproc.debuginfo: Bad value
# BFD: stKPaiop: Not enough room for program headers, try linking with -N
# /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
_JUNK_ := $(shell \
echo >&2 "INFO: $(DEF_OBJCOPY) is not working on Solaris AMD64/X64")
OBJCOPY=
else
OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
ifneq ($(ALT_OBJCOPY),)
_JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
# disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
endif
endif
ifdef LIBRARY_SUPPORTS_FULL_DEBUG_SYMBOLS
# The setting of OBJCOPY above enables the JDK build to import
# .debuginfo files from the HotSpot build. However, adding FDS
# support to the JDK build will occur in phases so a different
# make variable is used to indicate that a particular library
# supports FDS.
ifeq ($(OBJCOPY),)
_JUNK_ := $(shell \
echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
else
_JUNK_ := $(shell \
echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
# Library stripping policies for .debuginfo configs:
# all_strip - strips everything from the library
# min_strip - strips most stuff from the library; leaves minimum symbols
# no_strip - does not strip the library at all
#
# Oracle security policy requires "all_strip". A waiver was granted on
# 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
#
DEF_STRIP_POLICY="min_strip"
ifeq ($(ALT_STRIP_POLICY),)
STRIP_POLICY=$(DEF_STRIP_POLICY)
else
STRIP_POLICY=$(ALT_STRIP_POLICY)
endif
_JUNK_ := $(shell \
echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
endif
endif
endif
#
# Java default optimization (-x04/-O2) etc. Applies to the VM.
#
ifndef OPTIMIZATION_LEVEL
ifeq ($(PRODUCT), java)
OPTIMIZATION_LEVEL = HIGHER
else
OPTIMIZATION_LEVEL = LOWER
endif
endif
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
#
# If -Xa is in CFLAGS_COMMON it will end up ahead of $(CC_OPT) for the
# optimized build, and that ordering of the flags completely freaks
# out cc. Hence, -Xa is instead in each CFLAGS variant.
#
# The more unusual options to the Sun C compiler:
# -v Stricter type checking, more error checking
# (To turn ALL warnings into fatals, use -errwarn=%all)
# -xstrconst Place string literals and constants in read-only area
# (means you can't write on your string literals)
# -xs Force debug information (stabs) into the .so or a.out
# (makes the library/executable debuggable without the
# .o files needing to be around, but at a space cost)
# -g & -O If you add the -g option to the optimized compiles
# you will get better stack retraces, the code is
# still optimized. This includes a space cost too.
# -xc99=%none Do NOT allow for c99 extensions to be used.
# e.g. declarations must precede statements
# -xCC Allow the C++ style of comments in C: //
# Required with many of the source files.
# -mt Assume multi-threaded (important)
#
# The more unusual options to the Sun C compiler:
# +w Print more warnings
# +w2 Maximum warnings
#
#
# Debug flag for C and C++ compiler
#
CFLAGS_DEBUG_OPTION = -g $(CC_OPT/NONE)
CXXFLAGS_DEBUG_OPTION = -g $(CXX_OPT/NONE)
# Turn off -g if we are doing tcov build
ifdef TCOV_BUILD
CFLAGS_DEBUG_OPTION=
CXXFLAGS_DEBUG_OPTION=
endif
# FASTDEBUG: Optimize the -g builds, gives us a faster debug java
# If true adds -O to the debug compiles. This allows for any assert
# tests to remain and debug checking. The resulting code is faster
# but less debuggable. Stack traces are still valid, although only
# approximate line numbers are given. Printing of local variables
# during a debugging session is not possible, but stepping and
# printing of global or static variables should be possible.
# Performance/size of files should be about the same, maybe smaller.
#
ifeq ($(FASTDEBUG), true)
CFLAGS_DEBUG_OPTION = -g $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
CXXFLAGS_DEBUG_OPTION = -g0 $(CXX_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
endif
CFLAGS_COMMON = -L$(OBJDIR)
# Do not allow C99 language features like declarations in code etc.
CFLAGS_COMMON += -xc99=%none
# Allow C++ comments in C code
CFLAGS_COMMON += -xCC
# Show error message tags on errors
CFLAGS_COMMON += -errshort=tags
CXXFLAGS_COMMON += -errtags=yes
# Optimization flags
CFLAGS_OPT = $(CC_OPT)
# Debug version flags
CFLAGS_DBG = $(CFLAGS_DEBUG_OPTION)
# Required C compiler flags
CFLAGS_COMMON += -Xa $(CFLAGS_REQUIRED)
# Maximum warnings all the time
CXXFLAGS_COMMON += +w
CFLAGS_COMMON += -v
# Assume MT behavior all the time (important)
CXXFLAGS_COMMON += -mt
CFLAGS_COMMON += -mt
# Assume no C++ exceptions are used
CXXFLAGS_COMMON += -features=no%except -DCC_NOEX
# For C++, these options tell it to assume nothing about locating libraries
# either at compile time, or at runtime. Use of these options will likely
# require the use of -L and -R options to indicate where libraries will
# be found at compile time (-L) and at runtime (-R).
# The /usr/lib location comes for free, so no need to specify that one.
# Note: C is much simplier and there is no need for these options. This
# is mostly needed to avoid dependencies on libraries in the
# Compiler install area, also see LIBCXX and LIBM.
CXXFLAGS_COMMON += -norunpath -xnolib
#
# Treat compiler warnings as errors, if requested
#
ifeq ($(COMPILER_WARNINGS_FATAL),true)
CFLAGS_COMMON += -errwarn=%all
CXXFLAGS_COMMON += -errwarn=%all
endif
CXXFLAGS_OPT = $(CXX_OPT)
CXXFLAGS_DBG = $(CXXFLAGS_DEBUG_OPTION)
CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
# Add -xstrconst to the library compiles. This forces all string
# literals into the read-only data section, which prevents them from
# being written to and increases the runtime pages shared on the system.
#
ifdef LIBRARY
CFLAGS_COMMON +=-xstrconst
endif
# Source browser database
#
# COMPILE_WITH_SB
# If defined adds -xsb to compiles and creates a
# source browsing database during compilation.
#
ifdef COMPILE_WITH_SB
ifeq ($(LIBRARY), java)
CFLAGS_DBG += -xsb
endif
endif
# Lint Flags:
# -Xa ANSI C plus K&R, favor ANSI rules
# -fd report on old style func defs
# -errchk=structarg report on 64bit struct args by value
# -errchk=longptr64 report on 64bit to 32bit issues (ignores casts)
# -errchk=parentheses report on suggested use of extra parens
# -v suppress unused args
# -x suppress unused externs
# -u suppress extern func/vars used/defined
# -errfmt=simple use one line errors with position info
# $(LINT_XARCH_OPTION) See Compiler-sun.gwk
LINTFLAGS_COMMON = -Xa
LINTFLAGS_COMMON += -fd
LINTFLAGS_COMMON += -errchk=structarg,longptr64,parentheses
LINTFLAGS_COMMON += -v
LINTFLAGS_COMMON += -x
LINTFLAGS_COMMON += -u
LINTFLAGS_COMMON += -errfmt=simple
LINTFLAGS_OPT =
LINTFLAGS_DBG =
# The -W0,-noglobal tells the compiler to NOT generate mangled global
# ELF data symbols for file local static data.
# This can break fix&continue, but we'd rather do the same compilations
# for deliverable bits as we do for non-deliverable bits
# Tell the compilers to never generate globalized names, all the time.
CFLAGS_COMMON += -W0,-noglobal
# If we have a specific arch value to use, add it
CFLAGS_COMMON += $(XARCH_OPTION)
CXXFLAGS_COMMON += $(XARCH_OPTION)
ASFLAGS_COMMON += $(AS_XARCH_OPTION)
EXTRA_LIBS += $(XARCH_OPTION)
LINTFLAGS_COMMON += $(LINT_XARCH_OPTION)
#
# uncomment the following to build with PERTURBALOT set
#
# OTHER_CFLAGS += -DPERTURBALOT
#
CPPFLAGS_COMMON = -D__solaris__ -D$(ARCH_FAMILY)
CPPFLAGS_OPT = -DNDEBUG
CPPFLAGS_DBG = -DDEBUG
ifneq ($(PRODUCT), java)
CPPFLAGS_DBG += -DLOGGING -DDBINFO
endif
ifeq ($(ARCH_FAMILY), i586)
# The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
# Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
# (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
# Note: -Dmacro is the same as #define macro 1
# -Dmacro= is the same as #define macro
#
CPPFLAGS_COMMON += -DcpuIntel -D_LITTLE_ENDIAN= -D$(LIBARCH)
# Turn off a superfluous compiler error message on Intel
CFLAGS_COMMON += -erroff=E_BAD_PRAGMA_PACK_VALUE
endif
# Java memory management is based on memory mapping by default, but a
# system only assuming malloc/free can be built by adding -DUSE_MALLOC
CPPFLAGS_COMMON += -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS
CPPFLAGS_OPT += -DTRIMMED
LDFLAGS_DEFS_OPTION = -z defs
LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
#
# -L paths for finding and -ljava
#
LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
LDFLAGS_OPT =
LDFLAGS_DBG =
#
# We never really want the incremental linker, ever
# The -xildoff option tells Sun's compilers to NOT use incremental linker
#
LDFLAGS_COMMON += -xildoff
ifdef LIBRARY
# Libraries need to locate other libraries at runtime, and you can tell
# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
# buried inside the .so. The $ORIGIN says to look relative to where
# the library itself is and it can be followed with relative paths from
# that. By default we always look in $ORIGIN, optionally we add relative
# paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
# Try: 'dump -Lv lib*.so' to see these settings in a library.
#
LDFLAGS_COMMON += -R\$$ORIGIN
LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-R\$$ORIGIN/%)
endif
EXTRA_LIBS += -lc
# Postprocessing is done on the images directories only
#
ifeq ($(VARIANT), OPT)
ifeq ($(PARTIAL_GPROF), true)
NO_STRIP = true
endif
ifeq ($(GPROF), true)
NO_STRIP = true
endif
ifneq ($(NO_STRIP), true)
# Debug 'strip -x' leaves local function Elf symbols (better stack traces)
POST_STRIP_PROCESS = $(STRIP) -x
endif
endif
POST_MCS_PROCESS=$(MCS) -d -a "JDK $(FULL_VERSION)"
#
# Sun C compiler will take -M and pass it on to ld.
# Usage: ld $(LD_MAPFILE_FLAG) mapfile *.o
#
ifeq ($(CC_VERSION),gcc)
LD_MAPFILE_FLAG = -Xlinker -M -Xlinker
else
LD_MAPFILE_FLAG = -M
endif
#
# Variables globally settable from the make command line (default
# values in brackets):
# GPROF (false)
# Eg: % gnumake GPROF=true
GPROF = false
ifeq ($(GPROF), true)
CFLAGS_COMMON += -DGPROF -xpg
EXTRA_LIBS += -xpg
endif
# PARTIAL_GPROF is to be used ONLY during compilation - it should not
# appear during linking of libraries or programs. It also should
# prevent linking with -z defs to allow a symbol to remain undefined.
#
PARTIAL_GPROF = false
ifeq ($(PARTIAL_GPROF), true)
CFLAGS_GPROF += -xpg
LDFLAGS_DEFS_OPTION = -z nodefs
endif
#
# For a TCOV build we add in the TCOV_OPTION
#
ifdef TCOV_BUILD
TCOV_OPTION = -xprofile=tcov
LDFLAGS_COMMON += $(TCOV_OPTION) -Kpic
CFLAGS_COMMON += $(TCOV_OPTION)
CXXFLAGS_COMMON += $(TCOV_OPTION)
EXTRA_LIBS += $(TCOV_OPTION)
LDNOMAP=true
endif
#
# Solaris only uses native threads.
#
THREADS_FLAG= native
THREADS_DIR= threads
#
# Support for Quantify.
#
ifdef QUANTIFY
QUANTIFY_CMD = quantify
QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
ifdef LIBRARY
CFLAGS_COMMON += -K PIC
endif
endif
#
# Support for Purify.
#
ifdef PURIFY
PURIFY_CMD = /net/suntools.eng/export/tools/sparc/bin/purify
PURIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
LINK_PRE_CMD = $(PURIFY_CMD) $(PURIFY_OPTIONS)
ifdef LIBRARY
CFLAGS_COMMON += -K PIC
endif
endif
#
# Different "levels" of optimization.
#
ifeq ($(CC_VERSION),gcc)
CC_OPT/NONE =
CC_OPT/LOWER = -O2
CC_OPT/HIGHER = -O3
CC_OPT/HIGHEST = -O3
CXX_OPT/NONE =
CXX_OPT/LOWER = -O2
CXX_OPT/HIGHER = -O3
CXX_OPT/HIGHEST = -O3
CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer
CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
# (See Rules.gmk) May need to wait for gcc 5?
AUTOMATIC_PCH_OPTION =
else
# Highest could be -xO5, but indications are that -xO5 should be reserved
# for a per-file use, on sources with known performance impacts.
OPT_LEVEL/LOWER = 2
OPT_LEVEL/HIGHER = 4
OPT_LEVEL/HIGHEST = 4
CC_OPT/NONE =
CC_OPT/LOWER = $(OPT_LEVEL/LOWER:%=-xO%)
CC_OPT/HIGHER = $(OPT_LEVEL/HIGHER:%=-xO%)
CC_OPT/HIGHEST = $(OPT_LEVEL/HIGHEST:%=-xO%)
CXX_OPT/NONE =
CXX_OPT/LOWER = $(OPT_LEVEL/LOWER:%=-xO%)
CXX_OPT/HIGHER = $(OPT_LEVEL/HIGHER:%=-xO%)
CXX_OPT/HIGHEST = $(OPT_LEVEL/HIGHEST:%=-xO%)
# We need stack frames at all times
USE_XKEEPFRAME_OPTION = false
ifeq ($(USE_XKEEPFRAME_OPTION),true)
# Unknown spelling on this option at this time (Maybe in SS13?)
CC_XKEEPFRAME_OPTIONS = -xkeepframe
CXX_XKEEPFRAME_OPTIONS = -xkeepframe
else
# On X86, make sure tail call optimization is off
# The z and y are the tail call optimizations.
ifeq ($(ARCH_FAMILY), i586)
CC_NEWER_THAN_58 := \
$(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
\( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 8 \) )
ifeq ($(CC_NEWER_THAN_58),1)
# Somehow, tail call optimization is creeping in.
# Make sure it is off.
# WARNING: These may cause compiler warnings about duplicate -O options
CC_XKEEPFRAME_OPTIONS += -Wu,-O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
endif
endif
# On i586 we need to tell the code generator to ALWAYS use a
# frame pointer.
ifeq ($(ARCH_FAMILY), i586)
# Note that in 5.7, this is done with -xregs=no%frameptr
ifeq ($(CC_VER), 5.5)
# It's not exactly clear when this optimization kicks in, the
# current assumption is -xO4 or greater and for C++ with
# the -features=no%except option and -xO4 and greater.
# Bottom line is, we ALWAYS want a frame pointer!
CC_XKEEPFRAME_OPTIONS += -Wu,-Z~B
CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B
endif
CC_NEWER_THAN_56 := \
$(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
\( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) )
ifeq ($(CC_NEWER_THAN_56),1)
# Do NOT use frame pointer register as a general purpose opt register
CC_OPT/NONE += -xregs=no%frameptr
CXX_OPT/NONE += -xregs=no%frameptr
CC_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
endif
endif
# Optimizer for sparc needs to be told not to do certain things
# related to frames or save instructions.
ifeq ($(ARCH_FAMILY), sparc)
# Do not use save instructions instead of add instructions
# This was an optimization starting in SC5.0 that made it hard for us to
# find the "save" instruction (which got turned into an "add")
CC_XKEEPFRAME_OPTIONS += -Wc,-Qrm-s
CXX_XKEEPFRAME_OPTIONS += -Qoption cg -Qrm-s
# Don't allow tail call code optimization. Started in SC5.0.
# We don't like code of this form:
# save
# <code>
# call foo
# restore
# because we can't tell if the method will have a stack frame
# and register windows or not.
CC_XKEEPFRAME_OPTIONS += -Wc,-Qiselect-T0
CXX_XKEEPFRAME_OPTIONS += -Qoption cg -Qiselect-T0
endif
endif
# Extra options used with HIGHEST
#
# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
# done with care, there are some assumptions below that need to
# be understood about the use of pointers, and IEEE behavior.
#
# Use non-standard floating point mode (not IEEE 754)
CC_HIGHEST_EXTRAS += -fns
# Do some simplification of floating point arithmetic (not IEEE 754)
CC_HIGHEST_EXTRAS += -fsimple
# Use single precision floating point with 'float'
CC_HIGHEST_EXTRAS += -fsingle
# Assume memory references via basic pointer types do not alias
# (Source with excessing pointer casting and data access with mixed
# pointer types are not recommended)
CC_HIGHEST_EXTRAS += -xalias_level=basic
# Use intrinsic or inline versions for math/std functions
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST_EXTRAS += -xbuiltin=%all
# Loop data dependency optimizations (need -xO3 or higher)
CC_HIGHEST_EXTRAS += -xdepend
# Pointer parameters to functions do not overlap
# (Similar to -xalias_level=basic usage, but less obvious sometimes.
# If you pass in multiple pointers to the same data, do not use this)
CC_HIGHEST_EXTRAS += -xrestrict
# Inline some library routines
# (If you expect perfect errno behavior, do not use this)
CC_HIGHEST_EXTRAS += -xlibmil
# Use optimized math routines
# (If you expect perfect errno behavior, do not use this)
# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
# CC_HIGHEST_EXTRAS += -xlibmopt
ifeq ($(ARCH_FAMILY), sparc)
# Assume at most 8byte alignment, raise SIGBUS on error
### Presents an ABI issue with customer JNI libs?
####CC_HIGHEST_EXTRAS += -xmemalign=8s
# Automatic prefetch instructions, explicit prefetch macros
CC_HIGHEST_EXTRAS += -xprefetch=auto,explicit
# Pick ultra as the chip to optimize to
CC_HIGHEST_EXTRAS += -xchip=ultra
endif
ifeq ($(ARCH), i586)
# Pick pentium as the chip to optimize to
CC_HIGHEST_EXTRAS += -xchip=pentium
endif
ifdef LIBRARY
# The Solaris CBE (Common Build Environment) requires that the use
# of appl registers be disabled when compiling a public library (or
# a library that's loaded by a public library) on sparc.
CFLAGS_REQUIRED_sparc += -xregs=no%appl
CFLAGS_REQUIRED_sparcv9 += -xregs=no%appl
endif
CC_NEWER_THAN_56 := \
$(shell $(EXPR) $(CC_MAJORVER) \> 5 \| \
\( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \> 6 \) )
ifeq ($(CC_NEWER_THAN_56),1)
# Presents an ABI issue with customer JNI libs? We must be able to
# to handle 4byte aligned objects? (rare occurance, but possible?)
CFLAGS_REQUIRED_sparc += -xmemalign=4s
endif
# Just incase someone trys to use the SOS9 compilers
ifeq ($(CC_VER), 5.6)
# We MUST allow data alignment of 4 for sparc (sparcv9 is ok at 8s)
CFLAGS_REQUIRED_sparc += -xmemalign=4s
endif
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
# (See Rules.gmk) The SS11 -xpch=auto* options appear to be broken.
AUTOMATIC_PCH_OPTION =
# Add in keep frame options
CC_OPT/LOWER += $(CC_XKEEPFRAME_OPTIONS)
CC_OPT/HIGHER += $(CC_XKEEPFRAME_OPTIONS)
CC_OPT/HIGHEST += $(CC_XKEEPFRAME_OPTIONS)
CXX_OPT/LOWER += $(CXX_XKEEPFRAME_OPTIONS)
CXX_OPT/HIGHER += $(CXX_XKEEPFRAME_OPTIONS)
CXX_OPT/HIGHEST += $(CXX_XKEEPFRAME_OPTIONS)
# Add in highest optimization settings
CC_OPT/HIGHEST += $(CC_HIGHEST_EXTRAS)
CXX_OPT/HIGHEST += $(CC_HIGHEST_EXTRAS)
endif
# Default optimization settings based on level.
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
CXX_OPT = $(CXX_OPT/$(OPTIMIZATION_LEVEL))
# Flags required all the time
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
#
# Path and option to link against the VM, if you have to. Note that
# there are libraries that link against only -ljava, but they do get
# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
# the library itself should not.
#
VM_NAME = server
JVMLIB = -L$(LIBDIR)/$(LIBARCH)/server -L$(LIBDIR)/$(LIBARCH)/client -ljvm
JAVALIB = -ljava $(JVMLIB)
# Part of INCREMENTAL_BUILD mechanism.
# Compiler emits things like: path/file.o: file.h
# We want something like: relative_path/file.o relative_path/file.d: file.h
# In addition on Solaris, any include file starting with / is deleted,
# this gets rid of things like /usr/include files, which never change.
CC_DEPEND = -xM1
CC_DEPEND_FILTER = $(SED) -e '/:[ ]*[/]/d' -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g' | $(SORT) -u
# Location of openwin libraries (do we really need this anymore?)
OPENWIN_HOME = /usr/openwin
OPENWIN_LIB = $(OPENWIN_HOME)/lib$(ISA_DIR)
# Runtime graphics library search paths...
OPENWIN_RUNTIME_LIB = /usr/openwin/lib$(ISA_DIR)
AWT_RUNPATH = -R/usr/dt/lib$(ISA_DIR) -R$(OPENWIN_RUNTIME_LIB)
# C++ Runtime library (libCrun.so), use instead of -lCrun.
# Originally used instead of -lCrun to guarantee use of the system
# .so version and not the .a or .so that came with the compilers.
# With the newer compilers this could probably change back to -lCrun but
# in general this is ok to continue to do.
LIBCXX = /usr/lib$(ISA_DIR)/libCrun.so.1
# JDK now requires Solaris 10, so pick up libm.so.2
LIBM = /usr/lib$(ISA_DIR)/libm.so.2
# Socket library
LIBSOCKET = -lsocket
# Network Services library
LIBNSL = -lnsl
# service configuration facility library
LIBSCF = -lscf
# Dynamic Loading library
LIBDL = -ldl
# GLOBAL_KPIC: If set means all libraries are PIC, position independent code
# EXCEPT for select compiles
# If a .o file is compiled non-PIC then it should be forced
# into the RW data segment with a mapfile option. This is done
# with object files which generated from .s files.
# The -ztext enforces that no relocations remain in the text segment
# so that it remains purely read-only for optimum system performance.
# Some libraries may use a smaller size (13bit -Kpic) on sparc instead of
# (32 bit -KPIC) and will override GLOBAL_KPIC appropriately.
#
PIC_CODE_LARGE = -KPIC
PIC_CODE_SMALL = -Kpic
ifndef TCOV_BUILD
GLOBAL_KPIC = $(PIC_CODE_LARGE)
CXXFLAGS_COMMON += $(GLOBAL_KPIC)
CFLAGS_COMMON += $(GLOBAL_KPIC)
LDFLAGS_COMMON += -ztext
endif # TCOV_BUILD
# If your platform has DPS, it will have Type1 fonts too, in which case
# it is best to enable DPS support until such time as 2D's rasteriser
# can fully handle Type1 fonts in all cases. Default is "yes".
# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
# DPS (Displayable PostScript) is available on Solaris machines
HAVE_DPS = yes
#
# Japanese manpages
#
JA_SOURCE_ENCODING = eucJP
JA_TARGET_ENCODINGS = eucJP UTF-8 PCK
# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
SA_DEBUGINFO_NAME = $(LIB_PREFIX)saproc.debuginfo
INCLUDE_SA=true

View File

@ -0,0 +1,418 @@
#
# Copyright (c) 1999, 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 to specify compiler flags for programs and libraries
# targeted to Windows builds. Should not contain any rules.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -Fo
# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = lib
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX = .bat
# LIB_LOCATION, which for windows identifies where .exe files go, may be
# set by each GNUmakefile. The default is BINDIR.
ifndef LIB_LOCATION
LIB_LOCATION = $(BINDIR)
endif # LIB_LOCATION
ifndef PLATFORM_SRC
PLATFORM_SRC = $(BUILDDIR)/../src/windows
endif # PLATFORM_SRC
# Platform specific closed sources
ifndef OPENJDK
ifndef CLOSED_PLATFORM_SRC
CLOSED_PLATFORM_SRC = $(BUILDDIR)/../src/closed/windows
endif
endif
# for backwards compatability, the old "win32" is used here instead of
# the more proper "windows"
PLATFORM_INCLUDE_NAME = win32
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
# The following DLL's are considered MS runtime libraries and should
# not to be REBASEd, see deploy/make/common/Release.gmk.
# msvcr*.dll: Microsoft runtimes
ifeq ($(COMPILER_VERSION), VS2010)
MSVCRNN_DLL = msvcr100.dll
MSVCPNN_DLL = msvcp100.dll
endif
EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
# C Compiler flag definitions
#
# Default optimization
#
ifndef OPTIMIZATION_LEVEL
ifeq ($(PRODUCT), java)
OPTIMIZATION_LEVEL = HIGHER
else
OPTIMIZATION_LEVEL = LOWER
endif
endif
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
ifeq ($(CC_VERSION),msvc)
# Visual Studio compiler option definitions:
# -O1 Favors reduced size over speed (-Og -Os -Oy -Ob2 -Gs -GF -Gy)
# -O2 Favors speed over reduced size (-Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy)
# -Ob2 More aggressive inlining
# -Og Global optimizations
# -Oi Replace some functions with intrinsic or special forms
# -fp:precise (should be the default)
# Improve floating point calculations (disables some optimizations)
# -Os Favor small code
# -Ot Favor faster code
# -Oy Frame pointer omission
# -G6 Used to be -GB?
# -GF Pool strings in read-only memory
# -Gf Pool strings in read-write memory (the default)
# -Gs Controls stack probess
# -GS Adds buffer overflow checks on stacks (the default)
# -EHsc Enables exception handling
# -Gy Function level linking only
#
CC_OPT/NONE = -Od
CC_OPT/LOWER = -O2
CC_OPT/HIGHER = -O3
CC_OPT/HIGHEST = -O3
ifeq ($(COMPILER_VERSION), VS2010)
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
AUTOMATIC_PCH_OPTION =
GX_OPTION = -EHsc
GZ_OPTION = -RTC1
ifeq ($(ARCH_DATA_MODEL), 32)
CC_OPT/HIGHEST = -O2
CC_OPT/HIGHER = -O1
CC_OPT/LOWER = -O1
else
CC_OPT/HIGHEST = -O2
CC_OPT/HIGHER = -O1
CC_OPT/LOWER = -O1
endif
endif
else # CC_VERSION
# GCC not supported, but left for historical reference...
CC_OPT/NONE =
CC_OPT/LOWER = -O2
CC_OPT/HIGHER = -O2
CC_OPT/HIGHEST = -O3
endif
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
# Select the runtime support library carefully, need to be consistent
#
# Visual Studio Runtime compiler option definitions:
# -MD Use dynamic multi-threaded runtime library
# -MDd Use debug version (don't use, doesn't mix with -MD DLL's)
# -MT Use static multi-threaded runtime library (-ML is going away)
# -MTd Use static debug version (better than -MDd, no runtime issues)
# -D_DEBUG Change use of malloc/free/etc to use special debug ones (-MTd)
#
# NOTE: We also will use /D _STATIC_CPPLIB so we don't need msvcpnn.dll
#
# If MS_RUNTIME_STATIC is requested we may have a problem, it is no longer
# supported by VS2010
ifneq ($(MS_RUNTIME_STATIC),true)
MS_RUNTIME_OPTION=-MD
endif
# The _DEBUG macro option (changes things like malloc to use debug version)
MS_RUNTIME_DEBUG_OPTION=
MS_RC_DEBUG_OPTION=
# Externally set environment variable can force any build to use the debug vers
ifeq ($(MFC_DEBUG), true)
ifeq ($(MS_RUNTIME_STATIC),true)
MS_RUNTIME_OPTION=-MTd
else
# This MS debugging flag forces a dependence on the debug
# version of the runtime library (MSVCR*D.DLL), as does -MDd.
# We cannot re-distribute this debug runtime.
MS_RUNTIME_OPTION=-MDd
endif
MS_RUNTIME_DEBUG_OPTION= -D_DEBUG
MS_RC_DEBUG_OPTION= -d _DEBUG
endif
# Always add _STATIC_CPPLIB definition
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
# Silence the warning about using _STATIC_CPPLIB
ifneq ($(SHOW_ALL_WARNINGS),true)
# Needed with VS2010 to turn off the deprecated warning.
STATIC_CPPLIB_OPTION += /D _DISABLE_DEPRECATE_STATIC_CPPLIB
endif
MS_RUNTIME_OPTION += $(STATIC_CPPLIB_OPTION)
ifeq ($(CC_VERSION),msvc)
# Visual Studio compiler option definitions:
# -Zi Cause *.pdb file to be created, full debug information
# -Z7 Full debug inside the .obj, no .pdb
# -Zd Basic debug, no local variables? In the .obj
# -Zl Don't add runtime library name to obj file?
# -Od Turns off optimization and speeds compilation
# -YX -Fp/.../foobar.pch Use precompiled headers (try someday?)
# -nologo Don't print out startup message
# /D _STATIC_CPPLIB
# Use static link for the C++ runtime (so msvcpnn.dll not needed)
#
CFLAGS_COMMON += -Zi -nologo
CFLAGS_OPT = $(CC_OPT)
CFLAGS_DBG = -Od $(MS_RUNTIME_DEBUG_OPTION)
CFLAGS_VS2010 += -Zc:wchar_t-
# All builds get the same runtime setting
CFLAGS_COMMON += $(MS_RUNTIME_OPTION) $(CFLAGS_$(COMPILER_VERSION))
LDEBUG = /debug
ifeq ($(VTUNE_SUPPORT), true)
OTHER_CFLAGS = -Z7 -Ox
LDEBUG += /pdb:NONE
endif
# VS2010, always need safe exception handlers, not needed on 64bit
ifeq ($(ARCH_DATA_MODEL), 32)
LFLAGS_VS2010 += -SAFESEH
endif
# LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
BASELFLAGS = -nologo /opt:REF /incremental:no
LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION))
LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION))
endif
#
# Preprocessor macro definitions
#
CPPFLAGS_COMMON = -DWIN32 -DIAL -D_LITTLE_ENDIAN
ifeq ($(ARCH), amd64)
CPPFLAGS_COMMON += -D_AMD64_ -Damd64
else
CPPFLAGS_COMMON += -D_X86_ -Dx86
endif
CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN
#
# Output options (use specific filenames to avoid parallel compile errors)
#
CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
#
# Use -wdNNNN to disable warning NNNN.
# C4800 is a warning about bool performance casts (can't make go away)
#
COMPILER_WARNINGS_TO_IGNORE = 4800
CFLAGS_COMMON += $(COMPILER_WARNINGS_TO_IGNORE:%=-wd%)
#
# Treat compiler warnings as errors, if requested
#
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
ifeq ($(COMPILER_WARNINGS_FATAL),true)
CFLAGS_COMMON += -WX
endif
# Turn off some warnings by default, enable them all if asked.
ifneq ($(SHOW_ALL_WARNINGS),true)
# The -D _CRT_SECURE_NO_DEPRECATE turns off security/deprecated warnings on
# the standard C library functions like strcpy.
CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
# The -D _CRT_NONSTDC_NO_DEPRECATE turns off deprecation warnings about using
# non-standard C POSIX functions.
CFLAGS_COMMON += -D _CRT_NONSTDC_NO_DEPRECATE
endif
CPPFLAGS_OPT = -DNDEBUG
CPPFLAGS_DBG = -DDEBUG -DLOGGING
CXXFLAGS_COMMON = $(CFLAGS_COMMON)
CXXFLAGS_OPT = $(CFLAGS_OPT)
CXXFLAGS_DBG = $(CFLAGS_DBG)
ifneq ($(LIBRARY),fdlibm)
EXTRA_LIBS += advapi32.lib
endif
#
# Path and option to link against the VM, if you have to.
#
JVMLIB = $(LIBDIR)/jvm.lib
JAVALIB = $(LIBDIR)/java.lib
ifeq ($(CC_VERSION), msvc)
CC_DEPEND = -FD
CC_DEPEND_FILTER =
else # CC_VERSION
# not supported, but left for historical reference...
CC_DEPEND = -MM
CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)&!g'
endif # CC_VERSION
LIBRARY_SUFFIX = dll
LIB_SUFFIX = lib
# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/bin
SALIB_NAME = $(LIB_PREFIX)sawindbg.$(LIBRARY_SUFFIX)
SAMAP_NAME = $(LIB_PREFIX)sawindbg.map
SAPDB_NAME = $(LIB_PREFIX)sawindbg.pdb
ifeq ($(ARCH), ia64)
# SA will never be supported here.
INCLUDE_SA = false
else
INCLUDE_SA = true
endif
# Settings for the VERSIONINFO tap on windows.
VERSIONINFO_RESOURCE = $(BUILDDIR)/../src/windows/resource/version.rc
ifneq ($(JDK_BUILD_NUMBER),)
COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) | $(SED) -e 's/^b//' -e 's/^0//')
else
COOKED_BUILD_NUMBER = 0
endif
# If the update version contains non-numeric characters, we need
# to massage it into a numeric format.
# We use the following formula:
# JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
#
# Here are some examples:
# 1.5.0 b01 -> 5,0,0,1
# 1.5.0_10 b01 -> 5,0,100,1
# 1.4.2 b01 -> 4,2,0,1
# 1.4.2_02 b01 -> 4,2,20,1
# 1.4.2_02a b01 -> 4,2,21,1
# 1.4.2_02b b01 -> 4,2,22,1
ifdef JDK_UPDATE_VERSION
VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
CAB_CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
CAB_CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
CAB_CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
JDK_UPDATE_META_TAG := U$(MARKETING_NUMBER)
ifeq ($(CAB_CHAR3),)
CAB_CHAR3 := 0
endif
ifeq ($(CAB_CHAR1), 0)
JDK_UPDATE_VER := $(CAB_CHAR2)$(CAB_CHAR3)
else
JDK_UPDATE_VER := $(CAB_CHAR1)$(CAB_CHAR2)$(CAB_CHAR3)
endif
else
JDK_UPDATE_VER := 0
endif
#RC_FLAGS = /l 0x409 /r
#ifeq ($(VARIANT), OPT)
# RC_FLAGS += -d NDEBUG
#else
# RC_FLAGS += $(MS_RC_DEBUG_OPTION)
#endif
# Values for the RC variables defined in RC_FLAGS
#JDK_RC_BUILD_ID = $(FULL_VERSION)
#JDK_RC_COMPANY = $(COMPANY_NAME)
#JDK_RC_COMPONENT = $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) binary
#JDK_RC_VER = \
# $(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
#JDK_RC_COPYRIGHT = Copyright \xA9 $(COPYRIGHT_YEAR)
#JDK_RC_NAME = \
# $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)
#JDK_RC_FVER = \
# $(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
# JDK name required here
#RC_FLAGS += -d "JDK_BUILD_ID=$(JDK_RC_BUILD_ID)" \
# -d "JDK_COMPANY=$(JDK_RC_COMPANY)" \
# -d "JDK_COMPONENT=$(JDK_RC_COMPONENT)" \
# -d "JDK_VER=$(JDK_RC_VER)" \
# -d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
# -d "JDK_NAME=$(JDK_RC_NAME)" \
# -d "JDK_FVER=$(JDK_RC_FVER)"
# Enable 7-Zip LZMA file (de)compression for Java Kernel if it is available
ifeq ($(ARCH_DATA_MODEL), 32)
ifneq ($(KERNEL), off)
# This is a hack to use until 7-Zip (and UPX) bundles can be put
# under /java/devtools.
ifndef DEPLOY_TOPDIR
DEPLOY_TOPDIR=$(JDK_TOPDIR)/../deploy
endif
# Uncomment this block to cause build failure if above assumption false
#DCHK = $(shell if [ ! -d $(DEPLOY_TOPDIR) ] ; then \
# $(ECHO) deploy_not_a_peer_of_j2se ; \
#fi )
#ifeq ($(DCHK), deploy_not_a_peer_of_j2se)
# If a build failure points to control coming here it means
# it means deploy is not in the same directory
# as j2se. Java Kernel can't tolerate that for the time being.
#endif
EC_TMP = $(shell if [ -d $(DEPLOY_TOPDIR)/make/lzma ] ; then \
$(ECHO) true ; \
else \
$(ECHO) false ; \
fi )
ifeq ($(EC_TMP), true)
EXTRA_COMP_INSTALL_PATH = lib\\\\deploy\\\\lzma.dll
# Crazy but true: deploy/make/plugin/jinstall/Makefile.jkernel does
# not include deploy/make/common/Defs-windows.gmk, either directly
# or indirectly. But it does include this file, so redundantly declare
# these variables that are in deploy/make/common/Defs-windows.gmk for
# the sake of the Java Kernel part of the deploy build. Whew!
EXTRA_COMP_LIB_NAME = lzma.dll
EXTRA_COMP_PATH = $(OUTPUTDIR)/tmp/deploy/lzma/win32/obj
EXTRA_COMP_CMD_PATH = $(EXTRA_COMP_PATH)/lzma.exe
EXTRA_COMP_LIB_PATH = $(EXTRA_COMP_PATH)/$(EXTRA_COMP_LIB_NAME)
endif
endif
endif

View File

@ -0,0 +1,577 @@
#
# 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

View File

@ -0,0 +1,415 @@
#
# Copyright (c) 2004, 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.
#
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
# JDK Demo building jar file.
# Some names are defined with LIBRARY inside the Defs.gmk file
LIBRARY=$(DEMONAME)
OBJDIR=$(TEMPDIR)/$(DEMONAME)
# Input:
# DEMONAME - name of the demo
# DEMO_ROOT - path to root of all demo files
# DEMO_DESTDIR - path to final demo destination directory
#
# Optional Input:
# DEMO_SRCDIR - path to source if different from DEMO_ROOT
# DEMO_PSRCDIR - path to additional platform specific source
# DEMO_PKGDIR - sub directory of sources we want
# DEMO_TOPFILES - names of top-level files relative to DEMO_ROOT
# DEMO_MAINCLASS - name of the main class for the jar manifest
# DEMO_NATIVECLASS - name of the class with native methods
# DEMO_DESCRIPTOR - name of service file for jar (relative to DEMO_SRCDIR)
# DEMO_EXTRA_SRCDIR - path to directory that holds extra sources to add
# DEMO_EXTRA_FILES - extra sources relative to DEMO_EXTRA_SRCDIR
# DEMO_OBJECTS - extra native object files needed
# DEMO_MANIFEST_ATTR - extra line to add to the jar manifest file
# Assume the source directory is the root directory if not set
ifndef DEMO_SRCDIR
DEMO_SRCDIR = $(DEMO_ROOT)
endif
ifndef DEMO_PKGDIR
DEMO_PKGDIR = .
endif
# Some demos have special needs
ifneq ($(DEMONAME),agent_util)
DEMO_NEEDS_AGENT_UTIL = $(findstring agent_util,$(DEMO_OBJECTS))
endif
ifneq ($(DEMONAME),java_crw_demo)
DEMO_NEEDS_JAVA_CRW_DEMO = $(findstring java_crw_demo,$(DEMO_OBJECTS))
endif
ifeq ($(DEMONAME),hprof)
DEMO_NEEDS_NPT = true
endif
# Place to hold the build area (kind of a temp area)
DEMO_BUILD_AREA = $(DEMOCLASSDIR)/$(PRODUCT)/$(DEMONAME)
# Destination "src" directory
DEMO_BUILD_SRCDIR = $(DEMO_BUILD_AREA)/src
ifndef DEMO_SKIP_SRCZIP
DEMO_BUILD_SRCZIP = $(DEMO_BUILD_AREA)/src.zip
DEMO_SOURCE_ZIP = $(DEMO_DESTDIR)/src.zip
endif
# Place to hold the jar image we are creating
DEMO_JAR_IMAGE = $(DEMO_BUILD_AREA)/jar_image
# The jar manifest file we will create and use
DEMO_MANIFEST = $(DEMO_BUILD_AREA)/manifest.mf
# The list of source files or options we will supply to javac
DEMO_JAVAC_INPUT = $(DEMO_BUILD_AREA)/javac_input.txt
# Any name of javah file
DEMO_JAVAH_FILE = $(DEMO_NATIVECLASS:%=$(DEMO_BUILD_SRCDIR)/%.h)
# Get complete list of files for this demo
ifdef DEMO_PSRCDIR
DEMO_ALL_FILES2 := $(shell ( $(CD) $(DEMO_PSRCDIR) \
&& $(FIND) $(DEMO_PKGDIR) $(SCM_DIRS_prune) -o -type f -print ) \
| $(SED) 's@^\./@@' )
DEMO_ALL_FILES += $(DEMO_ALL_FILES2)
endif
ifdef DEMO_EXTRA_SRCDIR
DEMO_ALL_FILES += $(DEMO_EXTRA_FILES)
endif
DEMO_ALL_FILES1 := $(shell ( $(CD) $(DEMO_SRCDIR) \
&& $(FIND) $(DEMO_PKGDIR) $(SCM_DIRS_prune) -o -type f -print ) \
| $(SED) 's@^\./@@' )
DEMO_ALL_FILES += $(DEMO_ALL_FILES1)
# Just the java sources
DEMO_JAVA_SOURCES = $(filter %.java,$(DEMO_ALL_FILES))
# Just the C and C++ sources
DEMO_C_SRC_FILES = $(filter %.c,$(DEMO_ALL_FILES))
DEMO_CPP_SRC_FILES = $(filter %.cpp,$(DEMO_ALL_FILES))
# All the native source files
DEMO_ALL_NATIVE_SOURCES = $(DEMO_C_SRC_FILES)
DEMO_ALL_NATIVE_SOURCES += $(DEMO_CPP_SRC_FILES)
DEMO_ALL_NATIVE_SOURCES += $(filter %.h,$(DEMO_ALL_FILES))
DEMO_ALL_NATIVE_SOURCES += $(filter %.hpp,$(DEMO_ALL_FILES))
# If we have java sources, then define the jar file we will create
ifndef DEMO_JAR_NAME
DEMO_JAR_NAME = $(DEMONAME).jar
endif
ifneq ($(strip $(DEMO_JAVA_SOURCES)),)
DEMO_JAR = $(DEMO_DESTDIR)/$(DEMO_JAR_NAME)
endif
# If we have native sources, define the native library we will create
ifneq ($(strip $(DEMO_ALL_NATIVE_SOURCES)),)
# Path to native library we will create
DEMO_LIBRARY = \
$(DEMO_DESTDIR)/lib$(ISA_DIR)/$(LIB_PREFIX)$(DEMONAME).$(LIBRARY_SUFFIX)
# C and C++ compiler flags we need to add to standard flags
DEMO_CPPFLAGS += -I$(DEMO_BUILD_SRCDIR)
# If the npt library is used we need to find the npt.h file
ifneq ($(DEMO_NEEDS_NPT),)
# The npt library is delivered as part of the JRE
DEMO_CPPFLAGS += -I$(SHARE_SRC)/npt -I$(PLATFORM_SRC)/npt
endif
# Is the shared agent_util code needed
ifneq ($(DEMO_NEEDS_AGENT_UTIL),)
DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/agent_util.c
DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/agent_util.h
endif
# Is the shared java_crw_demo code needed
ifneq ($(DEMO_NEEDS_JAVA_CRW_DEMO),)
DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/java_crw_demo.c
DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/java_crw_demo.h
endif
# All the native object files we need to build the library
DEMO_OBJECTS += $(DEMO_C_SRC_FILES:%.c=%.$(OBJECT_SUFFIX)) \
$(DEMO_CPP_SRC_FILES:%.cpp=%.$(OBJECT_SUFFIX))
# Linking is special depending on whether we had C++ code or on windows
DEMO_NEEDS_CPP = $(strip $(DEMO_CPP_SRC_FILES))
CPPFLAGS += $(DEMO_CPPFLAGS)
ifeq ($(PLATFORM),windows)
# Note: This is a link with cl.exe, not link.exe, options differ quite
# bit between them.
LINK.demo = $(LINK.c)
LDLIBS.demo = $(EXTRA_LIBS) $(LFLAGS_$(COMPILER_VERSION))
DEMO_VERSION_INFO = $(OBJDIR)/$(LIBRARY).res
LDLIBS.demo += $(DEMO_VERSION_INFO)
else
ifneq ($(DEMO_NEEDS_CPP),)
LINK.demo = $(LINK.cpp)
LDLIBS.demo = $(LIBCXX)
ifeq ($(PLATFORM),solaris)
LDLIBS.demo += -lc
endif
else
LINK.demo = $(LINK.c)
LDLIBS.demo = $(LDLIBS)
endif
endif
endif
# Files that are considered resources (need to be in the jar file)
DEMO_RESOURCES += $(filter-out %.java,$(DEMO_ALL_FILES))
# All destination files (top level readme files and all sources)
# Note: We exclude the topfiles from the src tree.
DEMO_DEST_TOPFILES = $(DEMO_TOPFILES:%=$(DEMO_DESTDIR)/%)
DEMO_FILTERED_SOURCES = $(filter-out $(DEMO_TOPFILES),$(DEMO_ALL_FILES))
DEMO_FULL_SOURCES += $(DEMO_FILTERED_SOURCES:%=$(DEMO_BUILD_SRCDIR)/%)
# Default rule
all: build demo_info
# Used to populate the destination directories
$(DEMO_DESTDIR)/%: $(DEMO_ROOT)/%
$(install-file)
ifneq ($(DEMO_SRCDIR),$(DEMO_ROOT))
$(DEMO_DESTDIR)/%: $(DEMO_SRCDIR)/%
$(install-file)
endif
$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/%
$(install-file)
ifdef DEMO_PSRCDIR
$(DEMO_BUILD_SRCDIR)/%: $(DEMO_PSRCDIR)/%
$(install-file)
endif
ifdef DEMO_EXTRA_SRCDIR
$(DEMO_BUILD_SRCDIR)/%: $(DEMO_EXTRA_SRCDIR)/%
$(install-file)
endif
ifneq ($(DEMO_NEEDS_AGENT_UTIL),)
$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/../agent_util/%
$(install-file)
endif
ifneq ($(DEMO_NEEDS_JAVA_CRW_DEMO),)
$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/../java_crw_demo/%
$(install-file)
endif
# Jar manifest file
MAINMANIFEST = $(JDK_TOPDIR)/make/tools/manifest.mf
$(DEMO_MANIFEST): $(MAINMANIFEST)
@$(prep-target)
$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
-e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
$(MAINMANIFEST) >> $@
$(ECHO) "Main-Class: $(DEMO_MAINCLASS)" >> $@
ifdef DEMO_MANIFEST_ATTR
$(ECHO) "$(DEMO_MANIFEST_ATTR)" >> $@
endif
# Populating the jar image directory
$(DEMO_JAR_IMAGE)/%: $(DEMO_SRCDIR)/%
$(install-file)
ifdef DEMO_PSRCDIR
$(DEMO_JAR_IMAGE)/%: $(DEMO_PSRCDIR)/%
$(install-file)
endif
ifdef DEMO_EXTRA_SRCDIR
$(DEMO_JAR_IMAGE)/%: $(DEMO_EXTRA_SRCDIR)/%
$(install-file)
endif
ifdef DEMO_DESCRIPTOR
$(DEMO_JAR_IMAGE)/META-INF/services/$(DEMO_DESCRIPTOR): \
$(DEMO_SRCDIR)/$(DEMO_DESCRIPTOR)
$(install-file)
endif
# If we are creating a jar file (we have java code)
ifdef DEMO_JAR
# Input file for javac
$(DEMO_JAVAC_INPUT): $(DEMO_JAVA_SOURCES:%=$(DEMO_BUILD_SRCDIR)/%)
@$(prep-target)
@for i in $(DEMO_JAVA_SOURCES) ; do \
$(ECHO) "$(DEMO_BUILD_SRCDIR)/$$i" >> $@ ; \
done
# Jar file creation
$(DEMO_JAR): \
$(DEMO_JAVAC_INPUT) \
$(DEMO_MANIFEST) \
$(DEMO_DESCRIPTOR:%=$(DEMO_JAR_IMAGE)/META-INF/services/%) \
$(DEMO_RESOURCES:%=$(DEMO_JAR_IMAGE)/%)
@$(prep-target)
$(MKDIR) -p $(DEMO_JAR_IMAGE)
$(JAVAC_CMD) -d $(DEMO_JAR_IMAGE) -sourcepath $(DEMO_BUILD_SRCDIR) \
@$(DEMO_JAVAC_INPUT)
ifeq ($(DEMO_INCL_SRC),true)
$(CP) $(DEMO_JAVA_SOURCES:%=$(DEMO_BUILD_SRCDIR)/%) $(DEMO_JAR_IMAGE)
endif
ifeq ($(DEMO_ONLY_SRC),true)
$(RM) -r $(DEMO_JAR_IMAGE)
$(MKDIR) -p $(DEMO_JAR_IMAGE)
$(CP) -r $(DEMO_BUILD_SRCDIR)/* $(DEMO_JAR_IMAGE)
ifneq ($(DEMO_TOPFILES),)
$(CP) $(DEMO_ROOT)/$(DEMO_TOPFILES) $(DEMO_JAR_IMAGE)
endif
endif
$(BOOT_JAR_CMD) -cfm $@ $(DEMO_MANIFEST) \
-C $(DEMO_JAR_IMAGE) . \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
endif
ifndef DEMO_SKIP_SRCZIP
# Create a src.zip file
$(DEMO_BUILD_SRCZIP): $(DEMO_FULL_SOURCES)
@$(prep-target)
$(CD) $(DEMO_BUILD_AREA)/src && $(ZIPEXE) -q -r ../$(@F) .
# Install the destination src.zip file and create the src tree
$(DEMO_SOURCE_ZIP): $(DEMO_BUILD_SRCZIP)
$(install-file)
endif
ifeq ($(PLATFORM),windows)
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
/D "JDK_FTYPE=0x2L"
endif
# Native library building
ifdef DEMO_LIBRARY
# Full paths to object files
DEMO_FULL_OBJECTS = $(DEMO_OBJECTS:%=$(OBJDIR)/%)
VPATH=
# Native compile rules
$(OBJDIR)/%.$(OBJECT_SUFFIX): $(DEMO_BUILD_SRCDIR)/%.c
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
ifneq ($(DEMO_NEEDS_CPP),)
$(OBJDIR)/%.$(OBJECT_SUFFIX): $(DEMO_BUILD_SRCDIR)/%.cpp
@$(prep-target)
$(COMPILE.cpp) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
endif
# Actual creation of the native shared library (C++ and C are different)
$(DEMO_LIBRARY): $(DEMO_FULL_OBJECTS)
@$(prep-target)
ifeq ($(PLATFORM),windows)
$(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(DEMO_VERSION_INFO) $(VERSIONINFO_RESOURCE)
$(LINK.demo) $(SHARED_LIBRARY_FLAG) -Fe$@ \
$(DEMO_FULL_OBJECTS) $(LDLIBS.demo)
else
$(LINK.demo) $(SHARED_LIBRARY_FLAG) -o $@ \
$(DEMO_FULL_OBJECTS) $(LDLIBS.demo)
endif
@$(call binary_file_verification,$@)
# Generation of any javah include file, make sure objects are dependent on it
ifdef DEMO_NATIVECLASS
$(DEMO_JAVAH_FILE): $(DEMO_JAR)
@$(prep-target)
$(JAVAH_CMD) -d $(DEMO_BUILD_SRCDIR) -classpath $(DEMO_JAR) \
$(DEMO_NATIVECLASS)
@$(java-vm-cleanup)
$(DEMO_FULL_OBJECTS): $(DEMO_JAVAH_FILE)
endif
endif
# Build involves populating the destination "src" tree, building the jar and
# native library, and creating a source bundle
sources: $(DEMO_FULL_SOURCES)
@$(ECHO) "Created $@"
objects:
@$(ECHO) "Created $@"
# Why the nested make here? It only works this way, don't know why.
bundles: $(DEMO_BUILD_SRCZIP)
$(RM) -r $(DEMO_DESTDIR)
$(MKDIR) -p $(DEMO_DESTDIR)
$(MAKE) $(DEMO_LIBRARY) $(DEMO_JAR) $(DEMO_SOURCE_ZIP) $(DEMO_DEST_TOPFILES)
# Applets are special, no jar file, no src.zip, everything expanded.
ifdef DEMO_IS_APPLET
@$(ECHO) "Expanding jar file into demos area at $(DEMO_DESTDIR)"
( $(CD) $(DEMO_DESTDIR) && \
$(BOOT_JAR_CMD) -xfv $(DEMO_JAR_NAME) \
$(BOOT_JAR_JFLAGS) && \
$(RM) -r META-INF $(DEMO_JAR_NAME) && \
$(java-vm-cleanup) )
@( $(CD) $(DEMO_DESTDIR) && $(java-vm-cleanup) )
@$(ECHO) "Expanding source into demos area at $(DEMO_DESTDIR)"
( $(CD) $(DEMO_DESTDIR) && $(UNZIP) -o src.zip && $(RM) src.zip )
endif
build: sources bundles
# Printing out a demo information line
define printDemoSetting
if [ "$2" != "" ] ; then $(PRINTF) "%-20s %s\n" "$1:" "$2"; fi
endef
# Print out the demo information
demo_info:
@$(ECHO) "========================================================="
@$(call printDemoSetting,DEMONAME,$(DEMONAME))
@$(call printDemoSetting,DEMO_ROOT,$(DEMO_ROOT))
@$(call printDemoSetting,DEMO_SRCDIR,$(DEMO_SRCDIR))
@$(call printDemoSetting,DEMO_DESTDIR,$(DEMO_DESTDIR))
@$(call printDemoSetting,DEMO_JAR,$(DEMO_JAR))
@$(call printDemoSetting,DEMO_MANIFEST_ATTR,$(DEMO_MANIFEST_ATTR))
@$(call printDemoSetting,DEMO_PSRCDIR,$(DEMO_PSRCDIR))
@$(call printDemoSetting,DEMO_EXTRA_SRCDIR,$(DEMO_EXTRA_SRCDIR))
@$(call printDemoSetting,DEMO_EXTRA_FILES,$(DEMO_EXTRA_FILES))
@$(call printDemoSetting,DEMO_TOPFILES,$(DEMO_TOPFILES))
@$(call printDemoSetting,DEMO_MAINCLASS,$(DEMO_MAINCLASS))
@$(call printDemoSetting,DEMO_DESCRIPTOR,$(DEMO_DESCRIPTOR))
@$(call printDemoSetting,DEMO_NATIVECLASS,$(DEMO_NATIVECLASS))
@$(call printDemoSetting,DEMO_LIBRARY,$(DEMO_LIBRARY))
@$(call printDemoSetting,DEMO_OBJECTS,$(DEMO_OBJECTS))
@$(call printDemoSetting,DEMO_SOURCE_ZIP,$(DEMO_SOURCE_ZIP))
@$(ECHO) "========================================================="
# Clean rule
clean clobber:
$(RM) -r $(DEMO_BUILD_AREA)
$(RM) -r $(DEMO_DESTDIR)
# This should not be needed, but some versions of GNU make have a bug that
# sometimes deleted these files for some strange and unknown reason
# (GNU make version 3.78.1 has the problem, GNU make version 3.80 doesn't?)
.PRECIOUS: $(DEMO_FULL_SOURCES) $(DEMO_BUILD_SRCZIP) $(DEMO_SOURCE_ZIP)
# List phony targets
.PHONY: all build clean clobber demo_info \
sources bundles

View File

@ -0,0 +1,326 @@
#
# 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.
#
#
# Generic makefile for building shared libraries.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
include $(JDK_TOPDIR)/makefiles/common/Classes.gmk
#
# It is important to define these *after* including Classes.gmk
# in order to override the values defined inthat makefile.
#
ifeq ($(LIBRARY), fdlibm)
ifeq ($(PLATFORM),windows)
ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(FDDLIBM_SUFFIX)
ACTUAL_LIBRARY_DIR = $(OBJDIR)
else # PLATFORM
ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(ARCH).$(FDDLIBM_SUFFIX)
ACTUAL_LIBRARY_DIR = $(OBJDIR)
endif #PLATFORM
else # LIBRARY
ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
ACTUAL_LIBRARY_DIR = $(LIB_LOCATION)
endif
ACTUAL_LIBRARY = $(ACTUAL_LIBRARY_DIR)/$(ACTUAL_LIBRARY_NAME)
library:: $(ACTUAL_LIBRARY)
FILES_o = $(patsubst %.c, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
FILES_o += $(patsubst %.s, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_s))))
FILES_o += $(patsubst %.cpp, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))
ifeq ($(PLATFORM), macosx)
FILES_o += $(patsubst %.m, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_objc))))
FILES_o += $(patsubst %.mm, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_objcpp))))
INCREMENTAL_BUILD=false
endif # PLATFORM
ifeq ($(INCREMENTAL_BUILD),true)
FILES_d = $(patsubst %.c, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
FILES_d += $(patsubst %.cpp, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))
endif # INCREMENTAL_BUILD
ifeq ($(PLATFORM),solaris)
# List of all lint files, one for each .c file (only for C)
FILES_ln = $(patsubst %.c, %.$(LINT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
endif
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
#
# C++ libraries must be linked with CC.
#
ifdef CPLUSPLUSLIBRARY
LINKER=$(LINK.cc)
else
LINKER=$(LINK.c)
endif
$(ACTUAL_LIBRARY):: $(INIT) $(TEMPDIR) $(LIBDIR) $(BINDIR) $(EXTDIR) classheaders
@$(ECHO) Building lib:$(ACTUAL_LIBRARY)
#
# COMPILE_APPROACH: Different approaches to compile up the native object
# files as quickly as possible.
# The setting of parallel works best on Unix, batch on Windows.
#
COMPILE_FILES_o = $(OBJDIR)/.files_compiled
$(COMPILE_FILES_o): $(FILES_d) $(FILES_o)
@$(ECHO) "$<" >> $@
clean::
$(RM) $(COMPILE_FILES_o)
#
# COMPILE_APPROACH=parallel: Will trigger compilations (just compilations) to
# happen in parallel. Greatly decreases Unix build time, even on single CPU
# machines, more so on multiple CPU machines. Default is 2 compiles
# at a time, but can be adjusted with ALT_PARALLEL_COMPILE_JOBS.
# Note that each .d file will also be dependent on it's .o file, see
# Rules.gmk.
# Note this does not depend on Rules.gmk to work like batch (below)
# and this technique doesn't seem to help Windows build time nor does
# it work very well, it's possible the Windows Visual Studio compilers
# don't work well in a parallel situation, this needs investigation.
#
ifeq ($(COMPILE_APPROACH),parallel)
.PHONY: library_parallel_compile
library_parallel_compile:
@$(ECHO) "Begin parallel compiles: $(shell $(PWD))"
$(MAKE) -j $(PARALLEL_COMPILE_JOBS) $(COMPILE_FILES_o)
@$(ECHO) "Done with parallel compiles: $(shell $(PWD))"
$(ACTUAL_LIBRARY):: library_parallel_compile
endif
#
# COMPILE_APPROACH=batch: Will trigger compilations (just compilations) to
# happen in batch mode. Greatly decreases Windows build time.
# See logic in Rules.gmk for how compiles happen, the $(MAKE) in
# library_batch_compile below triggers the actions in Rules.gmk.
# Note that each .d file will also be dependent on it's .o file, see
# Rules.gmk.
#
ifeq ($(COMPILE_APPROACH),batch)
.PHONY: library_batch_compile
library_batch_compile:
@$(ECHO) "Begin BATCH compiles: $(shell $(PWD))"
$(MAKE) $(COMPILE_FILES_o)
$(MAKE) batch_compile
@$(ECHO) "Done with BATCH compiles: $(shell $(PWD))"
$(MAKE) COMPILE_APPROACH=normal $(COMPILE_FILES_o)
$(ACTUAL_LIBRARY):: library_batch_compile
endif
ifeq ($(PLATFORM), windows)
#
# Library building rules.
#
$(LIBRARY).lib:: $(OBJDIR)
ifeq ($(LIBRARY), fdlibm)
$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lib
$(OBJDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lcf
@$(prep-target)
$(AR) -NODEFAULTLIB:MSVCRT -out:$@ -nologo \
@$(OBJDIR)/$(LIBRARY).lcf $(OTHER_LCF) $(LDLIBS_COMMON)
else # LIBRARY
# build it into $(OBJDIR) so that the other generated files get put
# there, then copy just the DLL (and MAP file) to the requested directory.
#
$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf
@$(prep-target)
@$(MKDIR) -p $(OBJDIR)
$(LD) -dll -out:$(OBJDIR)/$(@F) \
-map:$(OBJDIR)/$(LIBRARY).map \
$(LFLAGS) @$(OBJDIR)/$(LIBRARY).lcf \
$(OTHER_LCF) $(LDLIBS)
$(CP) $(OBJDIR)/$(@F) $@
@$(call binary_file_verification,$@)
$(CP) $(OBJDIR)/$(LIBRARY).map $(@D)
$(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D)
endif # LIBRARY
$(OBJDIR)/$(LIBRARY).lcf: $(OBJDIR)/$(LIBRARY).res $(COMPILE_FILES_o) $(FILES_m)
@$(prep-target)
@$(MKDIR) -p $(TEMPDIR)
@$(ECHO) $(FILES_o) > $@
ifndef LOCAL_RESOURCE_FILE
@$(ECHO) $(OBJDIR)/$(LIBRARY).res >> $@
endif
@$(ECHO) Created $@
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
/D "JDK_FTYPE=0x2L"
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
ifndef LOCAL_RESOURCE_FILE
@$(prep-target)
$(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
endif
#
# Install a .lib file if required.
#
ifeq ($(INSTALL_DOT_LIB), true)
$(ACTUAL_LIBRARY):: $(LIBDIR)/$(LIBRARY).lib
clean::
-$(RM) $(LIBDIR)/$(LIBRARY).lib
$(LIBDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lib
$(install-file)
$(LIBDIR)/$(LIBRARY).dll:: $(OBJDIR)/$(LIBRARY).dll
$(install-file)
endif # INSTALL_DOT_LIB
else # PLATFORM
#
# On Solaris, use mcs to write the version into the comment section of
# the shared library. On other platforms set this to false at the
# make command line.
#
ifneq ($(PLATFORM), macosx)
ARFLAGS = -r
endif
$(ACTUAL_LIBRARY):: $(COMPILE_FILES_o) $(FILES_m) $(FILES_reorder)
@$(prep-target)
@$(ECHO) "STATS: LIBRARY=$(LIBRARY), PRODUCT=$(PRODUCT), OPTIMIZATION_LEVEL=$(OPTIMIZATION_LEVEL)"
@$(ECHO) "Rebuilding $@ because of $?"
ifeq ($(LIBRARY), fdlibm)
$(AR) $(ARFLAGS) $@ $(FILES_o)
else # LIBRARY
$(LINKER) $(SHARED_LIBRARY_FLAG) -o $@ $(FILES_o) $(LDLIBS)
@$(call binary_file_verification,$@)
ifeq ($(WRITE_LIBVERSION),true)
$(MCS) -d -a "$(FULL_VERSION)" $@
endif # WRITE_LIBVERSION
endif # LIBRARY
endif # PLATFORM
#
# Cross check all linted files against each other
#
ifeq ($(PLATFORM),solaris)
lint.errors : $(FILES_ln)
$(LINT.c) $(FILES_ln) $(LDLIBS)
endif
#
# Class libraries with JNI native methods get a include to the package.
#
ifdef PACKAGE
vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
OTHER_INCLUDES += -I$(SHARE_SRC)/native/common -I$(PLATFORM_SRC)/native/common
OTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR) \
-I$(PLATFORM_SRC)/native/$(PKGDIR)
endif
#
# Clean/clobber rules
#
clean::
$(RM) -r $(ACTUAL_LIBRARY)
clobber:: clean
#
# INCREMENTAL_BUILD means that this workspace will be built over and over
# possibly incrementally. This means tracking the object file dependencies
# on include files so that sources get re-compiled when the include files
# change. When building from scratch and doing a one time build (like
# release engineering or nightly builds) set INCREMENTAL_BUILD=false.
#
ifeq ($(INCREMENTAL_BUILD),true)
#
# Workaround: gnumake sometimes says files is empty when it shouldn't
# was: files := $(foreach file, $(wildcard $(OBJDIR)/*.$(DEPEND_SUFFIX)), $(file))
#
files := $(shell $(LS) $(OBJDIR)/*.$(DEPEND_SUFFIX) 2>/dev/null)
#
# Only include these files if we have any.
#
ifneq ($(strip $(files)),)
include $(files)
endif # files
endif # INCREMENTAL_BUILD
#
# Default dependencies
#
all: build
build: library
debug:
$(MAKE) VARIANT=DBG build
fastdebug:
$(MAKE) VARIANT=DBG FASTDEBUG=true build
openjdk:
$(MAKE) OPENJDK=true build
FORCE:
.PHONY: all build debug fastdebug

View File

@ -0,0 +1,97 @@
#
# Copyright (c) 1998, 2005, 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 linking with mapfiles.
#
# NOTE: Not using a mapfile will expose all your extern functions and
# extern data symbols as part of your interface, so unless your
# extern names are safe from being mistaken as names from other
# libraries, you better use a mapfile, or use a unique naming
# convention on all your extern symbols.
#
# The mapfile will establish versioning by defining the exported interface.
#
# The mapfile can also force certain .o files or elf sections into the
# the different segments of the resulting library/program image.
#
# The macro FILES_m can contain any number of mapfiles.
#
# Always make sure 'all' is the default rule
mapfile_default_rule: all
ifeq ($(PLATFORM), solaris)
ifeq ($(VARIANT), OPT)
# OPT build MUST have a mapfile?
ifndef FILES_m
FILES_m = mapfile-vers
endif
# If we are re-ordering functions in this solaris library, we need to make
# sure that -xF is added to the compile lines. This option is critical and
# enables the functions to be reordered.
ifdef FILES_reorder
CFLAGS_OPT += -xF
CXXFLAGS_OPT += -xF
endif
INIT += $(TEMPDIR)/mapfile-vers
$(TEMPDIR)/mapfile-vers : $(FILES_m) $(FILES_reorder)
$(prep-target)
$(CAT) $(FILES_m) > $@
ifdef FILES_reorder
$(SED) -e 's=OUTPUTDIR=$(OUTPUTDIR)=' $(FILES_reorder) >> $@
endif
endif # VARIANT
ifndef LDNOMAP
LDMAPFLAGS_OPT = -M$(TEMPDIR)/mapfile-vers
LDMAPFLAGS_DBG = $(FILES_m:%=-M%)
endif
endif # PLATFORM
ifeq ($(PLATFORM), linux)
ifeq ($(VARIANT), OPT)
# OPT build MUST have a mapfile?
ifndef FILES_m
FILES_m = mapfile-vers
endif
endif # VARIANT
ifndef LDNOMAP
LDMAPFLAGS_OPT = $(FILES_m:%=-Xlinker -version-script=%)
LDMAPFLAGS_DBG = $(FILES_m:%=-Xlinker -version-script=%)
endif
endif # PLATFORM
LDFLAGS_OPT += $(LDMAPFLAGS_OPT)
LDFLAGS_DBG += $(LDMAPFLAGS_DBG)

View File

@ -0,0 +1,479 @@
#
# Copyright (c) 2009, 2010, 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.
#
JDK_MODULE_IMAGE_DIR = $(ABS_OUTPUTDIR)/jdk-module-image
JRE_MODULE_IMAGE_DIR = $(ABS_OUTPUTDIR)/jre-module-image
#
# modules Target to build jdk and jre module image
#
# There is one jar file per module containing classes only.
# All module jars are currently placed under jre/lib directory.
#
# Open issues that need further investigation:
# 1. Classes in jre/lib/ext/dnsns.jar are currently put in jre/lib/jndi-dns
# module. META-INF/services file is not installed.
# 2. Signed jars
# For JDK build, signed jars are copied to the build.
# All jars in the module image are unsigned.
MODULE_IMAGEBINDIR = bin
#
# Targets.
#
INITIAL_MODULE_IMAGE_JRE=initial-module-image-jre
INITIAL_MODULE_IMAGE_JDK=initial-module-image-jdk
ifeq ($(PLATFORM), solaris)
ifeq ($(ARCH_DATA_MODEL), 64)
INITIAL_MODULE_IMAGE_JRE=initial-module-image-jre-sol64
INITIAL_MODULE_IMAGE_JDK=initial-module-image-jdk-sol64
endif
endif
modules modules-clobber \
initial-module-image-jre initial-module-image-jdk \
initial-module-image-jre-sol64 initial-module-image-jdk-sol64 \
trim-module-image-jre trim-module-image-jdk \
process-module-image-jre process-module-image-jdk ::
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
# Order is important here, trim jre after jdk image is created
modules:: gen-modules \
$(INITIAL_MODULE_IMAGE_JRE) $(INITIAL_MODULE_IMAGE_JDK) \
trim-module-image-jre trim-module-image-jdk \
process-module-image-jre process-module-image-jdk
# Don't use these
module-image-jre:: initial-module-image-jre trim-module-image-jre process-module-image-jre
module-image-jdk:: initial-module-image-jdk trim-module-image-jdk process-module-image-jdk
#
# Paths to these files we need
JDK_MODULE_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%)
JDK_MODULE_64_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%64)
JDK_MODULE_DOCFILES = $(OTHER_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%)
JRE_MODULE_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%)
JRE_MODULE_64_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%64)
JRE_MODULE_DOCFILES = $(OTHER_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%)
JRE_MODULE_DOCFILES += $(JRE_NAMECHANGE_DOCLIST:%=$(JRE_MODULE_IMAGE_DIR)/%$(TEXT_SUFFIX))
###### RULES
# JDK files
$(JDK_MODULE_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%
$(process-doc-file)
# Removes LICENSE_VERSION or not
ifdef LICENSE_VERSION
$(JDK_MODULE_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
$(process-doc-file)
$(JDK_MODULE_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
$(process-doc-file)
else
$(JDK_MODULE_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%
$(process-doc-file)
endif
# JRE files
$(JRE_MODULE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%
$(process-doc-file)
# Add $(TEXT_SUFFIX) suffix
ifdef TEXT_SUFFIX
$(JRE_MODULE_IMAGE_DIR)/%$(TEXT_SUFFIX): $(SHARE_JRE_DOC_SRC)/%
$(process-doc-file)
endif
# Removes LICENSE_VERSION or not
ifdef LICENSE_VERSION
$(JRE_MODULE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
$(process-doc-file)
$(JRE_MODULE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
$(process-doc-file)
else
$(JRE_MODULE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%
$(process-doc-file)
endif
######################################################
# JRE Image
######################################################
MODULES_LIST = $(MODULES_TEMPDIR)/classlist/modules.list
# Modules in the jre/lib/security directory
POLICY_MODULES = US_export_policy local_policy
# Modules in the modules/ext directory
EXT_MODULES = localedata security-sunec security-sunjce
# Build PKCS#11 on all platforms except 64-bit Windows.
PKCS11 = security-sunpkcs11
ifeq ($(ARCH_DATA_MODEL), 64)
ifeq ($(PLATFORM), windows)
PKCS11 =
endif
endif
EXT_MODULES += $(PKCS11)
# Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
ifeq ($(PLATFORM), windows)
ifneq ($(ARCH_DATA_MODEL), 64)
EXT_MODULES += security-sunmscapi
endif
endif
# Modules for JDK only
JDK_MODULES = tools
gen-modules:
$(CD) modules; $(MAKE) all
initial-module-image-jre-setup:
$(RM) -r $(JRE_MODULE_IMAGE_DIR)
$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)
# 64-bit solaris jre image contains only the 64-bit add-on files.
initial-module-image-jre-sol64:: initial-module-image-jre-setup \
$(JRE_MODULE_LICENSES) $(JRE_MODULE_64_LICENSES)
@# Use tar instead of cp to preserve the symbolic links
for dir in bin lib ; do \
( $(CD) $(OUTPUTDIR) && \
$(TAR) cf - `$(FIND) $$dir -name '$(ARCH)' -print` | \
($(CD) $(JRE_MODULE_IMAGE_DIR) && $(TAR) xf -) ) ; \
done
@# Remove some files from the jre area
for t in $(NOTJRETOOLS) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
done
$(RM) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'orb.idl'`
$(RM) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'ir.idl'`
# Construct an initial jre image (initial jdk jre) no trimming or stripping
initial-module-image-jre:: initial-module-image-jre-setup \
$(JRE_LICENSES) $(JRE_MODULE_DOCFILES) \
$(BUILDMETAINDEX_JARFILE)
@# Copy in bin directory
$(CD) $(OUTPUTDIR) && $(FIND) bin -depth | $(CPIO) -pdum $(JRE_MODULE_IMAGE_DIR)
@# CTE plugin security change require new empty directory lib/applet
$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)/lib/applet
@# Copy files but not .jar in lib directory
$(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(EGREP) -v ".jar$$" | $(CPIO) -pdum $(JRE_MODULE_IMAGE_DIR)
@#
@# copy modules to jre/lib
@#
for m in `$(NAWK) '{print $$1}' $(MODULES_LIST)` ; do \
$(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib ; \
done
$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)/lib/ext
for m in $(EXT_MODULES) ; do \
$(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/ext ; \
done
for m in $(POLICY_MODULES) ; do \
$(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/security; \
done
@# Remove jdk modules
for m in $(JDK_MODULES) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar ; \
done
@# Make sure all directories are read/execute for everyone
$(CHMOD) a+rx `$(FIND) $(JRE_MODULE_IMAGE_DIR) -type d`
@# Remove some files from the jre area
for t in $(NOTJRETOOLS) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
done
@# Remove orb.idl and ir.idl from jre
$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'orb.idl' -exec $(RM) \{} \;
$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'ir.idl' -exec $(RM) \{} \;
@# Generate meta-index to make boot and extension class loaders lazier
$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && \
$(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
-o meta-index *.jar
@$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && $(java-vm-cleanup)
$(CD) $(JRE_MODULE_IMAGE_DIR)/lib/ext && \
$(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
-o meta-index *.jar
@$(CD) $(JRE_MODULE_IMAGE_DIR)/lib/ext && $(java-vm-cleanup)
ifeq ($(PLATFORM), windows)
@# Remove certain *.lib files
$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && \
$(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(LIB_SUFFIX)
ifeq ($(ARCH_DATA_MODEL), 32)
@# The Java Kernel JRE image ships with a special VM. It is not included
@# in the full JRE image, so remove it. Also, is it only for 32-bit windows.
$(CD) $(JRE_MODULE_IMAGE_DIR)/bin && $(RM) -r kernel
endif
endif # Windows
ifneq ($(PLATFORM), windows)
$(call copy-man-pages,$(JRE_MODULE_IMAGE_DIR),$(JRE_MAN_PAGES))
endif # !windows
# Trim out any extra files not for the jre shipment but wanted in the jdk jre.
# (Note the jdk WILL want the jre image before this trimming)
# Removes server VM on Windows 32bit.
# Remove certain shared libraries that should not be in the jre image
# but should be in the jdk jre image.
trim-module-image-jre::
ifeq ($(PLATFORM), windows)
ifeq ($(ARCH_DATA_MODEL), 32)
$(RM) -r $(JRE_MODULE_IMAGE_DIR)/bin/server
endif
ifdef NOTJRE_SHARED_LIBS
for l in $(NOTJRE_SHARED_LIBS) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/bin/$$l ; \
done ;
endif
else # PLATFORM
ifdef NOTJRE_SHARED_LIBS
for l in $(NOTJRE_SHARED_LIBS) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/lib/$(LIBARCH)/$$l ; \
done ;
endif
endif # PLATFORM
# Get list of all Elf files in the jre
JRE_MODULE_ELF_LIST=$(MODULES_TEMPDIR)/jre-elf-files.list
$(JRE_MODULE_ELF_LIST):
@$(prep-target)
ifneq ($(PLATFORM), windows)
$(RM) $@
$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -type f -name \*.$(LIB_SUFFIX) >> $@
$(FILE) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
| $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
endif
# Post process the image (strips and mcs on Elf files we are shipping)
# (Note the jdk WILL want the jre image before this processing)
process-module-image-jre:: $(JRE_MODULE_ELF_LIST)
ifneq ($(POST_STRIP_PROCESS), )
for f in `$(CAT) $(JRE_MODULE_ELF_LIST)`; do \
$(CHMOD) u+w $${f}; \
$(ECHO) $(POST_STRIP_PROCESS) $${f}; \
$(POST_STRIP_PROCESS) $${f}; \
$(CHMOD) go-w $${f}; \
done
endif
ifneq ($(POST_MCS_PROCESS), )
for f in `$(CAT) $(JRE_MODULE_ELF_LIST)`; do \
$(CHMOD) u+w $${f}; \
$(ECHO) $(POST_MCS_PROCESS) $${f}; \
$(POST_MCS_PROCESS) $${f}; \
$(CHMOD) go-w $${f}; \
done
endif
$(RM) $(JRE_MODULE_ELF_LIST)
######################################################
# JDK Image
######################################################
# Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
initial-module-image-jdk-setup:
$(RM) -r $(JDK_MODULE_IMAGE_DIR)
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/jre
($(CD) $(JRE_MODULE_IMAGE_DIR) && $(FIND) . -depth -print \
| $(CPIO) -pdum $(JDK_MODULE_IMAGE_DIR)/jre )
$(RM) -rf $(JDK_MODULE_IMAGE_DIR)/jre/man
$(CHMOD) a+rx `$(FIND) $(JDK_MODULE_IMAGE_DIR) -type d`
initial-module-image-jdk64-bindemos:
for dir in bin demo ; do \
( $(CD) $(OUTPUTDIR) && \
$(TAR) cf - `$(FIND) $$dir -name '$(LIBARCH)' -print` | \
($(CD) $(JDK_MODULE_IMAGE_DIR) && $(TAR) xf -) ) ; \
done
# Solaris 64 bit image is special
initial-module-image-jdk-sol64:: initial-module-image-jdk-setup \
initial-module-image-jdk64-bindemos \
$(JDK_MODULE_LICENSES) $(JDK_MODULARLIZED_64_LICENSES)
# DB files to add
ifeq ($(OPENJDK),true)
initial-module-image-jdk-db:
else
# Create the list of db *.zip files to bundle with jdk
ABS_DB_PATH :=$(call FullPath,$(CLOSED_SHARE_SRC)/db)
DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null)
initial-module-image-jdk-db: $(DB_ZIP_LIST)
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/db
for d in $(DB_ZIP_LIST); do \
($(CD) $(JDK_MODULE_IMAGE_DIR)/db && $(UNZIP) -o $$d); \
done
endif
# Standard jdk image
initial-module-image-jdk:: initial-module-image-jdk-setup \
initial-module-image-jdk-db \
$(JDK_MODULE_LICENSES) $(JDK_MODULE_DOCFILES)
$(MKDIR) $(JDK_MODULE_IMAGE_DIR)/lib
@#
@# copy jdk modules to jdk/lib
@#
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/lib
for m in $(JDK_MODULES) ; do \
$(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JDK_MODULE_IMAGE_DIR)/lib ; \
done
ifeq ($(PLATFORM), windows)
@#
@# lib/
@#
$(CP) $(LIBDIR)/$(LIB_PREFIX)jvm.$(LIB_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/lib
$(CP) $(LIBDIR)/$(LIB_PREFIX)jawt.$(LIB_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/lib
@#
@# bin/
@#
@# copy all EXE files and only certain DLL files from BINDIR
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/bin
$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
ifeq ($(COMPILER_VERSION), VS2010)
$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
endif
ifeq ($(ARCH_DATA_MODEL), 32)
ifeq ($(COMPILER_VERSION), VS2003)
$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
endif
endif
else # PLATFORM
@#
@# bin/
@#
($(CD) $(BINDIR)/.. && $(TAR) cf - \
`$(FIND) bin \( -type f -o -type l \) -print `) | \
($(CD) $(JDK_MODULE_IMAGE_DIR) && $(TAR) xf -)
endif # PLATFORM
@#
@# lib/ct.sym
@#
$(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
$(JAVAC_CMD) -XDprocess.packages -proc:only \
-processor com.sun.tools.javac.sym.CreateSymbols \
-Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
-Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
$(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS)
$(BOOT_JAR_CMD) c0f $(LIBDIR)/ct.sym \
-C $(OUTPUTDIR)/symbols META-INF $(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
$(CP) $(LIBDIR)/ct.sym $(JDK_MODULE_IMAGE_DIR)/lib/ct.sym
@#
@# CORBA supported orb.idl and ir.idl should be copied to lib
@#
$(CP) $(LIBDIR)/orb.idl $(JDK_MODULE_IMAGE_DIR)/lib/orb.idl
$(CP) $(LIBDIR)/ir.idl $(JDK_MODULE_IMAGE_DIR)/lib/ir.idl
ifeq ($(PLATFORM), linux)
@#
@# on Linux copy jexec from jre/lib to /lib
@#
$(CP) $(LIBDIR)/jexec $(JDK_MODULE_IMAGE_DIR)/lib/jexec
endif # PLATFORM
@#
@# demo, include
@#
$(CP) -r -f $(DEMODIR) $(JDK_MODULE_IMAGE_DIR)
$(CP) -r -f $(SAMPLEDIR) $(JDK_MODULE_IMAGE_DIR)
$(CP) -r $(INCLUDEDIR) $(JDK_MODULE_IMAGE_DIR)
@#
@# Swing BeanInfo generation
@#
$(CD) javax/swing/beaninfo && $(MAKE) JDK_IMAGE_DIR=$(JDK_MODULE_IMAGE_DIR) swing-1.2-beans
ifneq ($(PLATFORM), windows)
$(call copy-man-pages,$(JDK_MODULE_IMAGE_DIR),$(JDK_MAN_PAGES))
endif # !windows
# Trim out files we don't want to ship
trim-module-image-jdk::
@# Remove tools that should not be part of SDK.
for t in $(NOTJDKTOOLS); do \
$(RM) $(JDK_MODULE_IMAGE_DIR)/bin/$${t}$(EXE_SUFFIX) \
$(JDK_MODULE_IMAGE_DIR)/bin/*/native_threads/$${t}$(EXE_SUFFIX); \
done
# Get list of Elf files in the jdk
JDK_MODULE_ELF_LIST=$(MODULES_TEMPDIR)/jdk-elf-files.list
$(JDK_MODULE_ELF_LIST):
@$(prep-target)
ifneq ($(PLATFORM), windows)
$(RM) $@
$(FIND) $(JDK_MODULE_IMAGE_DIR)/jre/lib -type f -name \*.$(LIB_SUFFIX) >> $@
$(FILE) `$(FIND) $(JDK_MODULE_IMAGE_DIR)/jre/bin -type f -name \*$(EXE_SUFFIX)` \
| $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
file `$(FIND) $(JDK_MODULE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
| $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
endif
# Post process the image (strips and mcs on files we are shipping)
process-module-image-jdk:: $(JDK_MODULE_ELF_LIST)
ifneq ($(POST_STRIP_PROCESS), )
for f in `$(CAT) $(JDK_MODULE_ELF_LIST)`; do \
$(CHMOD) u+w $${f}; \
$(ECHO) $(POST_STRIP_PROCESS) $${f}; \
$(POST_STRIP_PROCESS) $${f}; \
$(CHMOD) go-w $${f}; \
done
endif
ifneq ($(POST_MCS_PROCESS), )
for f in `$(CAT) $(JDK_MODULE_ELF_LIST)`; do \
$(CHMOD) u+w $${f}; \
$(ECHO) $(POST_MCS_PROCESS) $${f}; \
$(POST_MCS_PROCESS) $${f}; \
$(CHMOD) go-w $${f}; \
done
endif
$(RM) $(JDK_MODULE_ELF_LIST)
######################################################
# clobber
######################################################
modules-clobber::
$(RM) -r $(JDK_MODULE_IMAGE_DIR)
$(RM) -r $(JRE_MODULE_IMAGE_DIR)
modules modules-clobber::
@$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
@$(java-vm-cleanup)
.PHONY: modules module-image-jre module-image-jdk \
initial-module-image-jre initial-module-image-jdk \
initial-module-image-jre-sol64 initial-module-image-jdk-sol64 \
initial-module-image-jdk-setup \
initial-module-image-jdk-db \
initial-module-image-jdk64-bindemos \
initial-module-image-jre-setup \
trim-module-image-jre trim-module-image-jdk \
process-module-image-jre process-module-image-jdk \
install-previous-jre install-previous-jdk \
modules-clobber
# Force rule
FRC:

View File

@ -0,0 +1,319 @@
#
# 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.
#
#
# Generic makefile for building executables.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
#
# If building programs, use a normal compile approach
#
ifeq ($(COMPILE_APPROACH),batch)
override COMPILE_APPROACH = normal
endif
# set the platform specific directory for macosx, also this platform shares
# substantial family ties with its siblings (solaris and linux), thus we add
# solaris src path to its compilation dependencies.
ifeq ($(PLATFORM), macosx)
LAUNCHER_PLATFORM_SRC = $(BUILDDIR)/../src/macosx
LAUNCHER_SOLARIS_PLATFORM_SRC = $(BUILDDIR)/../src/solaris
else
LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)
endif
ifndef LAUNCHER_SHARE_SRC
LAUNCHER_SHARE_SRC = $(SHARE_SRC)
endif
ACTUAL_PROGRAM_NAME = $(PROGRAM)$(EXE_SUFFIX)
ACTUAL_PROGRAM_DIR = $(BINDIR)
ACTUAL_PROGRAM = $(ACTUAL_PROGRAM_DIR)/$(ACTUAL_PROGRAM_NAME)
# Make sure the default rule is all
program_default_rule: all
program: $(ACTUAL_PROGRAM)
# Work-around for missing processor specific mapfiles
ifndef CROSS_COMPILE_ARCH
# reuse the mapfiles in the launcher's directory, the same should
# be applicable to the tool launchers as well.
FILES_m = $(BUILDDIR)/java/main/java/mapfile-$(ARCH)
include $(BUILDDIR)/common/Mapfile-vers.gmk
endif
include $(JDK_TOPDIR)/makefiles/common/Rules.gmk
ifdef NEVER_ACT_AS_SERVER_CLASS_MACHINE
OTHER_CPPFLAGS += -DNEVER_ACT_AS_SERVER_CLASS_MACHINE
endif
#
# Create a dependency on libjli (Java Launcher Infrastructure)
#
# On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
# do this reliably on Linux takes a different syntax than Solaris.
#
# On Windows, this is done by using the same directory as the executable
# itself, as with all the Windows libraries.
#
ifeq ($(PLATFORM), macosx)
ifneq ($(ARCH), universal)
LDFLAGS += -Wl,-all_load
endif
LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
ifeq ($(SYSTEM_ZLIB),true)
OTHER_LDLIBS += -lz
endif
endif
ifneq (,$(findstring $(PLATFORM), linux solaris)) # UNIX systems
LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
OTHER_LDLIBS += -ljli
ifeq ($(PLATFORM), solaris)
ifeq ($(ARCH_DATA_MODEL), 32)
LDFLAGS += -R \$$ORIGIN/../lib/$(LIBARCH)/jli
LDFLAGS += -R \$$ORIGIN/../jre/lib/$(LIBARCH)/jli
else
LDFLAGS += -R \$$ORIGIN/../../lib/$(LIBARCH)/jli
LDFLAGS += -R \$$ORIGIN/../../jre/lib/$(LIBARCH)/jli
endif
endif
ifeq ($(PLATFORM), linux)
LDFLAGS += $(LDFLAG_Z_ORIGIN)
LDFLAGS += -Wl,--allow-shlib-undefined
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
endif
endif
ifeq ($(PLATFORM), windows)
JLI_LCF = $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/jli.lcf
ifdef STATIC_JLI
LDFLAGS += -libpath:$(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static
else
LDFLAGS += -libpath:$(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)
endif
OTHER_LDLIBS += jli.lib
endif
#
# Launcher specific files.
#
FILES_o = $(OBJDIR)/main.$(OBJECT_SUFFIX)
$(ACTUAL_PROGRAM):: classes $(INIT)
#
# Windows only
#
ifeq ($(PLATFORM), windows)
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
/D "JDK_INTERNAL_NAME=$(PROGRAM)" \
/D "JDK_FTYPE=0x1L"
$(OBJDIR)/$(PROGRAM).res: $(VERSIONINFO_RESOURCE)
@$(prep-target)
ifndef LOCAL_RESOURCE_FILE
$(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
endif
$(OBJDIR)/$(PROGRAM).lcf: $(OBJDIR)/$(PROGRAM).res $(FILES_o)
@$(prep-target)
@$(ECHO) $(FILES_o) > $@
ifndef LOCAL_RESOURCE_FILE
@$(ECHO) $(OBJDIR)/$(PROGRAM).res >> $@
endif
@$(ECHO) setargv.obj >> $@
@$(ECHO) Created $@
$(ACTUAL_PROGRAM):: $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX)
@$(install-file)
ifeq ($(ARCH_DATA_MODEL), 32)
STACK_SIZE=327680
else
# We need more Stack for Windows 64bit
STACK_SIZE=1048576
endif
IMVERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
$(OBJDIR)/$(PROGRAM).exe.manifest: $(JDK_TOPDIR)/src/windows/resource/java.manifest
@$(prep-target)
$(SED) 's%IMVERSION%$(IMVERSION)%g;s%PROGRAM%$(PROGRAM)%g' $< > $@
# We used a hand-crafted manifest file for all executables.
# It is tweaked to embed the build number and executable name.
# Use ";#2" for .dll and ";#1" for .exe in the MT command below:
$(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX):: $(OBJDIR)/$(PROGRAM).lcf $(FILES_o) $(JLI_LCF) $(OBJDIR)/$(PROGRAM).exe.manifest
@$(prep-target)
@set -- $?; \
$(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...};
$(LD) -out:$@ /STACK:$(STACK_SIZE) \
-map:$(OBJDIR)/$(PROGRAM).map $(LFLAGS) $(LDFLAGS) \
@$(OBJDIR)/$(PROGRAM).lcf $(LDLIBS)
ifdef MT
$(MT) /manifest $(OBJDIR)/$(PROGRAM).exe.manifest /outputresource:$@;#1
endif
@$(call binary_file_verification,$@)
else
#
# Note that we have to link -lthread even when USE_PTHREADS is true.
# This is becuase checkForCorrectLibthread() croaks otherwise.
#
LIBTHREAD = -lthread
ifeq ($(USE_PTHREADS),true)
THREADLIBS = -lpthread $(LIBTHREAD)
else
THREADLIBS = $(LIBTHREAD)
endif
ifeq ($(PLATFORM), macosx)
THREADLIBS = -pthread
# Needed for linking the various launchers
LDFLAGS += -framework Cocoa -framework Security \
-framework ApplicationServices
OTHER_CPPFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"'
# Default Info.plist file for the command line tools. This gets overridden by
# some of the jvmstat tools so that they have task_for_pid() privileges
ifndef INFO_PLIST_FILE
INFO_PLIST_FILE = Info-cmdline.plist
endif
LDFLAGS += -sectcreate __TEXT __info_plist $(LAUNCHER_PLATFORM_SRC)/lib/$(INFO_PLIST_FILE)
else
INFO_PLIST_FILE=
endif
#
# This rule only applies on unix. It supports quantify and its ilk.
#
$(ACTUAL_PROGRAM):: $(FILES_o)
@$(prep-target)
@set -- $?; \
$(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...};
@$(MKDIR) -p $(TEMPDIR)
$(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \
$(FILES_o) $(THREADLIBS) $(LDLIBS)
ifeq ($(findstring privileged, $(INFO_PLIST_FILE)), privileged)
-codesign -s openjdk_codesign $@
endif
@$(call binary_file_verification,$@)
endif # PLATFORM
clean::
ifeq ($(PLATFORM), windows)
$(RM) $(OBJDIR)/$(PROGRAM).rc
$(RM) $(OBJDIR)/$(PROGRAM).ico
$(RM) $(OBJDIR)/$(PROGRAM).lcf
$(RM) $(OBJDIR)/$(PROGRAM).map
$(RM) $(OBJDIR)/$(PROGRAM).exp
$(RM) $(OBJDIR)/$(PROGRAM).lib
$(RM) $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX)
$(RM) $(OBJDIR)/$(PROGRAM).ilk
$(RM) *.pdb
endif
clobber::
$(RM) $(ACTUAL_PROGRAM)
#
# Now include make dependencies (created during compilation, see Rules.gmk)
#
ifeq ($(INCREMENTAL_BUILD),true)
# Workaround: gnumake sometimes says files is empty when it shouldn't
# was: files := $(foreach file, $(wildcard */$(ARCH)/*.$(DEPEND_SUFFIX)), $(file))
files := $(shell $(LS) $(OBJDIR)/*.$(DEPEND_SUFFIX) 2>/dev/null)
ifneq ($(strip $(files)),)
include $(files)
endif
endif
ifdef JAVA_ARGS
OTHER_CPPFLAGS += -DJAVA_ARGS='$(JAVA_ARGS)'
OTHER_CPPFLAGS += -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"'
endif
ifeq ($(PLATFORM), windows)
ifdef RELEASE
OTHER_CPPFLAGS += -DVERSION='"$(RELEASE)"'
endif
endif
ifneq ($(PLATFORM), windows)
HAVE_GETHRTIME=true
endif
ifeq ($(HAVE_GETHRTIME),true)
OTHER_CPPFLAGS += -DHAVE_GETHRTIME
endif
OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)/bin -I$(LAUNCHER_PLATFORM_SRC)/bin
ifeq ($(PLATFORM), macosx)
OTHER_INCLUDES += -I$(LAUNCHER_SOLARIS_PLATFORM_SRC)/bin
ifneq ($(SYSTEM_ZLIB), true)
OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
endif
else
OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
endif
OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
VERSION_DEFINES += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
-DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"'
$(OBJDIR)/main.$(OBJECT_SUFFIX): $(LAUNCHER_SHARE_SRC)/bin/main.c
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$(OBJDIR)/main.$(OBJECT_SUFFIX) \
$(VERSION_DEFINES) $<
#
# Default dependencies
#
all: build
build: program
debug:
$(MAKE) VARIANT=DBG build
fastdebug:
$(MAKE) VARIANT=DBG FASTDEBUG=true build
.PHONY: all build program clean clobber debug fastdebug

View File

@ -0,0 +1,230 @@
#
# Copyright (c) 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.
#
#
# SE-Embedded Reduced JRE targets
#
ifdef JAVASE_EMBEDDED
reduced-image-jre reduced-headless-image-jre ::
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
# Add the reduced-jre images as pre-reqs. These will be processed last
images:: reduced-image-jre reduced-headless-image-jre
######################################################
# Create the headless rt.jar
######################################################
NOT_HEADLESS_RT_JAR_LIST = $(ABS_TEMPDIR)/not_hl_rt_jar.list
HEADLESS_RT_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/hl_rt_jar_list
TOTAL_HEADLESS_JAR_FILELIST=$(REORDER_TEMPDIR)/hl_file_list
HEADLESS_CLASSLIST=$(ABS_TEMPDIR)/headless_classlist
# Add the jar file directories that we don't want in the
# headless JRE. If you want to remove most classes in a
# directory, put the directory in the NOT_HEADLESS_RT_JAR_LIST
# and put the individual classes you want to keep in the
# HEADLESS_CLASSLIST file.
$(NOT_HEADLESS_RT_JAR_LIST): $(NOT_RT_JAR_LIST)
$(RM) $(HEADLESS_CLASSLIST)
$(RM) $(NOT_HEADLESS_RT_JAR_LIST)
$(CP) $(NOT_RT_JAR_LIST) $(NOT_HEADLESS_RT_JAR_LIST)
# List all the packages to be excluded
$(ECHO) "sun/awt/motif/" >> $@
$(ECHO) "sun/awt/X11/" >> $@
$(ECHO) "sun/applet/" >> $@
$(ECHO) "sun/java2d/opengl/" >> $@
$(ECHO) "com/sun/java/swing/plaf/" >> $@
# List all the individual classes to be included
$(ECHO) "sun/awt/motif/MFontConfiguration.class" >$(HEADLESS_CLASSLIST)
$(ECHO) "sun/applet/AppContextCreator.class" >>$(HEADLESS_CLASSLIST)
$(ECHO) "sun/applet/AppletAudioClip.class" >>$(HEADLESS_CLASSLIST)
$(ECHO) "sun/java2d/opengl/GLXSurfaceData.class" >>$(HEADLESS_CLASSLIST)
$(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData.class" >>$(HEADLESS_CLASSLIST)
$(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager.class" >>$(HEADLESS_CLASSLIST)
$(ECHO) "sun/java2d/opengl/OGLSurfaceData.class" >>$(HEADLESS_CLASSLIST)
$(TOTAL_HEADLESS_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_HEADLESS_RT_JAR_LIST)
$(prep-target)
$(RM) $@.temp
$(CD) $(CLASSBINDIR) ; \
$(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \
-o $@.temp - $(NOT_HEADLESS_RT_JAR_LIST) .
# Add on the explicitly included class files from the otherwise excluded packages
$(CAT) $(HEADLESS_CLASSLIST) >> $@.temp
$(MV) $@.temp $@
@$(CD) $(CLASSBINDIR); $(java-vm-cleanup)
# Create the headless rt.jar file list & non-class files list
MakeHeadlessJarFileList: $(TOTAL_HEADLESS_JAR_FILELIST) $(JARSPLIT_JARFILE)
@$(RM) $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST)
$(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) $(TOTAL_HEADLESS_JAR_FILELIST) \
-o $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST)
@$(java-vm-cleanup)
# Create headless rt.jar
HL_RT_JAR=$(ABS_TEMPDIR)/rt-hl-orig.jar
$(HL_RT_JAR): MakeHeadlessJarFileList $(RT_JAR_MANIFEST_FILE)
$(prep-target)
$(CD) $(CLASSBINDIR) ; \
$(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ @$(HEADLESS_RT_JAR_FILELIST) \
$(JAR_JFLAGS)
@$(CD) $(CLASSBINDIR); $(java-vm-cleanup)
#
# Produce a reduced Headful JRE for Embedded Devices
#
# The deployment binaries are added during the deployment build process
#
# Binaries that don't get included in reduced jre image bin directory
NOT_REDUCEDJRE_BIN = \
java_vm \
kinit \
klist \
ktab \
orbd \
policytool \
rmid \
rmiregistry \
servertool \
tnameserv \
pack200 \
unpack200
# jars/resources/libs that don't get included in reduced jre image lib directory
NOT_REDUCEDJRE_LIB = \
charsets.jar \
ext/dnsns.jar \
ext/localedata.jar \
$(LIBARCH)/client/classes.jsa \
$(LIBARCH)/libjavaplugin_jni.so \
$(LIBARCH)/libjavaplugin_nscp_gcc29.so \
$(LIBARCH)/libjavaplugin_nscp.so \
$(LIBARCH)/libjavaplugin_oji.so
# JRE docs that don't get included in reduced jre image top directory
NOT_REDUCEDJRE_DOC = \
Welcome.html
reduced-image-jre::
@$(ECHO) Starting to Produce Reduced JRE
@#
@# First make a copy of the full JRE
@#
$(RM) -r $(JRE_REDUCED_IMAGE_DIR)
$(MKDIR) -p $(JRE_REDUCED_IMAGE_DIR)
$(CD) $(JRE_IMAGE_DIR); \
$(TAR) cf - . | ($(CD) $(JRE_REDUCED_IMAGE_DIR); $(TAR) xf - );
@#
@# Remove all of the files that are not needed for the
@# reduced JRE
@#
for l in $(NOT_REDUCEDJRE_BIN) ; do \
$(RM) $(JRE_REDUCED_IMAGE_DIR)/bin/$$l ; \
done
for l in $(NOT_REDUCEDJRE_LIB) ; do \
$(RM) $(JRE_REDUCED_IMAGE_DIR)/lib/$$l ; \
done
for l in $(NOT_REDUCEDJRE_DOC) ; do \
$(RM) $(JRE_REDUCED_IMAGE_DIR)/$$l ; \
done
@# Remove misc. other files
$(RM) -r $(JRE_REDUCED_IMAGE_DIR)/man
$(RM) -f $(JRE_REDUCED_IMAGE_DIR)/CHANGES
@$(ECHO) Done Creating Reduced JRE
#
# Produce a reduced Headless JRE
#
reduced-headless-image-jre:: $(RT_JAR) $(RESOURCES_JAR) $(BUILD_META_INDEX) $(HL_RT_JAR)
@$(ECHO) Starting to Produce Reduced Headless JRE
@#
@# First make a copy of the reduced JRE we just built
@#
$(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
$(MKDIR) -p $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
$(CD) $(JRE_REDUCED_IMAGE_DIR); \
$(TAR) cf - . | ($(CD) $(JRE_REDUCED_HEADLESS_IMAGE_DIR); $(TAR) xf - );
@# Replace the full rt.jar with the headless rt.jar
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar
$(CP) $(HL_RT_JAR) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar
@#
@# Remove all of the files that are not needed for the
@# reduced Headless JRE
@#
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/gtkhelper
$(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libjsoundalsa.so
$(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/audio
$(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/applet
$(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/awt_robot
$(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libawt_xawt.so
$(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libsplashscreen.so
@# Remove oblique fonts and reduce font support to LucidaSansRegular only
$(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/oblique-fonts
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiBold.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiItalic.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightItalic.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightRegular.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaSansDemiBold.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterBold.ttf
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterRegular.ttf
ifeq ($(PLATFORM), linux)
# put out minimal fonts.dir file for the remaining font
$(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) 6>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-1">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-2">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-4">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-5">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-7">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
$(ECHO) "LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-9">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
endif # Linux
@#
@# all done with JRE reduced headless image
@#
@$(ECHO) Done Creating Reduced Headless JRE
images-clobber::
$(RM) -r $(JRE_REDUCED_IMAGE_DIR)
$(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
.PHONY: reduced-image-jre reduced-headless-image-jre
endif # JAVASE_EMBEDDED

View File

@ -0,0 +1,75 @@
#
# Copyright (c) 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.
#
MANBASEDIRS=$(JDK_TOPDIR)/src/bsd/doc $(IMPORTDOCDIR)
MAN1SUBDIR = man
JA_DIRNAME=ja_JP.UTF-8
# Defines the release targets for Mac OS X build products
JDK_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-bundle/$(THIS_JDK_VERSION).jdk/Contents
JRE_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2re-bundle/$(THIS_JDK_VERSION).jre/Contents
MACOSX_SRC = $(JDK_TOPDIR)/src/macosx
BUNDLE_ID ?= net.java.openjdk
BUNLDE_ID_JRE ?= $(BUNDLE_ID).jre
BUNLDE_ID_JDK ?= $(BUNDLE_ID).jdk
BUNDLE_NAME ?= OpenJDK $(JDK_MINOR_VERSION)
BUNDLE_NAME_JRE ?= $(BUNDLE_NAME)
BUNDLE_NAME_JDK ?= $(BUNDLE_NAME)
BUNDLE_INFO ?= OpenJDK ($(JDK_VERSION))
BUNDLE_INFO_JRE ?= $(BUNDLE_INFO)
BUNDLE_INFO_JDK ?= $(BUNDLE_INFO)
BUNDLE_PLATFORM_VERSION ?= $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION)
BUNDLE_VERSION ?= $(JDK_VERSION)
BUNDLE_VENDOR ?= UNDEFINED
jre-bundle-setup:
$(RM) -r $(JRE_BUNDLE_DIR)
jdk-bundle-setup:
$(RM) -r $(JDK_BUNDLE_DIR)
jre-bundle-files:
$(MKDIR) -p $(JRE_BUNDLE_DIR)/MacOS
ln -s ../Home/lib/jli/libjli.dylib $(JRE_BUNDLE_DIR)/MacOS/
$(CP) -r $(JRE_IMAGE_DIR) $(JRE_BUNDLE_DIR)/Home
$(SED) -e "s/@@ID@@/$(BUNDLE_ID_JRE)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JRE)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JRE)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JRE-Info.plist > $(JRE_BUNDLE_DIR)/Info.plist
/usr/bin/SetFile -a B $(JRE_BUNDLE_DIR)/../
jdk-bundle-files:
$(MKDIR) -p $(JDK_BUNDLE_DIR)/MacOS
ln -s ../Home/jre/lib/jli/libjli.dylib $(JDK_BUNDLE_DIR)/MacOS/
$(CP) -r $(JDK_IMAGE_DIR) $(JDK_BUNDLE_DIR)/Home
$(SED) -e "s/@@ID@@/$(BUNDLE_ID_JDK)/g" -e "s/@@NAME@@/$(BUNDLE_NAME_JDK)/g" -e "s/@@INFO@@/$(BUNDLE_INFO_JDK)/g" -e "s/@@PLATFORM_VERSION@@/$(BUNDLE_PLATFORM_VERSION)/g" -e "s/@@VERSION@@/$(BUNDLE_VERSION)/g" -e "s/@@VENDOR@@/$(BUNDLE_VENDOR)/g" < $(MACOSX_SRC)/bundle/JDK-Info.plist > $(JDK_BUNDLE_DIR)/Info.plist
/usr/bin/SetFile -a B $(JDK_BUNDLE_DIR)/../
EXTRA_IMAGE_TARGETS += jre-bundle-setup jdk-bundle-setup jre-bundle-files jdk-bundle-files
.PHONY: $(EXTRA_JRE_TARGETS) $(EXTRA_IMAGE_TARGETS)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,357 @@
#
# Copyright (c) 1995, 2008, 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.
#
#
#
# Rules shared by all Java makefiles.
#
# Used to apply to source file $<, checks code conventions, issues warnings.
define check-conventions
if [ "$(CONVENTION_WATCH)" = "true" ] ; then \
if [ "`$(CAT) -n -v -t $< | $(EGREP) -v '\@\(\#\)' | $(EGREP) '\^[MLI]'`" != "" ] ; then \
$(ECHO) "WARNING: File contains tabs, ^M, or ^L characters: $<"; \
if [ "$(CONVENTION_DETAILS)" = "true" ] ; then \
$(CAT) -n -v -t $< | $(EGREP) -v '\@\(\#\)' | $(EGREP) '\^[MLI]' ; \
fi; \
fi; \
fi
endef
# Make sure the default rule is all
rules_default_rule: all
#
# Directory set up. (Needed by deploy workspace)
#
$(CLASSDESTDIR) $(CLASSHDRDIR) $(OBJDIR) $(OUTPUTDIR) $(BINDIR) $(LIBDIR) $(LIBDIR)/$(LIBARCH) $(TEMPDIR) $(EXTDIR):
$(MKDIR) -p $@
#
# All source tree areas for java/properties files (a few may be closed)
#
ifeq ($(PLATFORM), macosx)
ifdef OPENJDK
ALL_CLASSES_SRC = $(call JavaSrcDirList,,classes)
else
ALL_CLASSES_SRC = \
$(CLOSED_SHARE_SRC)/classes $(CLOSED_PLATFORM_SRC)/classes \
$(call JavaSrcDirList,,classes)
endif
else
ifdef OPENJDK
ALL_CLASSES_SRC = $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
else
ALL_CLASSES_SRC = \
$(CLOSED_SHARE_SRC)/classes $(CLOSED_PLATFORM_SRC)/classes \
$(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
endif
endif
#
# If AUTO_FILES_PROPERTIES_DIRS used, automatically find properties files
#
ifdef AUTO_FILES_PROPERTIES_DIRS
AUTO_FILES_PROPERTIES_FILTERS1 = $(SCM_DIRs) ',*'
AUTO_FILES_PROPERTIES_FILTERS1 += $(AUTO_PROPERTIES_PRUNE)
FILES_properties_find_filters1 = $(AUTO_FILES_PROPERTIES_FILTERS1:%=-name % -prune -o)
FILES_properties_auto1 := \
$(shell \
for dir in $(ALL_CLASSES_SRC) ; do \
if [ -d $$dir ] ; then \
( $(CD) $$dir; \
for sdir in $(AUTO_FILES_PROPERTIES_DIRS); do \
if [ -d $$sdir ] ; then \
$(FIND) $$sdir $(FILES_properties_find_filters1) \
-name '*.properties' -print ; \
fi ; \
done \
); \
fi; \
done \
)
else
FILES_properties_auto1 =
endif # AUTO_FILES_PROPERTIES_DIRS
# Add any automatically found properties files to the properties file list
FILES_properties += $(FILES_properties_auto1)
#
# Get Resources help
#
include $(JDK_TOPDIR)/makefiles/common/internal/Resources.gmk
#
# Compiling .java files.
#
#
# Automatically add to FILES_java if AUTO_FILES_JAVA_DIRS is defined
#
# There are two basic types of sources, normal source files and the
# generated ones. The Normal sources will be located in:
# $(ALL_CLASSES_SRC)
# The generated sources, which might show up late to dinner, are at:
# $(GENSRCDIR)
# and since they could be generated late, we need to be careful that
# we look for these sources late and not use the ':=' assignment which
# might miss their generation.
ifdef AUTO_FILES_JAVA_DIRS
# Filter out these files or directories
AUTO_FILES_JAVA_SOURCE_FILTERS1 = $(SCM_DIRs) ',*'
AUTO_FILES_JAVA_SOURCE_FILTERS2 =
AUTO_FILES_JAVA_SOURCE_FILTERS1 += $(AUTO_JAVA_PRUNE)
AUTO_FILES_JAVA_SOURCE_FILTERS2 += $(AUTO_JAVA_PRUNE)
# First list is the normal sources that should always be there,
# by using the ':=', which means we do this processing once.
FILES_java_find_filters1 = $(AUTO_FILES_JAVA_SOURCE_FILTERS1:%=-name % -prune -o)
FILES_java_auto1 := \
$(shell \
for dir in $(ALL_CLASSES_SRC) ; do \
if [ -d $$dir ] ; then \
( $(CD) $$dir; \
for sdir in $(AUTO_FILES_JAVA_DIRS); do \
if [ -d $$sdir ] ; then \
$(FIND) $$sdir $(FILES_java_find_filters1) \
-name '*.java' -print ; \
fi ; \
done \
); \
fi; \
done \
)
# Second list is the generated sources that should be rare, but will likely
# show up late and we need to look for them at the last minute, so we
# cannot use the ':=' assigment here. But if this gets expanded multiple
# times, the if tests should make them relatively cheap.
FILES_java_find_filters2 = $(AUTO_FILES_JAVA_SOURCE_FILTERS2:%=-name % -prune -o)
FILES_java_auto2 = \
$(shell \
for dir in $(GENSRCDIR); do \
if [ -d $$dir ] ; then \
( $(CD) $$dir; \
for sdir in $(AUTO_FILES_JAVA_DIRS); do \
if [ -d $$sdir ] ; then \
$(FIND) $$sdir $(FILES_java_find_filters2) \
-name '*.java' -print ; \
fi ; \
done \
); \
fi; \
done \
)
else
FILES_java_auto1 =
FILES_java_auto2 =
endif
# Add all found java sources to FILES_java macro (if AUTO_FILES_JAVA_DIRS used)
FILES_java += $(FILES_java_auto1) $(FILES_java_auto2)
# File that will hold java source names that need compiling
JAVA_SOURCE_LIST=$(TEMPDIR)/.classes.list
# Add a java source to the list
define add-java-file
$(ECHO) "$?" >> $(JAVA_SOURCE_LIST)
$(check-conventions)
endef
ifdef DEMOS
$(CLASSDESTDIR)/%.class: $(SOURCEPATH)/%.java
$(add-java-file)
#Redirect zh_HK java files to tmp directory which created from zh_TW
#$(CLASSDESTDIR)/%_zh_HK.class: $(JDK_L10N_TMP_OUTPUTDIR)/%_zh_HK.java
# $(add-java-file)
else
#
# Rules for closed files
#
# If filenames are duplicated between open/closed workspaces, prefer
# the closed files.
#
# Rule ordering in this Makefile is important: some targets depend
# on closed files replacing open ones, and thus the closed file rules
# must be found before the open ones.
#
# Don't reorder without consulting teams that depend on this behavior.
#
ifndef OPENJDK
$(CLASSDESTDIR)/%.class: $(CLOSED_PLATFORM_SRC)/classes/%.java
$(add-java-file)
$(CLASSDESTDIR)/%.class: $(CLOSED_SHARE_SRC)/classes/%.java
$(add-java-file)
endif
$(CLASSDESTDIR)/%.class: $(GENSRCDIR)/%.java
$(add-java-file)
ifeq ($(PLATFORM), macosx)
$(CLASSDESTDIR)/%.class: $(JDK_TOPDIR)/src/macosx/classes/%.java
$(add-java-file)
endif
$(CLASSDESTDIR)/%.class: $(PLATFORM_SRC)/classes/%.java
$(add-java-file)
$(CLASSDESTDIR)/%.class: $(SHARE_SRC)/classes/%.java
$(add-java-file)
#Redirect zh_HK java files to tmp directory which created from zh_TW
$(CLASSDESTDIR)/%_zh_HK.class: $(JDK_L10N_TMP_OUTPUTDIR)/%_zh_HK.java
$(add-java-file)
endif
# List of class files needed
FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
# Got to include exported files.
FILES_class += $(FILES_export:%.java=$(CLASSDESTDIR)/%.class)
# Construct list of java sources we need to compile
source_list_prime:
mkdir -p $(TEMPDIR)
# Note that we slip resources in so that compiled properties files get created:
$(JAVA_SOURCE_LIST) : source_list_prime resources $(FILES_class)
touch $@
.delete.classlist:
rm -f $(JAVA_SOURCE_LIST)
# Make sure all newer sources are compiled (in a batch)
classes : $(CLASSES_INIT) .delete.classlist .compile.classlist
.compile.classlist : $(JAVA_SOURCE_LIST)
$(MKDIR) -p $(CLASSDESTDIR)
$(RM) $<.filtered
$(CAT) $< | $(NAWK) 'length>0' | $(SORT) -u > $<.filtered
numfiles=`$(WC) -l < $<.filtered` ; \
if [ $$numfiles -ge 1 ] ; then \
$(ECHO) "# Java sources to be compiled: (listed in file $<)"; \
$(CAT) $<.filtered; \
$(ECHO) "# Running javac: $$numfiles files; in $(CURDIR)"; \
$(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
$(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered && \
$(ECHO) "# javac finished"; \
fi
$(java-vm-cleanup)
clobber clean::
rm -f $(JAVA_SOURCE_LIST)
ifndef DONT_CLOBBER_CLASSES
ifndef PACKAGE
DONT_CLOBBER_CLASSES = true
else
DONT_CLOBBER_CLASSES = false
endif
endif
packages.clean:
ifeq ($(DONT_CLOBBER_CLASSES),false)
ifdef AUTO_FILES_JAVA_DIRS
for sdir in $(AUTO_FILES_JAVA_DIRS); do \
echo "rm -f -r $(CLASSDESTDIR)/$$sdir"; \
rm -f -r $(CLASSDESTDIR)/$$sdir; \
done
else
rm -f -r $(CLASSDESTDIR)/$(PKGDIR)
endif
endif
ifdef DEMOS
classes.clean:
rm -f -r $(DEMODST) $(CLASSDESTDIR)
else
classes.clean: packages.clean
rm -f $(JAVA_SOURCE_LIST)
endif
#
# C and C++ make dependencies
#
include $(JDK_TOPDIR)/makefiles/common/internal/NativeCompileRules.gmk
#
# Running Javah to generate stuff into CClassHeaders.
#
ifdef FILES_export
CLASSES.export = $(subst /,.,$(FILES_export:%.java=%))
CLASSES.export += $(subst /,.,$(FILES_export2:%.java=%))
CLASSES.export += $(subst /,.,$(FILES_export3:%.java=%))
CLASSES_export = $(FILES_export:%.java=$(CLASSDESTDIR)/%.class)
CLASSES_export += $(FILES_export2:%.java=$(CLASSDESTDIR)/%.class)
CLASSES_export += $(FILES_export3:%.java=$(CLASSDESTDIR)/%.class)
# Fix when deploy workspace makefiles don't depend on this name
#CLASSHDR_DOTFILE=$(CLASSHDRDIR)/.classheaders
CLASSHDR_DOTFILE=$(OBJDIR)/.class.headers.$(ARCH)
classheaders: classes $(CLASSHDR_DOTFILE)
$(CLASSHDR_DOTFILE): $(CLASSES_export)
$(prep-target)
echo "# Running javah:"
echo $(UNCYGDRIVE) $(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
$(UNCYGDRIVE) $(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
$(java-vm-cleanup)
touch $@
classheaders.clean:
rm -f $(CLASSHDR_DOTFILE)
rm -f -r $(CLASSHDRDIR)
else # FILES_export
classheaders: classes
classheaders.clean:
endif # FILES_export
clean clobber:: classheaders.clean classes.clean .delete.classlist
#
# Default dependencies
#
all: build
build: classheaders
default: all
.PHONY: all build clean clobber \
.delete.classlist classes .compile.classlist classes.clean \
classheaders classheaders.clean \
batch_compile

View File

@ -0,0 +1,148 @@
# Copyright (c) 2010, 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.
#
#
# Generic makefile for building subdirectories.
#
# SUBDIRS variables to specify the subdirectories to build recursively.
# Makefile has to include Subdirs.gmk AFTER all SUBDIRS variables are
# defined.
#
# This file does not contain any rule.
#
# WARNING: This file is shared with other workspaces.
# So when it includes other files, it must use JDK_TOPDIR.
#
# SUBDIRS subdirs for the base module always get built
# SUBDIRS_<group> subdirs for the named group
#
# By default, subdirs specified in the SUBDIRS and all SUBDIRS_*
# variables will be built.
#
# Variables of the currently supported groups are:
# SUBDIRS_desktop
# SUBDIRS_management
# SUBDIRS_enterprise
# SUBDIRS_misc
# SUBDIRS_tools
#
# Change to the above list also need to update
# make/common/shared/Sanity.gmk. NOTE: this list is subject
# to change.
#
# Eventually we want to restructure the make directory
# according to these grouping (e.g. make/desktop/...) and
# the SUBDIRS_<group> variables would not be needed.
#
# Iterate the subdirectories specified in $1.
# - cd into each subdir and make them
# Given a SUBDIRS* list (first argument), cd into them and make them
# SUBDIRS_MAKEFLAGS Make settings for a subdir make
# SUBDIRS_MAKEFLAGS-$@ Make settings specific to this target
#
define subdirs-group-loop
$(ECHO) "Begin Processing SUBDIRS: $($1)"
for i in DUMMY $($1) ; do \
if [ "$$i" != "DUMMY" ] ; then \
$(MAKE) -C $$i $@ $(SUBDIRS_MAKEFLAGS) $(SUBDIRS_MAKEFLAGS-$@) \
FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \
fi ; \
done
$(ECHO) "Done Processing SUBDIRS: $($1)"
endef
# Given a OTHERSUBDIRS list, cd into them and make them (extra loop define)
# OTHERSUBDIRS_MAKEFLAGS Make settings for a subdir make
define OTHERSUBDIRS-loop
$(ECHO) "Begin Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
for i in DUMMY $(OTHERSUBDIRS) ; do \
if [ "$$i" != "DUMMY" ] ; then \
$(MAKE) -C $$i $@ $(OTHERSUBDIRS_MAKEFLAGS) \
FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \
fi ; \
done
$(ECHO) "Done Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
endef
#
# Iterate the list specified in SUBDIRS_<group> only if
# SUBDIRS_<group> is set.
#
ifdef SUBDIRS_desktop
define subdirs-desktop-loop
$(call subdirs-group-loop,SUBDIRS_desktop)
endef
else
define subdirs-desktop-loop
endef
endif # SUBDIRS_desktop
ifdef SUBDIRS_enterprise
define subdirs-enterprise-loop
$(call subdirs-group-loop,SUBDIRS_enterprise)
endef
else
define subdirs-enterprise-loop
endef
endif # SUBDIRS_enterprise
ifdef SUBDIRS_management
define subdirs-management-loop
$(call subdirs-group-loop,SUBDIRS_management)
endef
else
define subdirs-management-loop
endef
endif # SUBDIRS_management
ifdef SUBDIRS_misc
define subdirs-misc-loop
$(call subdirs-group-loop,SUBDIRS_misc)
endef
else
define subdirs-misc-loop
endef
endif # SUBDIRS_misc
ifdef SUBDIRS_tools
define subdirs-tools-loop
$(call subdirs-group-loop,SUBDIRS_tools)
endef
else
define subdirs-tools-loop
endef
endif # SUBDIRS_tools
#
# If BUILD_MODULES is not set or it's set to "all",
# iterate all groups.
SUBDIRS_all = $(SUBDIRS) $(SUBDIRS_desktop) $(SUBDIRS_enterprise) \
$(SUBDIRS_management) $(SUBDIRS_misc) $(SUBDIRS_tools)
define SUBDIRS-loop
$(call subdirs-group-loop,SUBDIRS_all)
endef

View File

@ -0,0 +1,63 @@
#
# Copyright (c) 1997, 2007, 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.
#
# The specific packages that come from or go to rt.jar and tools.jar
IMPORT_RT_PACKAGES += \
org/omg/CORBA \
org/omg/CORBA_2_3 \
org/omg/CosNaming \
org/omg/Dynamic \
org/omg/DynamicAny \
org/omg/IOP \
org/omg/Messaging \
org/omg/PortableInterceptor \
org/omg/PortableServer \
org/omg/SendingContext \
org/omg/stub/java/rmi \
javax/rmi \
javax/rmi/CORBA \
javax/activity \
javax/transaction \
com/sun/corba/se/GiopIDL \
com/sun/corba/se/PortableActivationIDL \
com/sun/corba/se/impl \
com/sun/corba/se/internal \
com/sun/corba/se/org/omg/CORBA \
com/sun/corba/se/pept \
com/sun/corba/se/spi \
com/sun/org/omg/CORBA \
com/sun/org/omg/SendingContext \
com/sun/tools/corba/se/logutil \
sun/corba \
sun/rmi/rmic/iiop
IMPORT_TOOLS_PACKAGES += \
com/sun/tools/corba/se/idl \
sun/rmi/rmic/iiop
IMPORT_CORBA_BINARIES += \
lib/orb.idl \
lib/ir.idl

View File

@ -0,0 +1,53 @@
#
# Copyright (c) 1997, 2007, 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.
#
# The specific packages that come from or go to rt.jar and tools.jar
IMPORT_RT_PACKAGES += \
org/w3c/dom \
org/xml/sax \
javax/xml/XMLConstants.class \
javax/xml/datatype \
javax/xml/namespace \
javax/xml/parsers \
javax/xml/stream \
javax/xml/transform \
javax/xml/validation \
javax/xml/xpath \
com/sun/java_cup \
com/sun/org/apache/bcel \
com/sun/org/apache/regexp \
com/sun/org/apache/xalan \
com/sun/org/apache/xerces \
com/sun/org/apache/xml/internal/dtm \
com/sun/org/apache/xml/internal/res \
com/sun/org/apache/xml/internal/resolver \
com/sun/org/apache/xml/internal/serialize \
com/sun/org/apache/xml/internal/serializer \
com/sun/org/apache/xml/internal/utils \
com/sun/org/apache/xpath \
com/sun/xml/internal/stream
IMPORT_TOOLS_PACKAGES +=

View File

@ -0,0 +1,63 @@
#
# 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.
#
# The specific packages that come from or go to rt.jar and tools.jar
IMPORT_RT_PACKAGES += \
META-INF/mailcap.default \
META-INF/mimetypes.default \
javax/activation \
com/sun/activation \
javax/xml/bind \
javax/xml/soap \
javax/xml/ws \
javax/jws \
javax/annotation \
com/sun/xml/internal/bind \
com/sun/xml/internal/fastinfoset \
com/sun/xml/internal/messaging \
com/sun/xml/internal/org/jvnet \
com/sun/xml/internal/txw2 \
com/sun/xml/internal/ws \
com/sun/xml/internal/stream/buffer
NOT_USED_PACKAGES += \
com/sun/tools/internal/txw2
IMPORT_TOOLS_PACKAGES += \
com/sun/codemodel \
com/sun/istack/internal/tools \
com/sun/xml/internal/rngom \
com/sun/xml/internal/xsom \
com/sun/xml/internal/dtdparser \
com/sun/tools/internal/xjc \
com/sun/tools/internal/ws \
com/sun/tools/internal/jxc \
org/relaxng \
META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin \
META-INF/services/com.sun.tools.internal.xjc.Plugin \
com/sun/tools/internal/jxc/ap \
com/sun/tools/internal/ws/wscompile/plugin/at_generated

View File

@ -0,0 +1,42 @@
#
# Copyright (c) 1997, 2008, 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.
#
# The specific packages that come from or go to rt.jar and tools.jar
IMPORT_RT_PACKAGES += \
javax/annotation/processing \
javax/lang/model \
javax/tools
IMPORT_TOOLS_PACKAGES += \
com/sun/javadoc \
com/sun/source \
com/sun/tools/classfile \
com/sun/tools/doclets \
com/sun/tools/javac \
com/sun/tools/javadoc \
com/sun/tools/javah \
com/sun/tools/javap

View File

@ -0,0 +1,173 @@
#
# Copyright (c) 1997, 2008, 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.
#
-include $(SPEC)
# JDK jars where component classes come from as second choice
JDK_RT_JAR = $(JDK_IMPORT_PATH)/jre/lib/rt.jar
JDK_TOOLS_JAR = $(JDK_IMPORT_PATH)/lib/tools.jar
JDK_RESOURCES_JAR = $(JDK_IMPORT_PATH)/jre/lib/resources.jar
# The specific packages that come from or go to rt.jar and tools.jar
# IF the component deliverables are not available.
IMPORT_TOOLS_PACKAGES =
IMPORT_RT_PACKAGES =
# The following will add to IMPORT_TOOLS_PACKAGES and/or IMPORT_RT_PACKAGES
ifndef LANGTOOLS_DIST
include $(BUILDDIR)/common/internal/Defs-langtools.gmk
endif
ifndef CORBA_DIST
include $(BUILDDIR)/common/internal/Defs-corba.gmk
endif
ifndef JAXP_DIST
include $(BUILDDIR)/common/internal/Defs-jaxp.gmk
endif
ifndef JAXWS_DIST
include $(BUILDDIR)/common/internal/Defs-jaxws.gmk
endif
# Clean up these lists so empty lists are empty
IMPORT_TOOLS_PACKAGES := $(strip $(IMPORT_TOOLS_PACKAGES))
IMPORT_RT_PACKAGES := $(strip $(IMPORT_RT_PACKAGES))
# Relative paths to import component deliverables
CLASSES_JAR_FILE=lib/classes.jar
SRC_ZIP_FILE=lib/src.zip
BIN_ZIP_FILE=lib/bin.zip
DOC_ZIP_FILE=lib/doc.zip
#################################################################
# Macros:
# Importing component class files
define import-one-classes
if [ "$($1)" != "" ] ; then \
$(ECHO) "Importing classes from component $1"; \
$(call Unjar,$2,$($1)/$(CLASSES_JAR_FILE),); \
fi
endef
# Importing optional component doc files (for man pages?)
define import-one-docs
if [ "$($1)" != "" -a -f $($1)/$(DOC_ZIP_FILE) ] ; then \
$(ECHO) "Importing docs from component $1"; \
$(call Unzipper,$2,$($1)/$(DOC_ZIP_FILE)); \
fi
endef
# Importing optional component src files (for jdk src.zip and javadoc)
define import-one-sources
if [ "$($1)" != "" ] ; then \
$(ECHO) "Importing sources from component $1"; \
$(call Unzipper,$2,$($1)/$(SRC_ZIP_FILE)); \
fi
endef
# Importing optional component bin files (for install image)
define import-one-binaries
if [ "$($1)" != "" -a -f $($1)/$(BIN_ZIP_FILE) ] ; then \
$(ECHO) "Importing binaries from component $1"; \
$(call Unzipper,$2,$($1)/$(BIN_ZIP_FILE)); \
fi
endef
# Unzip zip file $2 into directory $1 (if $2 exists)
# Warning: $2 must be absolute path not relative
define Unzipper
( \
$(MKDIR) -p $1; \
( $(CD) $1 && $(UNZIP) -o $2 > /dev/null ) \
)
endef
# Unjar directories $3 from jar file $2 into directory $1 (if $2 exists)
# Warning: $2 must be absolute path not relative
define Unjar
( \
$(MKDIR) -p $1; \
( $(CD) $1 && $(BOOT_JAR_CMD) xf $2 $3 $(BOOT_JAR_JFLAGS) ) && \
( $(CD) $1 && $(java-vm-cleanup) ) \
)
endef
# Import all component sources into directory $1
define import-component-sources
$(call import-one-sources,LANGTOOLS_DIST,$1)
$(call import-one-sources,CORBA_DIST,$1)
$(call import-one-sources,JAXP_DIST,$1)
$(call import-one-sources,JAXWS_DIST,$1)
endef
# Import all component docs into directory $1 (optional)
define import-component-docs
$(call import-one-docs,LANGTOOLS_DIST,$1)
$(call import-one-docs,CORBA_DIST,$1)
$(call import-one-docs,JAXP_DIST,$1)
$(call import-one-docs,JAXWS_DIST,$1)
endef
# Import all component bins into directory $1 (optional)
define import-component-binaries
$(call import-one-binaries,LANGTOOLS_DIST,$1)
$(call import-one-binaries,CORBA_DIST,$1)
$(call import-one-binaries,JAXP_DIST,$1)
$(call import-one-binaries,JAXWS_DIST,$1)
if [ "$(CORBA_DIST)" = "" ] ; then \
$(MKDIR) -p $(OUTPUTDIR)/lib ; \
( $(CD) $(JDK_IMPORT_PATH) && $(CP) $(IMPORT_CORBA_BINARIES) $(ABS_OUTPUTDIR)/lib ) ; \
fi
endef
# Import all component classes into directory $1
# Here we special case classes coming from JDK when component not supplied
define import-component-classes
$(ECHO) "Import classes from $(JDK_IMPORT_PATH)"
if [ "$(IMPORT_TOOLS_PACKAGES)" != "" ] ; then \
$(call Unjar,$1,$(JDK_RESOURCES_JAR),$(IMPORT_TOOLS_PACKAGES)); \
$(call Unjar,$1,$(JDK_TOOLS_JAR),$(IMPORT_TOOLS_PACKAGES)); \
fi
if [ "$(IMPORT_RT_PACKAGES)" != "" ] ; then \
$(call Unjar,$1,$(JDK_RESOURCES_JAR),$(IMPORT_RT_PACKAGES)); \
$(call Unjar,$1,$(JDK_RT_JAR),$(IMPORT_RT_PACKAGES)); \
fi
$(call import-one-classes,LANGTOOLS_DIST,$1)
$(call import-one-classes,CORBA_DIST,$1)
$(call import-one-classes,JAXP_DIST,$1)
$(call import-one-classes,JAXWS_DIST,$1)
endef
# Clean up import files
define import-component-sources-clean
$(RM) -r $1
endef
define import-component-docs-clean
$(RM) -r $1
endef
define import-component-classes-clean
$(RM) -r $(IMPORT_TOOLS_PACKAGES:%=$1/%)
$(RM) -r $(IMPORT_RT_PACKAGES:%=$1/%)
endef

View File

@ -0,0 +1,238 @@
#
# Copyright (c) 1995, 2007, 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.
#
#
# Native C/C++ Compile Rules
#
-include $(SPEC)
-include $(VARS)
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
#
# INCREMENTAL_BUILD: Record the #include file dependencies.
#
# NOTE: We build make include files with the suffix
# $(DEPEND_SUFFIX) on every compilation. These are initially
# created as temp files just in case a ^C kills it in the middle.
# Compiler is smart enough to handle ^C and not create the .o file, or
# is supposed to be that smart, but the .$(DEPEND_SUFFIX) file
# creation here isn't.
# These .$(DEPEND_SUFFIX) files are included by Library.gmk and
# Program.gmk, when they exist (Search for 'make dependencies').
#
ifeq ($(INCREMENTAL_BUILD),true)
$(OBJDIR)/%.$(DEPEND_SUFFIX): %.c
@$(prep-target)
@$(ECHO) "Creating $@"
@$(RM) $@.temp
@$(CC) $(CC_DEPEND) $(CPPFLAGS) $< 2> $(DEV_NULL) | \
$(CC_DEPEND_FILTER) > $@.temp
@$(MV) $@.temp $@
$(OBJDIR)/%.$(DEPEND_SUFFIX): %.cpp
@$(prep-target)
@$(ECHO) "Creating $@"
@$(RM) $@.temp
@$(CXX) $(CC_DEPEND) $(CPPFLAGS) $(CXXFLAGS) $< 2> $(DEV_NULL) | \
$(CC_DEPEND_FILTER) > $@.temp
@$(MV) $@.temp $@
endif # INCREMENTAL_BUILD
#
# C, C++, asm files.
#
# Normal or parallel compile rule is the same, but batch compiles require
# we save up the sources files that use the same compile line so that we
# can do one compile line.
#
ifneq ($(COMPILE_APPROACH), batch)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.c
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
@$(check-conventions)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
@$(prep-target)
$(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
@$(check-conventions)
else
#
# Batch compiling might be faster if the compiler was smart about recognizing
# optimization opportunities available when all files are being compiled
# the same way. Unfortunately this is rare.
# Automatic pre-compiled headers (pch) might be a possibility so we
# add any auto pch options here.
# So we save all the source files that have the same compile line as the
# first file. A normal compile pass is made after the batch compile
# to catch anything missed.
# If the compilers had a -o option that allowed us to direct where to
# write the object files to, then we would not need to save the object
# file list or move them from the make directory to the build directory.
#
# Source names
COMPILE_LIST.c = $(OBJDIR)/.source_names_c
COMPILE_LIST.cpp = $(OBJDIR)/.source_names_cpp
# Object file list
COMPILE_OBJ_LIST.c = $(OBJDIR)/.obj_names_c
COMPILE_OBJ_LIST.cpp = $(OBJDIR)/.obj_names_cpp
# The compile line
COMPILE_BATCH.c = $(OBJDIR)/.compile_c
COMPILE_BATCH.cpp = $(OBJDIR)/.compile_cpp
# The compile line for the current target
THIS_COMPILE_BATCH.c = $(COMPILE_BATCH.c)-$(@F)
THIS_COMPILE_BATCH.cpp = $(COMPILE_BATCH.cpp)-$(@F)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.c
@$(prep-target)
@$(ECHO) "$(COMPILE.c) $(CFLAGS_GPROF)" > $(THIS_COMPILE_BATCH.c)
@if [ ! -s $(COMPILE_BATCH.c) ] ; then \
$(CP) $(THIS_COMPILE_BATCH.c) $(COMPILE_BATCH.c) ; \
$(ECHO) $< > $(COMPILE_LIST.c); \
$(ECHO) $(@F) > $(COMPILE_OBJ_LIST.c); \
elif [ "`$(DIFF) -w -b $(THIS_COMPILE_BATCH.c) $(COMPILE_BATCH.c)`" \
= "" ] ; then \
$(ECHO) $< >> $(COMPILE_LIST.c); \
$(ECHO) $(@F) >> $(COMPILE_OBJ_LIST.c); \
fi
@$(RM) $(THIS_COMPILE_BATCH.c)
@$(check-conventions)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
@$(prep-target)
@$(ECHO) "$(COMPILE.cc) $(CFLAGS_GPROF)" > $(THIS_COMPILE_BATCH.cpp)
@if [ ! -s $(COMPILE_BATCH.cpp) ] ; then \
$(CP) $(THIS_COMPILE_BATCH.cpp) $(COMPILE_BATCH.cpp) ; \
$(ECHO) $< > $(COMPILE_LIST.cpp); \
$(ECHO) $(@F) > $(COMPILE_OBJ_LIST.cpp); \
elif [ "`$(DIFF) -w -b $(THIS_COMPILE_BATCH.cpp) $(COMPILE_BATCH.cpp)`"\
= "" ] ; then \
$(ECHO) $< >> $(COMPILE_LIST.cpp); \
$(ECHO) $(@F) >> $(COMPILE_OBJ_LIST.cpp); \
fi
@$(RM) $(THIS_COMPILE_BATCH.cpp)
@$(check-conventions)
batch_compile: $(FILES_o)
@$(ECHO) "Doing batch compilations"
@if [ -s $(COMPILE_LIST.c) ] ; then \
$(ECHO) "$(COMPILE.c) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
`$(CAT) $(COMPILE_LIST.c)`" ; \
( $(COMPILE.c) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
`$(CAT) $(COMPILE_LIST.c)` && \
$(ECHO) "$(MV) `$(CAT) $(COMPILE_OBJ_LIST.c)` $(OBJDIR)" && \
$(MV) `$(CAT) $(COMPILE_OBJ_LIST.c)` $(OBJDIR) ) || exit 1 ; \
fi
@if [ -s $(COMPILE_LIST.cpp) ] ; then \
$(ECHO) "$(COMPILE.cc) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
`$(CAT) $(COMPILE_LIST.cpp)`" ; \
( $(COMPILE.cc) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
`$(CAT) $(COMPILE_LIST.cpp)` && \
$(ECHO) "$(MV) `$(CAT) $(COMPILE_OBJ_LIST.cpp)` $(OBJDIR)" && \
$(MV) `$(CAT) $(COMPILE_OBJ_LIST.cpp)` $(OBJDIR) ) || exit 1 ; \
fi
@$(RM) $(COMPILE_BATCH.c) $(COMPILE_LIST.c) $(COMPILE_OBJ_LIST.c)
@$(RM) $(COMPILE_BATCH.cpp) $(COMPILE_LIST.cpp) $(COMPILE_OBJ_LIST.cpp)
endif
# newer as does not handle c++ style comments
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.s
ifneq ($(CC_VERSION), gcc)
@$(prep-target)
$(COMPILE.s) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
else
@$(prep-target)
$(CPP) -x assembler-with-cpp $< | $(COMPILE.s) -o $@
endif
@$(check-conventions)
# Obj-C files (Mac OS X only).
ifeq ($(PLATFORM), macosx)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.m
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
@$(check-conventions)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.mm
@$(prep-target)
$(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
@$(check-conventions)
$(OBJDIR)/%.$(OBJECT_SUFFIX): %.c
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
@$(check-conventions)
endif # PLATFORM
#
# Quick hack for making the compiler generate just the assembly file.
# $ gnumake obj/sparc/myfile.s
#
$(OBJDIR)/%.s: %.c
@$(prep-target)
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ -S $<
@$(check-conventions)
# remove the intermediate files from the directories.
# (If VARIANT=OPT, this removes all debug and fastdebug files too)
clobber clean::
$(RM) -r $(OBJDIR)
$(RM) -r $(OBJDIR)_*
#
# Lint support
# (The 'lint' rule below is an older rule not using the .$(LINT_SUFFIX) files)
#
ifeq ($(PLATFORM), solaris)
$(OBJDIR)/%.$(LINT_SUFFIX): %.c
@$(prep-target)
$(LINT.c) -dirout=$(OBJDIR) -c $<
lint.clean:
$(RM) $(OBJDIR)/*.$(LINT_SUFFIX)
# Old rule
lint: $(FILES_c)
ifneq ($(FILES_c),)
$(LINT.c) -Ncheck -Nlevel=3 $? $(LDLIBS) > lint.$(ARCH) 2>&1
endif
endif
.PHONY: batch_compile

View File

@ -0,0 +1,262 @@
#
# Copyright (c) 1997, 2010, 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.
#
#
# Generic mechanism for installing properties files, resource bundles,
# and other resource files.
#
# FILES_properties should be defined.
# FILES_compiled_properties should be defined.
#
# If COMPILED_PROPERTIES_SUPERCLASS is defined, ALL the FILES_properties
# files will be compiled into java with this super class.
#
# You can add locales to LOCALE_SUFFIXES explicitly, or use the
# LOCALE_SET_DEFINITION variable to add some pre-defined locale lists.
# The LOCALE_SET_DEFINITION can have the value: jre, plugin, or jdk.
#
# Resource bundles to be installed are identified using the following variables.
# Note that only the file name of the base bundle is given; localized versions
# are added automatically. For Java files, use a format suitable for inclusion
# in the FILES_java list; dito for properties, all relative paths.
#
# NEW_RESOURCE_BUNDLES_JAVA - new resource bundles implemented in
# Java, not localized
# RESOURCE_BUNDLES_JAVA - resource bundles implemented in
# Java, localized
#
# The following variable is now used for most .properties files in the JDK.
# These properties files are converted into java and compiled with javac.
# The resulting .class files are usually smaller and are always faster to load.
# The relative path to the properties file becomes a relative path to a
# java source file.
#
# RESOURCE_BUNDLES_COMPILED_PROPERTIES - resource bundles implemented as
# properties files, localized
# NEW_RESOURCE_BUNDLES_COMPILED_PROPERTIES - same as above, not localized
#
# For non-compiled properties files, use the following variables:
#
# NEW_RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES - new resource bundles implemented as
# properties files, not localized
# RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES - resource bundles implemented as
# properties files, localized
#
# Other properties files to be installed are identified using the variable:
#
# OTHER_PROPERTIES
#
include $(SPEC)
include $(SRC_ROOT)/jdk/makefiles/Tools.gmk
# Compile properties files into java source?
ifdef COMPILED_PROPERTIES_SUPERCLASS
# Add all properties files to the compiled properties list (all or nothing)
COMPILED_PROPERTIES += $(FILES_compiled_properties) $(FILES_properties)
else
COMPILED_PROPERTIES_SUPERCLASS = ListResourceBundle
COMPILED_PROPERTIES += $(FILES_compiled_properties)
endif
# Determine the locale suffixes needed beyond the base bundle
ifeq ($(LOCALE_SET_DEFINITION), plugin)
LOCALE_SUFFIXES += $(PLUGIN_LOCALES)
endif
ifeq ($(LOCALE_SET_DEFINITION), jdk)
LOCALE_SUFFIXES += $(JDK_LOCALES)
endif
ifeq ($(LOCALE_SET_DEFINITION), jre)
LOCALE_SUFFIXES += $(JRE_LOCALES)
endif
# Java files get tacked onto the standard list of files to compile
RESOURCE_BUNDLE_FILES_java += $(NEW_RESOURCE_BUNDLES_JAVA)
RESOURCE_BUNDLE_FILES_java += $(RESOURCE_BUNDLES_JAVA) \
$(foreach file,$(RESOURCE_BUNDLES_JAVA), \
$(foreach locale,$(LOCALE_SUFFIXES), \
$(basename $(file))_$(locale).java))
# Add to java sources list
FILES_java += $(RESOURCE_BUNDLE_FILES_java)
# Compiled properties files are translated to .java.
# The .java files are generated into GENSRCDIR.
COMPILED_PROPERTIES += $(NEW_RESOURCE_BUNDLES_COMPILED_PROPERTIES)
COMPILED_PROPERTIES += $(RESOURCE_BUNDLES_COMPILED_PROPERTIES) \
$(foreach file,$(RESOURCE_BUNDLES_COMPILED_PROPERTIES),\
$(foreach locale,$(LOCALE_SUFFIXES),\
$(basename $(file))_$(locale)$(suffix $(file))))
# Add to java sources list
FILES_java += $(COMPILED_PROPERTIES:%.properties=%.java)
# Non-compiled files
PROPERTIES_FILES += $(NEW_RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES)
PROPERTIES_FILES += $(RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES) \
$(foreach file,$(RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES), \
$(foreach locale,$(LOCALE_SUFFIXES), \
$(basename $(file))_$(locale)$(suffix $(file))))
# other properties
PROPERTIES_FILES += $(OTHER_PROPERTIES)
#
# Process and strip all non-compiled properties files (in a batch mode)
#
STRIP_PROP_FILES = $(PROPERTIES_FILES:%=$(CLASSDESTDIR)/%)
# To efficiently strip properties we use one run of StripProperties.
# This macro gathers an option for use later.
STRIP_PROP_options=$(TEMPDIR)/strip_prop_options
define install-properties-file
$(install-file)
$(call chmod-file, a+rw)
@$(ECHO) "# Adding to strip properties list: $@"
$(ECHO) "$@" >> $(STRIP_PROP_options)
endef
# Constructs command line options file
$(STRIP_PROP_options): $(STRIP_PROP_FILES)
@$(TOUCH) $@
strip_prop_options_clean:
@$(RM) $(STRIP_PROP_options)
# Strip the properties files
strip_all_props: $(BUILD_TOOLS) $(STRIP_PROP_options)
@if [ -s $(STRIP_PROP_options) ] ; then \
$(ECHO) "$(TOOL_STRIPPROPERTIES) @$(STRIP_PROP_options)" ; \
$(TOOL_STRIPPROPERTIES) @$(STRIP_PROP_options) ; \
fi
@$(java-vm-cleanup)
#
# Creates files in CLASSDESTDIR
#
# In some cases, we move files from package to resources subdir
$(CLASSDESTDIR)/$(PKGDIR)/resources/%.properties: \
$(SHARE_SRC)/classes/$(PKGDIR)/%.properties
$(install-properties-file)
$(CLASSDESTDIR)/%.properties: $(SHARE_SRC)/classes/%.properties
$(install-properties-file)
$(CLASSDESTDIR)/%.res: $(SHARE_SRC)/classes/%.res
$(install-file)
$(CLASSDESTDIR)/%.dtd: $(SHARE_SRC)/classes/%.dtd
$(install-file)
$(CLASSDESTDIR)/%.xml: $(SHARE_SRC)/classes/%.xml
$(install-file)
$(CLASSDESTDIR)/%.prp: $(SHARE_SRC)/classes/%.prp
$(install-file)
#
# To efficiently compile properties into java sources we use one run
# of compileproperties. This macro gathers an option for use later.
# Note: The properties file and java source name can be different
# locales, e.g. zh_TW and zh_HK. The java source filename
# determines the name of the class.
COMPILE_PROP_options=$(TEMPDIR)/compile_prop_options
define add-property-java-file
@$(prep-target)
@$(ECHO) "# Adding to compile properties list: $? -> $@"
$(ECHO) "-compile $? $@ $(COMPILED_PROPERTIES_SUPERCLASS)" \
>> $(COMPILE_PROP_options)
endef
$(GENSRCDIR)/%.java: $(PLATFORM_SRC)/classes/%.properties
$(add-property-java-file)
$(GENSRCDIR)/%.java: $(SHARE_SRC)/classes/%.properties
$(add-property-java-file)
$(GENSRCDIR)/%.java: $(GENSRCDIR)/%.properties
$(add-property-java-file)
ifndef OPENJDK
$(GENSRCDIR)/%.java: $(CLOSED_PLATFORM_SRC)/classes/%.properties
$(add-property-java-file)
$(GENSRCDIR)/%.java: $(CLOSED_SHARE_SRC)/classes/%.properties
$(add-property-java-file)
endif
# Create HK java file from zh_TW (explicit resource bundles only)
define create-hk-java-file
@$(prep-target)
$(CAT) $< | $(SED) -e '/class/s/_zh_TW/_zh_HK/' > $@
endef
# Explicit resource bundles
$(GENSRCDIR)/%_zh_HK.java: $(PLATFORM_SRC)/classes/%_zh_TW.java
$(create-hk-java-file)
$(GENSRCDIR)/%_zh_HK.java: $(SHARE_SRC)/classes/%_zh_TW.java
$(create-hk-java-file)
# Compile of zh_HK properties just uses the zh_TW properties files
$(GENSRCDIR)/%_zh_HK.java: $(PLATFORM_SRC)/classes/%_zh_TW.properties
$(add-property-java-file)
$(GENSRCDIR)/%_zh_HK.java: $(SHARE_SRC)/classes/%_zh_TW.properties
$(add-property-java-file)
# Simple delivery of zh_HK properties files just copies zh_TW properties files
$(CLASSDESTDIR)/%_zh_HK.properties: \
$(PLATFORM_SRC)/classes/%_zh_TW.properties
$(install-properties-file)
$(CLASSDESTDIR)/%_zh_HK.properties: \
$(SHARE_SRC)/classes/%_zh_TW.properties
$(install-properties-file)
# List of java files converted from properties files needed
COMPILE_PROP_JAVA_FILES = $(COMPILED_PROPERTIES:%.properties=$(GENSRCDIR)/%.java)
# Constructs command line options file
$(COMPILE_PROP_options): $(COMPILE_PROP_JAVA_FILES)
@$(TOUCH) $@
compile_prop_options_clean:
@$(RM) $(COMPILE_PROP_options)
# Make sure all are compiled, one compiler run
compile_all_props: $(BUILD_TOOLS) $(COMPILE_PROP_options)
@if [ `$(CAT) $(COMPILE_PROP_options) | $(WC) -l` -ge 1 ] ; then \
$(MKDIR) -p $(GENSRCDIR); \
$(ECHO) "$(TOOL_COMPILEPROPERTIES) @$(COMPILE_PROP_options)";\
$(TOOL_COMPILEPROPERTIES) @$(COMPILE_PROP_options) ; \
$(java-vm-cleanup); \
fi
# Make sure the build rule creates all the properties
resources:
ifneq ($(strip $(PROPERTIES_FILES)),)
resources: strip_prop_options_clean strip_all_props
clobber clean::
$(RM) $(STRIP_PROP_FILES) $(STRIP_PROP_options)
endif
ifneq ($(strip $(COMPILED_PROPERTIES)),)
resources: compile_prop_options_clean compile_all_props
clobber clean::
$(RM) $(COMPILE_PROP_JAVA_FILES) $(COMPILE_PROP_options)
endif
.PHONY: resources \
compile_prop_options_clean compile_all_props \
strip_prop_options_clean strip_all_props

View File

@ -0,0 +1,98 @@
#
# Copyright (c) 2005, 2010, 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.
#
#
# GCC Compiler settings
#
ifeq ($(PLATFORM), windows)
# Settings specific to Windows, pretty stale, hasn't been used
CC ?= $(COMPILER_PATH)gcc
CPP ?= $(COMPILER_PATH)gcc -E
CXX ?= $(COMPILER_PATH)g++
CCC ?= $(COMPILER_PATH)g++
AR ?= $(COMPILER_PATH)lib
LINK ?= $(COMPILER_PATH)link
RC ?= $(COMPILER_PATH)rc
LINK32 = $(LINK)
RSC = $(RC)
# unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
ifeq ($(ARCH_DATA_MODEL), 32)
CC_VER = UNKNOWN
else
CC_VER = UNKNOWN
endif
_LINK_VER :=$(shell $(LINK) 2>&1 | $(HEAD) -n 1)
LINK_VER :=$(call GetVersion,"$(_LINK_VER)")
endif
ifeq ($(PLATFORM), linux)
# Settings specific to Linux
CC ?= $(COMPILER_PATH)gcc
CPP ?= $(COMPILER_PATH)gcc -E
# Acquire the paths to the compilers and tools
# statically link libstdc++ before C++ ABI is stablized on Linux
STATIC_CXX = true
ifeq ($(STATIC_CXX),true)
# g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
# We need to use gcc to statically link the C++ runtime. gcc and g++ use
# the same subprocess to compile C++ files, so it is OK to build using gcc.
CXX ?= $(CC)
#$(COMPILER_PATH)gcc
else
# CXX = $(COMPILER_PATH)g++
endif
# Option used to create a shared library
SHARED_LIBRARY_FLAG = -shared
SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
endif
ifeq ($(PLATFORM), solaris)
# Settings specific to Solaris
CC ?= $(COMPILER_PATH)gcc
CPP ?= $(COMPILER_PATH)gcc -E
CXX ?= $(COMPILER_PATH)g++
# Option used to create a shared library
SHARED_LIBRARY_FLAG = -G
endif
# Get gcc version
_CC_VER :=$(shell $(CC) -dumpversion 2>&1 )
CC_VER :=$(call GetVersion,"$(_CC_VER)")
CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
CC_MINORVER :=$(call MinorVersion,$(CC_VER))
# Name of compiler
COMPILER_NAME = GCC$(call MajorVersion,$(CC_VER))
COMPILER_VERSION = $(COMPILER_NAME)

View File

@ -0,0 +1,59 @@
#
# Copyright (c) 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.
#
#
# LLVM Compiler settings
#
ifeq ($(PLATFORM), macosx)
# Settings specific to Mac OS X
ifeq ($(origin CC), default)
CC = $(COMPILER_PATH)llvm-gcc
endif
CPP = $(COMPILER_PATH)llvm-gcc -E
ifeq ($(origin CXX), default)
CXX = $(COMPILER_PATH)llvm-g++
endif
REQUIRED_CC_VER = 4.2.1
# Option used to create a shared library
SHARED_LIBRARY_FLAG = -Wl,-install_name,@rpath/$(@F) -dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0
SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
AR = $(CC)
ARFLAGS = -nostdlib -r -arch i386 -arch x86_64 -o
endif
# Get llvm version
_CC_VER :=$(shell $(CC) -dumpversion 2>&1 )
CC_VER :=$(call GetVersion,"$(_CC_VER)")
# Name of compiler
COMPILER_NAME = LLVM-GCC$(call MajorVersion,$(CC_VER))
COMPILER_VERSION = $(COMPILER_NAME)

View File

@ -0,0 +1,93 @@
#
# Copyright (c) 2005, 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.
#
#
# MSVC Compiler settings
#
ifeq ($(PLATFORM), windows)
CC ?= $(COMPILER_PATH)cl
CPP ?= $(COMPILER_PATH)cl
CXX ?= $(COMPILER_PATH)cl
CCC ?= $(COMPILER_PATH)cl
AR ?= $(COMPILER_PATH)lib
LINK ?= $(COMPILER_PATH)link
LINK32 ?= $(LINK)
# TODO Add dumpbin.exe to configure
DUMPBIN ?= $(COMPILER_PATH)dumpbin.exe
# Fill in unknown values
COMPILER_NAME=Unknown MSVC Compiler
COMPILER_VERSION=
# unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
# Compiler version and type (Always get word after "Version")
CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(SED) 's/.*\(Version.*\)/\1/' | $(NAWK) '{print $$2}')
LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
# The VS2010 compiler is the same one used on both 32bit and 64bit
ifeq ($(CC_MAJORVER), 16)
COMPILER_NAME=Microsoft Visual Studio 10 (16.00.30319.01)
COMPILER_VERSION=VS2010
ifeq ($(WINDOWSSDKDIR),)
WINDOWSSDKDIR := $(error WINDOWSSDKDIR cannot be empty here)
endif
ifeq ($(ARCH_DATA_MODEL), 32)
_OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin
else
ifeq ($(ARCH), ia64)
_OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin/ia64
else
_OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin/x64
endif
endif
RC = $(_OTHER_TOOLS_BIN)/RC.Exe
REBASE = $(_OTHER_TOOLS_BIN)/ReBase.Exe
MT = $(_OTHER_TOOLS_BIN)/mt.exe
MTL = $(_OTHER_TOOLS_BIN)/midl.exe
endif
# These variables can never be empty
ifndef COMPILER_PATH
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
endif
ifndef COMPILER_VERSION
COMPILER_VERSION := $(error COMPILER_VERSION cannot be empty here)
endif
ifneq ($(COMPILER_VERSION),VS2010)
COMPILER_VERSION := $(error COMPILER_VERSION must be VS2010)
endif
# Shared library generation flag
SHARED_LIBRARY_FLAG = -LD
# RSC is always same as RC (Not sure who uses this RSC variable)
RSC = $(RC)
endif

View File

@ -0,0 +1,138 @@
#
# Copyright (c) 2005, 2010, 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.
#
#
# Sun Studio Compiler settings
#
# Sun Studio Compiler settings specific to Solaris
ifeq ($(PLATFORM), solaris)
CC ?= $(COMPILER_PATH)cc
CPP ?= $(COMPILER_PATH)cc -E
CXX ?= $(COMPILER_PATH)CC
LINT ?= $(COMPILER_PATH)lint
# Option used to create a shared library
SHARED_LIBRARY_FLAG = -G
GCC =$(GCC_COMPILER_PATH)gcc
endif
# Sun Studio Compiler settings specific to Linux
ifeq ($(PLATFORM), linux)
# This has not been tested
CC ?= $(COMPILER_PATH)cc
CPP ?= $(COMPILER_PATH)cc -E
CXX ?= $(COMPILER_PATH)CC
LINT ?= $(COMPILER_PATH)lint
# statically link libstdc++ before C++ ABI is stablized on Linux
STATIC_CXX = true
ifeq ($(STATIC_CXX),true)
# CC always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
# We need to use cc to statically link the C++ runtime.
CXX ?= $(COMPILER_PATH)cc
else
CXX ?= $(COMPILER_PATH)CC
endif
# Option used to create a shared library
SHARED_LIBRARY_FLAG = -G
endif
# Get compiler version
_CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
CC_VER :=$(call GetVersion,"$(_CC_VER)")
CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
CC_MINORVER :=$(call MinorVersion,$(CC_VER))
# Name of compilers being used
COMPILER_VERSION-5.7 = SS10
COMPILER_NAME-5.7 = Sun Studio 10
COMPILER_VERSION-5.8 = SS11
COMPILER_NAME-5.8 = Sun Studio 11
COMPILER_VERSION-5.9 = SS12
COMPILER_NAME-5.9 = Sun Studio 12
COMPILER_VERSION-5.10 = SS12u1
COMPILER_NAME-5.10 = Sun Studio 12 Update 1
COMPILER_VERSION-5.11 = OSS12u2
COMPILER_NAME-5.11 = Oracle Solaris Studio 12 Update 2
COMPILER_VERSION = $(COMPILER_VERSION-$(CC_VER))
COMPILER_NAME = $(COMPILER_NAME-$(CC_VER))
# Arch specific settings (determines type of .o files and instruction set)
# Starting in SS12 (5.9), the arch options changed.
# The assembler /usr/ccs/bin/as wants older SS11 (5.8) style options.
# Note: We need to have both 32 and 64 values at all times for awt Makefiles.
#
XARCH_OPTION_OLD/32 =
XARCH_OPTION_OLD/64 =
XARCH_OPTION_NEW/32 = -m32
XARCH_OPTION_NEW/64 = -m64
# Lint options are slightly different
LINT_XARCH_OPTION_OLD/32 =
LINT_XARCH_OPTION_OLD/64 =
LINT_XARCH_OPTION_NEW/32 = -m32
LINT_XARCH_OPTION_NEW/64 = -m64
ifeq ($(ARCH_FAMILY), sparc)
ifdef VIS_NEEDED
XARCH_OPTION_OLD/32 += -xarch=v8plusa
XARCH_OPTION_OLD/64 += -xarch=v9a
XARCH_OPTION_NEW/32 += -xarch=sparcvis
XARCH_OPTION_NEW/64 += -xarch=sparcvis
else
# Someday this should change to improve optimization on UltraSPARC
# and abandon v8, even change to sparcvis or sparcvis2, this
# abandons machines like the SPARCstation 10.
# Indications with jdk6 is that alacrity runs do not show a
# big improvement using v8plus over v8, but other benchmarks might.
XARCH_OPTION_OLD/32 += -xarch=v8
XARCH_OPTION_OLD/64 += -xarch=v9
# Note that this new option (SS12+) effectively means v8plus
XARCH_OPTION_NEW/32 += -xarch=sparc
XARCH_OPTION_NEW/64 += -xarch=sparc
endif
LINT_XARCH_OPTION_OLD/64 += -Xarch=v9
endif
ifeq ($(ARCH_FAMILY), i586)
XARCH_OPTION_OLD/64 += -xarch=amd64
LINT_XARCH_OPTION_OLD/64 += -Xarch=amd64
endif
# Pick the options we want based on the compiler being used. (5.9 or newer)
CC_59_OR_NEWER := \
$(shell expr $(CC_MAJORVER) \> 5 \| \
\( $(CC_MAJORVER) = 5 \& $(CC_MINORVER) \>= 9 \) )
ifeq ($(CC_59_OR_NEWER), 1)
XARCH_OPTION/32 = $(XARCH_OPTION_NEW/32)
XARCH_OPTION/64 = $(XARCH_OPTION_NEW/64)
LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_NEW/32)
LINT_XARCH_OPTION/64 = $(LINT_XARCH_OPTION_NEW/64)
else
XARCH_OPTION/32 = $(XARCH_OPTION_OLD/32)
XARCH_OPTION/64 = $(XARCH_OPTION_OLD/64)
LINT_XARCH_OPTION/32 = $(LINT_XARCH_OPTION_OLD/32)
LINT_XARCH_OPTION/64 = $(LINT_XARCH_OPTION_OLD/64)
endif
XARCH_OPTION = $(XARCH_OPTION/$(ARCH_DATA_MODEL))
LINT_XARCH_OPTION = $(LINT_XARCH_OPTION/$(ARCH_DATA_MODEL))
# The /usr/ccs/bin/as assembler always wants the older SS11 (5.8) options.
AS_XARCH_OPTION = $(XARCH_OPTION_OLD/$(ARCH_DATA_MODEL))

View File

@ -0,0 +1,143 @@
#
# 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 components.
#
ifndef JDK_MAKE_SHARED_DIR
JDK_MAKE_SHARED_DIR = $(JDK_TOPDIR)/makefiles/common/shared
endif
ifndef HOTSPOT_TOPDIR
HOTSPOT_TOPDIR=$(TOPDIR)/hotspot
endif
ifndef LANGTOOLS_TOPDIR
LANGTOOLS_TOPDIR=$(TOPDIR)/langtools
endif
ifndef CORBA_TOPDIR
CORBA_TOPDIR=$(TOPDIR)/corba
endif
ifndef JAXP_TOPDIR
JAXP_TOPDIR=$(TOPDIR)/jaxp
endif
ifndef JAXWS_TOPDIR
JAXWS_TOPDIR=$(TOPDIR)/jaxws
endif
ifndef JDK_TOPDIR
JDK_TOPDIR=$(TOPDIR)/jdk
endif
ifndef INSTALL_TOPDIR
INSTALL_TOPDIR=$(TOPDIR)/install
endif
ifndef SPONSORS_TOPDIR
SPONSORS_TOPDIR=$(TOPDIR)/sponsors
endif
ifndef DEPLOY_TOPDIR
DEPLOY_TOPDIR=$(TOPDIR)/deploy
endif
# Get shared platform settings
include $(JDK_MAKE_SHARED_DIR)/Platform.gmk
# Default directory immediately above the "build" output directory (OUTPUTDIR)
BUILD_PARENT_DIRECTORY=$(TOPDIR)
# Get platform specific settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
SRC_BUNDLEDIR = $(OUTPUTDIR)/source-bundles
ABS_SRC_BUNDLEDIR = $(ABS_OUTPUTDIR)/source-bundles
BIN_BUNDLEDIR = $(OUTPUTDIR)/bundles
BIN_DEMOS_BUNDLEDIR = $(OUTPUTDIR)/demos-bundles
ABS_BIN_BUNDLEDIR = $(ABS_OUTPUTDIR)/bundles
dummy := $(shell $(MKDIR) -p $(BIN_BUNDLEDIR))
dummy := $(shell $(MKDIR) -p $(BIN_DEMOS_BUNDLEDIR) )
dummy := $(shell $(MKDIR) -p $(SRC_BUNDLEDIR) )
TEMP_DIR = $(OUTPUTDIR)/tmp
ABS_TEMP_DIR = $(ABS_OUTPUTDIR)/tmp
dummy := $(shell $(MKDIR) -p $(TEMP_DIR))
# The language version we want for this jdk build
SOURCE_LANGUAGE_VERSION=7
# The class version we want for this jdk build
TARGET_CLASS_VERSION=7
# The MESSAGE, WARNING and ERROR files are used to store sanity check and
# source check messages, warnings and errors.
export ERROR_FILE := $(ABS_OUTPUTDIR)/sanityCheckErrors.txt
export WARNING_FILE := $(ABS_OUTPUTDIR)/sanityCheckWarnings.txt
export MESSAGE_FILE := $(ABS_OUTPUTDIR)/sanityCheckMessages.txt
# source bundle generation definitions
BUNDLE_DATE := $(shell $(DATE) '+%d_%b_%Y' | $(TR) "[A-Z]" "[a-z]")
ifdef ALT_BUNDLE_DATE
BUNDLE_DATE := $(ALT_BUNDLE_DATE)
endif
# If the update version contains non-numeric characters, we need
# to massage it into a numeric format. Unfortunately, the
# Windows VERSIONINFO resource that we stick in jvm.dll cannot
# handle non-numeric characters. We have to do this here because
# Hotspot (nmake) cannot handle calculations. So we use the
# following formula:
# COOKED_JDK_UPDATE_VERSION = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
#
# Here are some examples:
# 1.5.0 b01 -> 5,0,0,1
# 1.5.0_10 b01 -> 5,0,100,1
# 1.4.2 b01 -> 4,2,0,1
# 1.4.2_02 b01 -> 4,2,20,1
# 1.4.2_02a b01 -> 4,2,21,1
# 1.4.2_02b b01 -> 4,2,22,1
ifdef JDK_UPDATE_VERSION
VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
ifeq ($(CHAR3),)
CHAR3 := 0
endif
ifeq ($(CHAR1), 0)
COOKED_JDK_UPDATE_VERSION := $(CHAR2)$(CHAR3)
else
COOKED_JDK_UPDATE_VERSION := $(CHAR1)$(CHAR2)$(CHAR3)
endif
endif
ifneq ($(JDK_BUILD_NUMBER),)
COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) \
| $(SED) -e 's/^b//' | $(SED) -e 's/^0//')
else
COOKED_BUILD_NUMBER = 0
endif

View File

@ -0,0 +1,249 @@
#
# Copyright (c) 2007, 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 java/javac/jdk 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.
#
-include $(SPEC)
#
# Memory related -J flags that all uses of java tools should use.
#
#JAVA_MEM_FLAGS = -Xmx$(MAX_VM_MEMORY)m
#ifeq ($(ARCH), ia64)
# Special flags for javac on ia64 to work around a VM problem with
# bad code generation during inlining (what version had this problem?):
# Suspect this may not be needed anymore.
# JAVA_MEM_FLAGS += -Xms$(MAX_VM_MEMORY)m -XX:-Inline
#else
# JAVA_MEM_FLAGS += -Xms$(MIN_VM_MEMORY)m -XX:PermSize=32m -XX:MaxPermSize=160m
#endif
#
# All java tools (javac, javah, and javadoc) run faster with certain java
# options, this macro should be used with all these tools.
# In particular, the client VM makes these tools run faster when
# it's available.
#
ADD_CLIENT_VM_OPTION = false
ifeq ($(PLATFORM), solaris)
ADD_CLIENT_VM_OPTION = true
else
ifeq ($(ARCH_DATA_MODEL), 32)
ADD_CLIENT_VM_OPTION = true
endif
endif
# Options for hotspot to turn off printing of options with fastdebug version
# and creating the hotspot.log file.
#JAVA_HOTSPOT_DISABLE_PRINT_VMOPTIONS = \
# -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput
# JVM options
ifeq ($(PLATFORM), macosx)
JAVA_JVM_FLAGS = $(JAVA_HOTSPOT_DISABLE_PRINT_VMOPTIONS) -Djava.awt.headless=true
else
JAVA_JVM_FLAGS = $(JAVA_HOTSPOT_DISABLE_PRINT_VMOPTIONS)
endif
#ifeq ($(ADD_CLIENT_VM_OPTION), true)
# JAVA_JVM_FLAGS += -client
#endif
#ifdef USE_HOTSPOT_INTERPRETER_MODE
# JAVA_JVM_FLAGS += -Xint
#endif
# Various VM flags
JAVA_TOOLS_FLAGS = $(JAVA_JVM_FLAGS) $(JAVA_MEM_FLAGS)
# The VM flags for javac
JAVAC_JVM_FLAGS =
# 64-bit builds require a larger thread stack size.
#ifeq ($(ARCH_DATA_MODEL), 32)
# JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=768
#else
# JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1536
#endif
JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%)
# The jar -J options are special, must be added at the end of the command line
JAR_JFLAGS = $(JAVA_TOOLS_FLAGS:%=-J%)
# JAVA_TOOLS_DIR is the default location to find Java tools to run, if
# langtools is not available.
# This should be the latest promoted JDK javac.
ifndef JAVA_TOOLS_DIR
JAVA_TOOLS_DIR = $(JDK_IMPORT_PATH)/bin
endif
#
# Invoking the Java compiler. In leaf makefiles, choose as follows:
# -- Use JAVAC if you want to take full control of what options get
# passed to javac.
# -- Use JAVAC_CMD if you want to take the defaults given to you.
#
ifndef DEBUG_CLASSFILES
ifeq ($(VARIANT), DBG)
DEBUG_CLASSFILES = true
endif
endif
JAVACFLAGS =
ifeq ($(DEBUG_CLASSFILES),true)
JAVACFLAGS += -g
endif
ifeq ($(JAVAC_MAX_WARNINGS), true)
JAVAC_LINT_OPTIONS += -Xlint:all
endif
ifeq ($(JAVAC_WARNINGS_FATAL), true)
JAVACFLAGS += -Werror
endif
# TODO: Workaround for CR 7063027. Remove -path eventually.
JAVAC_LINT_OPTIONS += -Xlint:-path
JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
#
# Some licensees do not get the Security Source bundles. We will
# fall back on the prebuilt jce.jar so that we can do a best
# attempt at building. If sources exist, we always want to
# build/use the most recent source instead of an older jce.jar, whether
# built implicitly/explicitly.
#
ifeq ($(wildcard $(SHARE_SRC)/classes/javax/crypto/Cipher.java),)
JCEFLAGS = $(CLASSPATH_SEPARATOR)$(LIBDIR)/jce.jar
endif
# Add the source level
SOURCE_LANGUAGE_VERSION = 7
LANGUAGE_VERSION = -source $(SOURCE_LANGUAGE_VERSION)
JAVACFLAGS += $(LANGUAGE_VERSION)
# Add the class version we want
TARGET_CLASS_VERSION = 7
CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
JAVACFLAGS += $(CLASS_VERSION)
JAVACFLAGS += -encoding ascii
JAVACFLAGS += "-Xbootclasspath:$(CLASSBINDIR)$(JCEFLAGS)"
JAVACFLAGS += $(OTHER_JAVACFLAGS)
# Needed for javah
JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCEFLAGS)"
# Needed for javadoc to ensure it builds documentation
# against the newly built classes
JAVADOCFLAGS += -bootclasspath $(CLASSBINDIR)
# Needed for JAVADOC and BOOT_JAVACFLAGS
NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true
# Langtools
LANGTOOLS_DIST ?= $(ALT_LANGTOOLS_DIST)
ifdef LANGTOOLS_DIST
JAVAC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
JAVAH_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
JAVAC_CMD = $(BOOT_JAVA_CMD) \
"-Xbootclasspath/p:$(JAVAC_JAR)" \
-jar $(JAVAC_JAR) $(JAVACFLAGS)
JAVAH_CMD = $(BOOT_JAVA_CMD) \
"-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)" \
-jar $(JAVAH_JAR) $(JAVAHFLAGS)
JAVADOC_CMD = $(BOOT_JAVA_CMD) \
"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
-jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
else
# If no explicit tools, use boot tools (add VM flags in this case)
JAVAC_CMD = $(UNCYGDRIVE) $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
$(JAVACFLAGS)
JAVAH_CMD = $(UNCYGDRIVE) $(JAVA_TOOLS_DIR)/javah \
$(JAVAHFLAGS)
JAVADOC_CMD = $(UNCYGDRIVE) $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
$(JAVADOCFLAGS)
endif
# Override of what javac to use (see deploy workspace)
#ifdef JAVAC
# JAVAC_CMD = $(JAVAC)
#endif
#
# The bootstrap java compiler (defined as the javac in the ALT_BOOTDIR jdk).
# Will be used to compile java code used to build the jdk, e.g. class files
# created by this compiler will NOT become part of this built jdk, but just
# used to build this jdk, e.g. run with the java in the ALT_BOOTDIR jdk.
#
# The javac supplied with the LANGTOOLS_DIST should be used to build the
# classes that will be put into the built jdk. But note that this javac
# will use the ALT_BOOTDIR java runtime. Any classes created by the
# LANGTOOLS_DIST javac should not be run during this jdk build and indeed
# may not even run with the ALT_BOOTDIR jdk because they may be a newer
# class file version that the ALT_BOOTDIR jdk doesn't understand.
#
# The important observation here is that the built jdk is NOT run during
# the build. If the built jdk needs to be verified that it can build this
# same jdk, then it should be supplied to the build process as the ALT_BOOTDIR
# jdk, and this resulting built jdk should be compared to the first one.
# (They should be the same). Re-using this built jdk as the ALT_BOOTDIR
# jdk will be the only way and the recommeneded way to verify the built jdk
# can bootstrap itself.
#
# The javac options supplied to the boot javac is limited. This compiler
# should only be used to build the 'make/tools' sources, which are not
# class files that end up in the classes directory.
BOOT_JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
ifeq ($(JAVAC_WARNINGS_FATAL), true)
BOOT_JAVACFLAGS += -Werror
endif
BOOT_JAVACFLAGS += -encoding ascii
BOOT_JAR_JFLAGS += $(JAR_JFLAGS)
BOOT_JAVACFLAGS += $(NO_PROPRIETARY_API_WARNINGS)
BOOT_JAVA_CMD = $(UNCYGDRIVE) $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
BOOT_JAVAC_CMD = $(UNCYGDRIVE) $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
BOOT_JAR_CMD = $(UNCYGDRIVE) $(BOOTDIR)/bin/jar
BOOT_JARSIGNER_CMD = $(UNCYGDRIVE) $(BOOTDIR)/bin/jarsigner
# Various tools we need to run (FIXUP: Are these the right ones?)
NATIVE2ASCII = $(UNCYGDRIVE) $(BOOTDIR)/bin/native2ascii $(JAVA_TOOLS_FLAGS:%=-J%)
RMIC = $(UNCYGDRIVE) $(BOOTDIR)/bin/rmic $(JAVA_TOOLS_FLAGS:%=-J%)
IDLJ = $(UNCYGDRIVE) $(BOOTDIR)/bin/idlj $(JAVA_TOOLS_FLAGS:%=-J%)
# Should not be used
#JAVA = /should/not/be/used

View File

@ -0,0 +1,71 @@
#
# 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.
#
# Copyright year for beginning of Java and some of the apis
# (Needed when creating the javadocs)
FIRST_COPYRIGHT_YEAR = 1993
DOMAPI_FIRST_COPYRIGHT_YEAR = 2005
MIRROR_FIRST_COPYRIGHT_YEAR = 2004
DOCLETAPI_FIRST_COPYRIGHT_YEAR = 1993
TAGLETAPI_FIRST_COPYRIGHT_YEAR = 1993
JDI_FIRST_COPYRIGHT_YEAR = 1999
JAAS_FIRST_COPYRIGHT_YEAR = 1998
JGSS_FIRST_COPYRIGHT_YEAR = 2000
SMARTCARDIO_FIRST_COPYRIGHT_YEAR = 2005
HTTPSERVER_FIRST_COPYRIGHT_YEAR = 2005
MGMT_FIRST_COPYRIGHT_YEAR = 2003
ATTACH_FIRST_COPYRIGHT_YEAR = 2005
JCONSOLE_FIRST_COPYRIGHT_YEAR = 2006
SCTPAPI_FIRST_COPYRIGHT_YEAR = 2009
TRACING_FIRST_COPYRIGHT_YEAR = 2008
TREEAPI_FIRST_COPYRIGHT_YEAR = 2005
JNLP_FIRST_COPYRIGHT_YEAR = 1998
PLUGIN2_FIRST_COPYRIGHT_YEAR = 2007
# Oracle name
FULL_COMPANY_NAME = Oracle and/or its affiliates
# Copyright address
COMPANY_ADDRESS = 500 Oracle Parkway<br>Redwood Shores, CA 94065 USA.
# The trademark symbol
TRADEMARK = &trade;
# Common copyright lines used
# The word "Copyright" might optionally be a link to the file cpyr.html.
# The first year of copyright may vary or not be available.
# The address to the company might be optional.
COMMA:= ,
EMPTY:=
SPACE:=$(EMPTY) $(EMPTY)
COPYRIGHT_SYMBOL = &\#x00a9;
# Macro to construct the copyright line
# (The GNU make 3.78.1 "if" conditional is broken, fixed in GNU make 3.81)
define CopyrightLine # optionalurl optionalfirstyear optionaladdress
$(if $(strip $1),<a href="$(strip $1)">Copyright</a>,Copyright) \
$(COPYRIGHT_SYMBOL) $(if $2,$2${COMMA},) $(COPYRIGHT_YEAR),\
$(FULL_COMPANY_NAME). $3 All rights reserved.
endef

View File

@ -0,0 +1,213 @@
#
# Copyright (c) 2005, 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.
#
#
# Definitions for Linux.
#
# Default for COMPILER_WARNINGS_FATAL on Linux (C & C++ compiler warnings)
ifndef COMPILER_WARNINGS_FATAL
COMPILER_WARNINGS_FATAL=false
endif
# Linux should use parallel compilation for best build times
ifndef COMPILE_APPROACH
COMPILE_APPROACH = parallel
endif
# Indication that we are doing an incremental build.
# This may trigger the creation of make depend files.
ifndef INCREMENTAL_BUILD
INCREMENTAL_BUILD = false
endif
# FullPath just makes sure it never ends with a / and no duplicates
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
# OptFullPath: Absolute path name of a dir that might not initially exist.
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
# Location on system where jdk installs might be
USRJDKINSTANCES_PATH =/opt/java
# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
else
UNIXCOMMAND_PATH = /bin/
endif
# USRBIN_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_USRBIN_PATH)" "undefined"
USRBIN_PATH :=$(call PrefixPath,$(ALT_USRBIN_PATH))
else
USRBIN_PATH = /usr/bin/
endif
# UNIXCCS_PATH: path to where the Solaris ported UNIX commands can be found
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
else
UNIXCCS_PATH = /usr/ccs/bin/
endif
# SLASH_JAVA: location of all network accessable files
ifdef ALT_SLASH_JAVA
SLASH_JAVA :=$(ALT_SLASH_JAVA)
else
SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
endif
# JDK_DEVTOOLS_DIR: common path for all the java devtools
ifdef ALT_JDK_DEVTOOLS_DIR
JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
else
JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
endif
# COMPILER_PATH: path to where the compiler and tools are installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
else
COMPILER_PATH =/usr/bin/
endif
# OPENWIN_HOME: path to where the X11 environment is installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq ($(ALT_OPENWIN_HOME),)
OPENWIN_HOME :=$(call PrefixPath,$(ALT_OPENWIN_HOME))
else
OPENWIN_HOME ?=$(SYS_ROOT)/usr/X11R6/
endif
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
else
DEVTOOLS_PATH =/usr/bin/
endif
# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
# _BOOTDIR2: Second choice
ifndef ALT_BOOTDIR
_BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
_BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
endif
# Always build headless on Linux
BUILD_HEADLESS = true
LIBM=-lm
# GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifdef ALT_GCC29_COMPILER_PATH
GCC29_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC29_COMPILER_PATH))
else
GCC29_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(PLATFORM)/gcc29/usr/
endif
_CUPS_HEADERS_PATH=/usr/include
# Import JDK images allow for partial builds, components not built are
# imported (or copied from) these import areas when needed.
# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
ifdef ALT_BUILD_JDK_IMPORT_PATH
BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
else
BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
endif
# JDK_IMPORT_PATH: location of JDK install tree (this version) to import
ifdef ALT_JDK_IMPORT_PATH
JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
else
JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
endif
# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
ifdef ALT_HOTSPOT_IMPORT_PATH
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
else
HOTSPOT_IMPORT_PATH ?=$(JDK_IMPORT_PATH)
endif
# HOTSPOT_CLIENT_PATH: location of client jvm library file.
ifeq ($(ARCH_DATA_MODEL), 32)
ifdef ALT_HOTSPOT_CLIENT_PATH
HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
else
HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
endif
endif
# HOTSPOT_SERVER_PATH: location of server jvm library file.
ifdef ALT_HOTSPOT_SERVER_PATH
HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
else
HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
endif
# Special define for checking the binaries
# Debug builds should downgrade warnings to just info
MAPFILE_WARNING-DBG=INFO
MAPFILE_WARNING-OPT=WARNING
MAPFILE_WARNING-=WARNING
MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
# Macro to check it's input file for banned dependencies and verify the
# binary built properly. Relies on process exit code.
ifndef CROSS_COMPILE_ARCH
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for mapfile use in: $1" && \
if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
$(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
fi && \
$(ECHO) "Library loads for: $1" && \
$(LDD) $1 && \
$(ECHO) "RUNPATH for: $1" && \
( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
)
endef
else
define binary_file_verification
( \
$(ECHO) "Skipping binary file verification for cross-compile build" \
)
endef
endif

View File

@ -0,0 +1,252 @@
#
# Copyright (c) 2005, 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.
#
#
# Definitions for Bsd.
#
# Default for COMPILER_WARNINGS_FATAL on Bsd (C & C++ compiler warnings)
ifndef COMPILER_WARNINGS_FATAL
COMPILER_WARNINGS_FATAL=false
endif
# Bsd should use parallel compilation for best build times
ifndef COMPILE_APPROACH
COMPILE_APPROACH = parallel
endif
# Indication that we are doing an incremental build.
# This may trigger the creation of make depend files.
ifndef INCREMENTAL_BUILD
INCREMENTAL_BUILD = false
endif
# FullPath just makes sure it never ends with a / and no duplicates
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
# OptFullPath: Absolute path name of a dir that might not initially exist.
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
# Location on system where jdk installs might be
USRJDKINSTANCES_PATH = $(PACKAGE_PATH)
# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
else
UNIXCOMMAND_PATH = /bin/
endif
# USRBIN_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_USRBIN_PATH)" "undefined"
USRBIN_PATH :=$(call PrefixPath,$(ALT_USRBIN_PATH))
else
USRBIN_PATH = /usr/bin/
endif
# UNIXCCS_PATH: path to where the Solaris ported UNIX commands can be found
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
else
UNIXCCS_PATH = /usr/ccs/bin/
endif
# SLASH_JAVA: location of all network accessable files
ifdef ALT_SLASH_JAVA
SLASH_JAVA :=$(ALT_SLASH_JAVA)
else
SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
endif
# JDK_DEVTOOLS_DIR: common path for all the java devtools
ifdef ALT_JDK_DEVTOOLS_DIR
JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
else
JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
endif
# COMPILER_PATH: path to where the compiler and tools are installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
else
ifeq ($(OS_VENDOR), Apple)
ifndef DEVELOPER_DIR
DEVELOPER_DIR = $(shell /usr/bin/xcode-select -print-path)/usr/bin/
endif
COMPILER_PATH := $(call DirExists,$(DEVELOPER_DIR),/usr/bin/,/NOT-SET)
else
COMPILER_PATH =/usr/bin/
endif
endif
# OPENWIN_HOME: path to where the X11 environment is installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq ($(ALT_OPENWIN_HOME),)
OPENWIN_HOME :=$(call PrefixPath,$(ALT_OPENWIN_HOME))
else
OPENWIN_HOME ?=$(X11_PATH)
endif
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
else
DEVTOOLS_PATH =$(PACKAGE_PATH)/bin/
endif
# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
# _BOOTDIR2: Second choice
ifndef ALT_BOOTDIR
_BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
_BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
endif
# Always build headless on Bsd
BUILD_HEADLESS = true
LIBM=-lm
ifeq ($(OS_VENDOR), Apple)
_CUPS_HEADERS_PATH=/usr/include
else
_CUPS_HEADERS_PATH=$(PACKAGE_PATH)/include
endif
# Import JDK images allow for partial builds, components not built are
# imported (or copied from) these import areas when needed.
# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
# multiple platforms, e.g. windows-i586, solaris-sparc, bsd-586, etc.
ifdef ALT_BUILD_JDK_IMPORT_PATH
BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
else
BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
endif
BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
# JDK_IMPORT_PATH: location of JDK install tree (this version) to import
ifdef ALT_JDK_IMPORT_PATH
JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
else
JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
endif
JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
ifdef ALT_HOTSPOT_IMPORT_PATH
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
else
HOTSPOT_IMPORT_PATH ?=$(JDK_IMPORT_PATH)
endif
HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
# HOTSPOT_CLIENT_PATH: location of client jvm library file.
ifeq ($(ARCH_DATA_MODEL), 32)
ifdef ALT_HOTSPOT_CLIENT_PATH
HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
else
HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
endif
HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
endif
# HOTSPOT_SERVER_PATH: location of server jvm library file.
ifdef ALT_HOTSPOT_SERVER_PATH
HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
else
HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
endif
HOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
# Special define for checking the binaries
# Debug builds should downgrade warnings to just info
MAPFILE_WARNING-DBG=INFO
MAPFILE_WARNING-OPT=WARNING
MAPFILE_WARNING-=WARNING
MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
# Macro to check it's input file for banned dependencies and verify the
# binary built properly. Relies on process exit code.
ifndef CROSS_COMPILE_ARCH
ifeq ($(OS_VENDOR), Apple)
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for mapfile use in: $1" && \
if [ "`$(NM) -g $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
$(ECHO) "WARNING: File was not built with a mapfile: $1"; \
fi && \
$(ECHO) "Library loads for: $1" && \
$(OTOOL) -L $1 && \
$(ECHO) "RUNPATH for: $1" && \
( $(OTOOL) -l $1 | $(EGREP) 'path ' ) \
) || true
endef
else
ifeq ($(OS_VENDOR), OpenBSD)
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for mapfile use in: $1" && \
if [ "`$(OBJDUMP) -T $1 | $(EGREP) '[0-9a-f]* g *DF \.text.*SUNWprivate'`" = "" ] ; then \
$(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
fi && \
$(ECHO) "Library loads for: $1" && \
$(LDD) $1 && \
$(ECHO) "RUNPATH for: $1" && \
( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
) || true
endef
else
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for mapfile use in: $1" && \
if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
$(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
fi && \
$(ECHO) "Library loads for: $1" && \
$(LDD) $1 && \
$(ECHO) "RUNPATH for: $1" && \
( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
)
endef
endif # OS_VENDOR == OpenBSD
endif # OS_VENDOR == Apple
else
define binary_file_verification
( \
$(ECHO) "Skipping binary file verification for cross-compile build" \
)
endef
endif

View File

@ -0,0 +1,239 @@
#
# Copyright (c) 2005, 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.
#
#
# Definitions for Solaris.
#
# Default for COMPILER_WARNINGS_FATAL on Solaris (C & C++ compiler warnings)
ifndef COMPILER_WARNINGS_FATAL
COMPILER_WARNINGS_FATAL=false
endif
# Solaris should use parallel compilation for best build times
ifndef COMPILE_APPROACH
COMPILE_APPROACH = parallel
endif
# Indication that we are doing an incremental build.
# This may trigger the creation of make depend files.
ifndef INCREMENTAL_BUILD
INCREMENTAL_BUILD = false
endif
# FullPath just makes sure it never ends with a / and no duplicates
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
# OptFullPath: Absolute path name of a dir that might not initially exist.
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
# Location on system where jdk installs might be
USRJDKINSTANCES_PATH =/usr/jdk/instances
# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
else
UNIXCOMMAND_PATH = /usr/bin/
endif
# UNIXCCS_PATH: path to where the less common UNIX commands can be found
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
else
UNIXCCS_PATH = /usr/ccs/bin/
endif
# SLASH_JAVA: location of all network accessable files
ifdef ALT_SLASH_JAVA
SLASH_JAVA :=$(ALT_SLASH_JAVA)
else
SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
endif
# JDK_DEVTOOLS_DIR: common path for all the java devtools
ifdef ALT_JDK_DEVTOOLS_DIR
JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
else
JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
endif
# COMPILER_PATH: path to where the compiler and tools are installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
else
# If the place where we keep a set of Sun Studio compilers doesn't exist,
# try and use /opt/SUNWspro, the default location for the SS compilers.
# (DirExists checks for this path twice, an automount double check)
_SUNSTUDIO_SET_ROOT=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/SUNWspro
SUNSTUDIO_SET_ROOT:=$(call DirExists,$(_SUNSTUDIO_SET_ROOT),$(_SUNSTUDIO_SET_ROOT),)
ifneq ($(SUNSTUDIO_SET_ROOT),)
COMPILER_PATH =$(SUNSTUDIO_SET_ROOT)/$(REQUIRED_COMPILER_VERSION)/bin/
else
COMPILER_PATH =/opt/SUNWspro/bin/
endif
endif
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
else
ifdef ALT_JDK_DEVTOOLS_DIR
DEVTOOLS_PATH =$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/bin/
else
ifdef OPENJDK
DEVTOOLS_PATH = /usr/bin/
else
DEVTOOLS_PATH =$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/bin/
endif
endif
endif
# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
# _BOOTDIR2: Second choice
ifndef ALT_BOOTDIR
_BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
_BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
endif
# GCC_COMPILER_PATH: path to where the gcc/g++ compiler and tools are installed
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifneq "$(origin ALT_GCC_COMPILER_PATH)" "undefined"
GCC_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC_COMPILER_PATH))
else
GCC_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/gnucc/bin/
endif
# Always build headless on Solaris
BUILD_HEADLESS = true
_CUPS_HEADERS_PATH=/opt/sfw/cups/include
# Import JDK images allow for partial builds, components not built are
# imported (or copied from) these import areas when needed.
# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
ifdef ALT_BUILD_JDK_IMPORT_PATH
BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
else
BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
endif
# JDK_IMPORT_PATH: location of previously built JDK (this version) to import
ifdef ALT_JDK_IMPORT_PATH
JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
else
JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
endif
# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
ifdef ALT_HOTSPOT_IMPORT_PATH
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
else
HOTSPOT_IMPORT_PATH ?=$(JDK_IMPORT_PATH)
endif
# HOTSPOT_CLIENT_PATH: location of client jvm library file.
ifeq ($(ARCH_DATA_MODEL), 32)
ifdef ALT_HOTSPOT_CLIENT_PATH
HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
else
HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
endif
endif
# HOTSPOT_SERVER_PATH: location of server jvm library file.
ifdef ALT_HOTSPOT_SERVER_PATH
HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
else
HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
endif
# Special define for checking the binaries
# Debug builds should downgrade warnings to just info
MAPFILE_WARNING-DBG=INFO
MAPFILE_WARNING-OPT=WARNING
MAPFILE_WARNING-=WARNING
MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
# Some libraries do not have mapfiles for multiple reasons.
# These libraries for sparc and sparcv9 are exceptions to the mapfile rule:
# libjdgaSUNWafb.so
# libjdgaSUNWcg6.so
# libjdgaSUNWffb.so
# libjdgaSUNWm64.so
# libxinerama.so
# The library libJdbcOdbc.so has also been given an exception.
# The JNI/JVMTI demo libraries are also missing mapfiles, no exceptions yet.
ifeq ($(ARCH_FAMILY),sparc)
MAPFILE_EXCEPTIONS = \
(libJdbcOdbc|libjdgaSUNWafb|libjdgaSUNWcg6|libjdgaSUNWffb|libjdgaSUNWm64|libxinerama)
else
MAPFILE_EXCEPTIONS = (libJdbcOdbc)
endif
# Macro to check it's input file for banned dependencies and verify the
# binary built properly. Relies on process exit code.
ifndef CROSS_COMPILE_ARCH
ifneq (,$(DUMP))
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for mapfile use in: $1" && \
if [ "`$(ECHO) $(basename $(notdir $1)) | $(EGREP) '$(MAPFILE_EXCEPTIONS)'`" = "" \
-a "`$(NM) -g -D $1 | $(EGREP) -v 'UNDEF' | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
$(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
fi && \
$(ECHO) "Library loads for: $1" && \
$(LDD) $1 && \
$(ECHO) "RUNPATH for: $1" && \
( $(DUMP) -L -v $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
)
endef
else
define binary_file_verification
( \
$(ECHO) "Skipping binary file verification since no dump command found" \
)
endef
endif
else
define binary_file_verification
( \
$(ECHO) "Skipping binary file verification for cross-compile build" \
)
endef
endif

View File

@ -0,0 +1,215 @@
#
# Copyright (c) 2009, 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.
#
#
# WARNING: This file is shared with other workspaces.
#
# This file needs these set: PLATFORM, ARCH_FAMILY, and ARCH_DATA_MODEL.
# Windows uses Microsoft compilers by default
ifeq ($(PLATFORM), windows)
override CC_VERSION = msvc
endif
# Solaris uses Sun Studio compilers by default
ifeq ($(PLATFORM), solaris)
override CC_VERSION = sun
endif
# Linux uses GNU compilers by default
ifeq ($(PLATFORM), linux)
override CC_VERSION = gcc
endif
# Mac OS X uses LLVM by default
ifeq ($(PLATFORM), macosx)
override CC_VERSION = llvm
endif
##########################################################################
#
# List of JDK official minimum, expected, or required versions:
#
# REQUIRED_ALSA_VERSION
# Linux only: The ALSA sound library version expected.
#
# REQUIRED_ANT_VER
# The minimum 'ant' version.
#
# REQUIRED_BOOT_VER
# The minimum boot jdk version.
#
# REQUIRED_CC_VER
# The primary C compiler version expected.
#
# REQUIRED_COMPILER_NAME
# The long descriptive name of the compiler we should use
#
# REQUIRED_COMPILER_VERSION
# The one word name that identifies the compilers being used.
#
# REQUIRED_CYGWIN_VER
# Windows only: If CYGWIN is used, the minimum CYGWIN version.
#
# REQUIRED_DXSDK_VER
# Windows only: The version of DirectX SDK expected.
#
# REQUIRED_FREETYPE_VERSION
# If we are using freetype, the freetype version expected.
#
# REQUIRED_GCC_VER
# Solaris and Linux only. The required version of gcc/g++ for the legacy OJI plugin.
#
# REQUIRED_LINK_VER
# Windows only: The version of link.exe expected.
#
# REQUIRED_MAKE_VER
# The minimum version of GNU make.
#
# REQUIRED_MKS_VER
# Windows only: If MKS used instead of CYGWIN, the minimum version of MKS.
#
# REQUIRED_OS_VARIANT_NAME
# The OS variation name required.
# Solaris: Solaris or OpenSolaris
# Windows: Windows2000, WindowsXP, Windows2003, etc.
# Linux: Fedora, RedHat, SuSE, Ubuntu, etc.
#
# REQUIRED_OS_VARIANT_VERSION
# The version number associated with the above OS variant name.
# Solaris: output of uname -r
# Windows: 5.0 for Windows2000, 5.1 for WindowsXP, 5.2 for Windows2003, etc.
# Linux: number for the variant, e.g. 9 for Fedora 9
#
# REQUIRED_OS_VERSION
# The formal OS version number.
# Solaris & Windows: same as REQUIRED_OS_VARIANT_VERSION
# Linux: the kernel version, or output of uname -r
#
# REQUIRED_UNZIP_VER
# The minimum version of unzip.
#
# REQUIRED_ZIP_VER
# The minimum version of unzip.
#
###########
#
# Differences in the build platform from these versions may trigger warnings
# messages during the sanity checking when building the JDK.
#
# When building the OpenJDK most of these required or expected versions are
# ignored or allowed to vary widely to accomodate the many build situations
# of the OpenJDK.
#
##########################################################################
# Solaris specific
ifeq ($(PLATFORM), solaris)
REQUIRED_OS_NAME = SunOS
REQUIRED_OS_VERSION = 5.10
REQUIRED_OS_VARIANT_NAME = Solaris
REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION)
REQUIRED_COMPILER_NAME = Sun Studio 12 Update 1
REQUIRED_COMPILER_VERSION = SS12u1
# Cross-compilation compiler versions are target specific
# so don't set a required version if cross-compiling
ifndef CROSS_COMPILE_ARCH
ifeq ($(CC_VERSION),sun)
REQUIRED_CC_VER = 5.10
endif
ifeq ($(CC_VERSION),gcc)
REQUIRED_CC_VER = 3.4.3
endif
endif
REQUIRED_GCC_VER = 2.95.2
endif
# Linux specific
ifeq ($(PLATFORM), linux)
REQUIRED_OS_NAME = Linux
REQUIRED_OS_VERSION = 2.6
REQUIRED_OS_VARIANT_NAME = Fedora
REQUIRED_OS_VARIANT_VERSION = 9
REQUIRED_ALSA_VERSION = 0.9.1
REQUIRED_COMPILER_NAME = GCC4
REQUIRED_COMPILER_VERSION = GCC4
REQUIRED_GCC_VER = 2.95
# Cross-compilation compiler versions are target specific
# so don't set a required version if cross-compiling
ifndef CROSS_COMPILE_ARCH
ifeq ($(CC_VERSION),gcc)
REQUIRED_CC_VER = 4.3.0
endif
ifeq ($(CC_VERSION),sun)
REQUIRED_CC_VER = 5.10
endif
endif
endif
# Mac specific
ifeq ($(PLATFORM), macosx)
REQUIRED_OS_NAME = Darwin
REQUIRED_OS_VERSION = 11.2
REQUIRED_OS_VARIANT_NAME = MacOSX
REQUIRED_OS_VARIANT_VERSION = 10.7.2
REQUIRED_COMPILER_NAME = GCC4
REQUIRED_COMPILER_VERSION = GCC4
REQUIRED_CC_VER = 4.2.1
endif
# Windows specific
ifeq ($(PLATFORM), windows)
REQUIRED_OS_NAME = Windows
ifeq ($(ARCH_DATA_MODEL),64)
REQUIRED_OS_VERSION = 5.2
REQUIRED_OS_VARIANT_NAME = Windows2003
else
REQUIRED_OS_VERSION = 5.1
REQUIRED_OS_VARIANT_NAME = WindowsXP
endif
REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION)
REQUIRED_CYGWIN_VER = 4.0
REQUIRED_MKS_VER = 6.1
REQUIRED_DXSDK_VER = 0x0900
ifeq ($(CC_VERSION),msvc)
REQUIRED_COMPILER_NAME = Visual Studio 10
REQUIRED_COMPILER_VERSION = VS2010
REQUIRED_CC_VER = 16.00.30319.01
REQUIRED_LINK_VER = 10.00.30319.01
endif
ifeq ($(CC_VERSION),gcc)
REQUIRED_CC_VER = 3.4.3
endif
endif
# Generic
REQUIRED_ANT_VER = 1.7.1
REQUIRED_BOOT_VER = 1.7
REQUIRED_FREETYPE_VERSION = 2.3.0
REQUIRED_MAKE_VER = 3.81
REQUIRED_UNZIP_VER = 5.12
REQUIRED_ZIP_VER = 2.2

View File

@ -0,0 +1,696 @@
#
# Copyright (c) 2005, 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.
#
#
# Definitions for Windows.
#
# Default for COMPILER_WARNINGS_FATAL on Windows (C++ compiler warnings)
# Level: Default is 3, 0 means none, 4 is the most but may be unreliable
# Some makefiles may have set this to 0 to turn off warnings completely,
# which also effectively creates a COMPILER_WARNINGS_FATAL=false situation.
# Program.gmk may turn this down to 2 (building .exe's).
# Windows 64bit platforms are less likely to be warning free.
# Historically, Windows 32bit builds should be mostly warning free.
# VS2010 introduced a large number of security warnings that are off by
# default but will be turned back on with SHOW_ALL_WARNINGS=true.
ifndef COMPILER_WARNING_LEVEL
COMPILER_WARNING_LEVEL=3
endif
ifndef COMPILER_WARNINGS_FATAL
COMPILER_WARNINGS_FATAL=false
endif
ifndef SHOW_ALL_WARNINGS
SHOW_ALL_WARNINGS = false
endif
# Windows should use parallel compilation for best build times
ifndef COMPILE_APPROACH
COMPILE_APPROACH = normal
endif
# Indication that we are doing an incremental build.
# This may trigger the creation of make depend files.
# (This may not be working on windows yet, always force to false.)
override INCREMENTAL_BUILD = false
# WARNING: This is extremely touch stuff, between CYGWIN vs. MKS and all
# variations of MKS and CYGWIN releases, and 32bit vs 64bit,
# this file can give you nightmares.
#
# Notes:
# Keep all paths in the windows "mixed" style except CYGWIN UNXIXCOMMAND_PATH.
# Use of PrefixPath is critical, some variables must end with / (see NOTE).
# Use of quotes is critical due to possible spaces in paths coming from
# the environment variables, be careful.
# First convert \ to / with subst, keep it quoted due to blanks, then
# use cygpath -s or dosname -s to get the short non-blank name.
# If the MKS is old and doesn't have a dosname -s, you will be forced
# to set ALT variables with the short non-space directory names.
# If dosname doesn't appear to work, we won't use it.
# The dosname utility also wants to accept stdin if it is not supplied
# any path on the command line, this is really dangerous when using
# make variables that can easily become empty, so I use:
# echo $1 | dosname -s instead of dosname -s $1
# to prevent dosname from hanging up the make process when $1 is empty.
# The cygpath utility does not have this problem.
# The ALT values should never really have spaces or use \.
# Suspect these environment variables to have spaces and/or \ characters:
# SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
# DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VCnnCOMNTOOLS,
# MSVCDIR, MSVCDir.
# So use $(subst \,/,) on them first adding quotes and placing them in
# their own variable assigned with :=, then use FullPath.
#
ifdef USING_CYGWIN
# Macro to effectively do a toupper without an exec
define ToUpper
$(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,\
$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,\
$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,\
$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,\
$(subst y,Y,$(subst z,Z,$1))))))))))))))))))))))))))
endef
# All possible drive letters
drives=a b c d e f g h i j k l m n o p q r s t v u w x y z
# Convert /cygdrive/ paths to the mixed style without an exec of cygpath
# Must be a path with no spaces. /cygdrive/letter is always lowercase
# and letter:/ is always uppercase coming from cygpath.
define MixedPath
$(patsubst /%,$(CYGWIN_HOME)/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(call ToUpper,$(drive)):/%,$1)))))
endef
# Use FullPath to get C:/ style non-spaces path. Never ends with a /!
# We assume cygpath is available in the search path
# NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
define FullPath
$(if $(word 2,$1),$(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL)),$(call MixedPath,$(realpath $(subst ",,$1))))
endef
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1" 2> $(DEV_NULL); else echo "$1"; fi)
endef
else
# Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
define FullPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
define OptFullPath
$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
endef
endif
# System drive
ifdef SYSTEMDRIVE
_system_drive =$(SYSTEMDRIVE)
else
ifdef SystemDrive
_system_drive =$(SystemDrive)
endif
endif
_system_drive:=$(call CheckValue,_system_drive,C:)
# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
# With cygwin, just use this as is don't use FullPath on it.
ifdef ALT_UNIXCOMMAND_PATH
ifdef USING_CYGWIN
UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
else
xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
endif
else
ifdef USING_CYGWIN
UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
else
ifdef ROOTDIR
xROOTDIR :="$(subst \,/,$(ROOTDIR))"
_rootdir :=$(call FullPath,$(xROOTDIR))
else
xROOTDIR :="$(_system_drive)/mksnt"
_rootdir :=$(call FullPath,$(xROOTDIR))
endif
ifneq ($(_rootdir),)
UNIXCOMMAND_PATH :=$(call PrefixPath,$(_rootdir)/mksnt)
endif
endif
endif
UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
# Get version of MKS or CYGWIN
ifndef USING_CYGWIN
_MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
MKS_VER :=$(call GetVersion,$(_MKS_VER))
# At this point, we can re-define FullPath to use DOSNAME_CMD
CHECK_MKS87:=$(call CheckVersions,$(MKS_VER),8.7)
TRY_DOSNAME:=false
ifeq ($(CHECK_MKS87),same)
TRY_DOSNAME:=true
endif
# Newer should be ok
ifeq ($(CHECK_MKS87),newer)
TRY_DOSNAME:=true
endif
ifeq ($(TRY_DOSNAME),true)
ifeq ($(shell $(UNIXCOMMAND_PATH)dosname -s $(_system_drive)/ 2> $(DEV_NULL)),$(_system_drive)/)
_DOSNAME=$(UNIXCOMMAND_PATH)dosname
DOSNAME_CMD:=$(_DOSNAME) -s
define FullPath
$(subst //,/,$(shell echo $1 | $(DOSNAME_CMD) 2> $(DEV_NULL)))
endef
endif # test dosname -s
endif # TRY_DOSNAME
endif # MKS
# We try to get references to what we need via the default component
# environment variables, or what was used historically.
# Process Windows values into FullPath values, these paths may have \ chars
# System root
ifdef SYSTEMROOT
xSYSTEMROOT :="$(subst \,/,$(SYSTEMROOT))"
_system_root :=$(call FullPath,$(xSYSTEMROOT))
else
ifdef SystemRoot
xSYSTEMROOT :="$(subst \,/,$(SystemRoot))"
_system_root :=$(call FullPath,$(xSYSTEMROOT))
else
ifdef WINDIR
xWINDIR :="$(subst \,/,$(WINDIR))"
_system_root :=$(call FullPath,$(xWINDIR))
else
ifdef windir
xWINDIR :="$(subst \,/,$(windir))"
_system_root :=$(call FullPath,$(xWINDIR))
endif
endif
endif
endif
_system_root:=$(call CheckValue,_system_root,$(_system_drive)/WINNT)
# Program Files directory
ifdef PROGRAMFILES
xPROGRAMFILES :="$(subst \,/,$(PROGRAMFILES))"
else
ifeq ($(ARCH_DATA_MODEL), 32)
xPROGRAMFILES :="$(_system_drive)/Program Files"
else
xPROGRAMFILES :="$(_system_drive)/Program Files (x86)"
endif
endif
ifeq ($(ARCH_DATA_MODEL), 32)
_program_files :=$(call FullPath,$(xPROGRAMFILES))
_program_files32 :=$(_program_files)
else
ifdef PROGRAMW6432
xPROGRAMW6432 :="$(subst \,/,$(PROGRAMW6432))"
else
xPROGRAMW6432 :="$(_system_drive)/Program Files"
endif
_program_files :=$(call FullPath,$(xPROGRAMW6432))
_program_files32 :=$(call FullPath,$(xPROGRAMFILES))
ifneq ($(word 1,$(_program_files32)),$(_program_files32))
_program_files32:=
endif
endif
ifneq ($(word 1,$(_program_files)),$(_program_files))
_program_files:=
endif
# DirectX SDK
ifdef ALT_DXSDK_DRIVE
_dx_sdk_dir =$(ALT_DXSDK_DRIVE):/DXSDK
else
ifdef DXSDK_DIR
xDXSDK_DIR :="$(subst \,/,$(DXSDK_DIR))"
else
xDXSDK_DIR :="$(_system_drive)/DXSDK"
endif
_dx_sdk_dir :=$(call FullPath,$(xDXSDK_DIR))
endif
# Use of the Visual Studio compilers requires certain env variables be set:
# PATH should include the path to cl.exe
# INCLUDE should be defined
# LIB should be defined
# LIBPATH should be defined
# VS100COMNTOOLS should be defined
# WINDOWSSDKDIR should be defined
# The 7.0a path is from VS2010 Pro, the 7.1 path is the standalone SDK.
# For 64bit either will work for us.
# If a developer chooses to install the standalone SDK in some other
# location, then they need to set WINDOWSSDKDIR.
#
# Compilers for 64bit may be from the free SDK, or Visual Studio Professional.
# The free Express compilers don't contain 64 bit compilers, which is why
# you instead need the SDK.
# Release enginering will use VS2010 Pro, so the frequency of testing of
# SDK based builds will depend entirely on individual usage.
# We only need to do this once
ifndef VS2010_EXISTS
# The 2 key paths we need are WINDOWSSDKDIR and VS100COMNTOOLS.
# If not defined try to see if default location exists.
# If defined make sure that the path has no spaces.
# Finally, export path with no spaces so logic minimizes FullPath calls.
ifndef WINDOWSSDKDIR
# The 7.0a SDK is the second choice.
xWINDOWSSDKDIR :="$(_program_files32)/Microsoft SDKs/Windows/v7.0a/"
fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
# The 7.1 SDK is the second choice.
ifeq ($(fWINDOWSSDKDIR),)
xWINDOWSSDKDIR :="$(_program_files32)/Microsoft SDKs/Windows/v7.1/"
fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
endif
else
ifneq ($(word 2,$(WINDOWSSDKDIR)),)
xWINDOWSSDKDIR :="$(subst \,/,$(WINDOWSSDKDIR))"
fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
else
fWINDOWSSDKDIR :=$(WINDOWSSDKDIR)
endif
endif
ifneq ($(fWINDOWSSDKDIR),)
WINDOWSSDKDIR :=$(fWINDOWSSDKDIR)/
endif
ifndef VS100COMNTOOLS
xVS100COMNTOOLS :="$(_program_files32)/Microsoft Visual Studio 10.0/Common7/Tools/"
fVS100COMNTOOLS :=$(call FullPath,$(xVS100COMNTOOLS))
else
xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
ifneq ($(word 2,$(VS100COMNTOOLS)),)
fVS100COMNTOOLS :=$(call FullPath,$(xVS100COMNTOOLS))
else
fVS100COMNTOOLS :=$(xVS100COMNTOOLS)
endif
endif
ifneq ($(fVS100COMNTOOLS),)
VS100COMNTOOLS :=$(fVS100COMNTOOLS)/
endif
# Check to see that both exist
ifeq ($(WINDOWSSDKDIR),)
_vs2010_message := No WINDOWSSDKDIR found on system. $(_vs2010_message)
VS2010_EXISTS := false
endif
ifeq ($(VS100COMNTOOLS),)
_vs2010_message := No VS100COMNTOOLS found on system. $(_vs2010_message)
VS2010_EXISTS := false
endif
ifeq ($(VS2010_EXISTS),false)
x:=$(warning WARNING: No VS2010 available. $(_vs2010_message))
VS100COMNTOOLS :=
WINDOWSSDKDIR :=
else
VS2010_EXISTS := true
_msvc_dir :=$(VS100COMNTOOLS)/../../Vc
endif
export VS2010_EXISTS
export VS100COMNTOOLS
export WINDOWSSDKDIR
endif
ifneq ($(VS2010_EXISTS),true)
x:=$(error ERROR: No VS2010 found on system.)
endif
# VS2010 Compiler root directory
_msvc_dir :=$(VS100COMNTOOLS)/../../Vc
# SDK root directory
_ms_sdk :=$(WINDOWSSDKDIR)
# Compiler bin directory and redist directory
ifeq ($(ARCH_DATA_MODEL), 32)
_compiler_bin :=$(_msvc_dir)/Bin
_redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC100.CRT)
endif
ifeq ($(ARCH_DATA_MODEL), 64)
_compiler_bin :=$(_msvc_dir)/bin/amd64
_redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x64/Microsoft.VC100.CRT)
endif
ifeq ($(_redist_sdk),)
_redist_sdk :=$(_system_root)/system32
endif
# Location on system where jdk installs might be
ifneq ($(_program_files),)
USRJDKINSTANCES_PATH =$(_program_files)/Java
else
USRJDKINSTANCES_PATH =$(_system_drive)/
endif
# SLASH_JAVA: location of all network accessable files
# NOTE: Do not use FullPath on this because it's often a drive letter and
# plain drive letters are ambiguous, so just use this 'as is'.
ifdef ALT_SLASH_JAVA
xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
SLASH_JAVA :=$(xALT_SLASH_JAVA)
else
ifdef ALT_JDK_JAVA_DRIVE
SLASH_JAVA =$(JDK_JAVA_DRIVE)
else
SLASH_JAVA =J:
endif
endif
#SLASH_JAVA:=$(call AltCheckSpaces,SLASH_JAVA)
# JDK_DEVTOOLS_DIR: common path for all the java devtools
ifdef ALT_JDK_DEVTOOLS_DIR
xALT_JDK_DEVTOOLS_DIR :="$(subst \,/,$(ALT_JDK_DEVTOOLS_DIR))"
JDK_DEVTOOLS_DIR :=$(call FullPath,$(xALT_JDK_DEVTOOLS_DIR))
else
JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
endif
JDK_DEVTOOLS_DIR:=$(call AltCheckSpaces,JDK_DEVTOOLS_DIR)
# COMPILER_PATH: path to where the compiler and tools are installed.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifdef ALT_COMPILER_PATH
xALT_COMPILER_PATH :="$(subst \,/,$(ALT_COMPILER_PATH))"
fxALT_COMPILER_PATH :=$(call FullPath,$(xALT_COMPILER_PATH))
COMPILER_PATH :=$(call PrefixPath,$(fxALT_COMPILER_PATH))
else
COMPILER_PATH :=$(call PrefixPath,$(_compiler_bin))
endif
COMPILER_PATH :=$(call AltCheckSpaces,COMPILER_PATH)
# MSDEVTOOLS_PATH: path to where the additional MS Compiler tools are.
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifdef ALT_MSDEVTOOLS_PATH
xALT_MSDEVTOOLS_PATH :="$(subst \,/,$(ALT_MSDEVTOOLS_PATH))"
fxALT_MSDEVTOOLS_PATH :=$(call FullPath,$(xALT_MSDEVTOOLS_PATH))
MSDEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_MSDEVTOOLS_PATH))
else
ifeq ($(ARCH_DATA_MODEL), 64)
ifdef MSTOOLS
xMSTOOLS :="$(subst \,/,$(MSTOOLS))"
_ms_tools :=$(call FullPath,$(xMSTOOLS))
else
ifdef Mstools
xMSTOOLS :="$(subst \,/,$(Mstools))"
_ms_tools :=$(call FullPath,$(xMSTOOLS))
else
_ms_tools :=
endif
endif
ifneq ($(_ms_tools),)
_ms_tools_bin :=$(_ms_tools)/Bin
else
# Assumes compiler bin is .../Bin/win64/x86/AMD64, rc.exe is 3 levels up
_ms_tools_bin :=$(_compiler_bin)/../../..
endif
else
_ms_tools_bin :=$(_compiler_bin)
endif
MSDEVTOOLS_PATH :=$(call PrefixPath,$(_ms_tools_bin))
endif
MSDEVTOOLS_PATH:=$(call AltCheckSpaces,MSDEVTOOLS_PATH)
# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
ifdef ALT_DEVTOOLS_PATH
xALT_DEVTOOLS_PATH :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
DEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_DEVTOOLS_PATH))
else
ifdef USING_CYGWIN
DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
else
xDEVTOOLS_PATH :="$(_system_drive)/utils"
fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
DEVTOOLS_PATH :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
endif
endif
DEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
# _BOOTDIR2: Second choice
# The _BOOTDIR3 is defind optionally.
ifndef ALT_BOOTDIR
_BOOTDIR1 =$(_system_drive)/jdk$(PREVIOUS_JDK_VERSION)
_BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
_BOOTDIR3 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
endif
# Everybody needs the MSVCRNN runtime starting with VS2010
_NEEDS_MSVCRNN = true
ifeq ($(_NEEDS_MSVCRNN), true)
# MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed
ifdef ALT_MSVCRNN_DLL_PATH
xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))"
MSVCRNN_DLL_PATH :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH))
else
MSVCRNN_DLL_PATH :=$(_redist_sdk)
endif
MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH)
endif
# DXSDK_PATH: path to Microsoft DirectX SDK Include and Lib
ifdef ALT_DXSDK_PATH
xALT_DXSDK_PATH :="$(subst \,/,$(ALT_DXSDK_PATH))"
DXSDK_PATH :=$(call FullPath,$(xALT_DXSDK_PATH))
else
_DXSDK_PATH1 :=$(_dx_sdk_dir)
_DXSDK_PATH2 :=$(JDK_DEVTOOLS_DIR)/windows/dxsdk
DXSDK_PATH :=$(call DirExists,$(_DXSDK_PATH1),$(_DXSDK_PATH2),$(_dx_sdk_dir))
endif
DXSDK_PATH :=$(call AltCheckSpaces,DXSDK_PATH)
# DXSDK_INCLUDE_PATH: path to Microsoft DirectX SDK Include
ifdef ALT_DXSDK_INCLUDE_PATH
xALT_DXSDK_INCLUDE_PATH :="$(subst \,/,$(ALT_DXSDK_INCLUDE_PATH))"
DXSDK_INCLUDE_PATH :=$(call FullPath,$(xALT_DXSDK_INCLUDE_PATH))
else
DXSDK_INCLUDE_PATH =$(subst //,/,$(DXSDK_PATH)/Include)
endif
# DXSDK_LIB_PATH: path to Microsoft DirectX SDK Lib
ifdef ALT_DXSDK_LIB_PATH
xALT_DXSDK_LIB_PATH :="$(subst \,/,$(ALT_DXSDK_LIB_PATH))"
DXSDK_LIB_PATH :=$(call FullPath,$(xALT_DXSDK_LIB_PATH))
else
ifeq ($(ARCH_DATA_MODEL), 64)
# 64bit libs are located in "Lib/x64" subdir
DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib/x64)
else
DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib)
endif
endif
# DEPLOY_MSSDK: Microsoft SDK for this platform (for deploy)
ifdef ALT_DEPLOY_MSSDK
xALT_DEPLOY_MSSDK :="$(subst \,/,$(ALT_DEPLOY_MSSDK))"
DEPLOY_MSSDK :=$(call FullPath,$(xALT_DEPLOY_MSSDK))
else
DEPLOY_MSSDK :=$(_ms_sdk)
endif
DEPLOY_MSSDK:=$(call AltCheckSpaces,DEPLOY_MSSDK)
# INSTALL_MSSDK: Microsoft Installer SDK for this platform (for install)
ifdef ALT_INSTALL_MSSDK
xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
else
INSTALL_MSSDK :=$(_ms_sdk)
endif
INSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
# WSCRIPT: path to wscript.exe (used in creating install bundles)
ifdef ALT_WSCRIPT
xALT_WSCRIPT :="$(subst \,/,$(ALT_WSCRIPT))"
WSCRIPT =$(xALT_WSCRIPT)
else
_WSCRIPT1 :=$(_system_root)/system32/wscript.exe
_WSCRIPT2 :=$(DEVTOOLS_PATH)wscript.exe
WSCRIPT :=$(call FileExists,$(_WSCRIPT1),$(_WSCRIPT2))
endif
WSCRIPT:=$(call AltCheckSpaces,WSCRIPT)
# batch mode no modal dialogs on errors, please.
WSCRIPT += -B
# CSCRIPT: path to cscript.exe (used in creating install bundles)
ifdef ALT_CSCRIPT
xALT_CSCRIPT :="$(subst \,/,$(ALT_CSCRIPT))"
CSCRIPT =$(xALT_CSCRIPT)
else
_CSCRIPT1 :=$(_system_root)/system32/cscript.exe
_CSCRIPT2 :=$(DEVTOOLS_PATH)cscript.exe
CSCRIPT :=$(call FileExists,$(_CSCRIPT1),$(_CSCRIPT2))
endif
CSCRIPT:=$(call AltCheckSpaces,CSCRIPT)
# CABARC: path to cabarc.exe (used in creating install bundles)
ifdef ALT_CABARC
xALT_CABARC :="$(subst \,/,$(ALT_CABARC))"
CABARC =$(xALT_CABARC)
else
_CABARC1 :=$(_system_root)/system32/cabarc.exe
_CABARC2 :=$(DEVTOOLS_PATH)cabarc.exe
CABARC :=$(call FileExists,$(_CABARC1),$(_CABARC2))
endif
CABARC:=$(call AltCheckSpaces,CABARC)
# MSICERT: path to msicert.exe (used in creating install bundles)
ifdef ALT_MSICERT
xALT_MSICERT :="$(subst \,/,$(ALT_MSICERT))"
MSICERT =$(xALT_MSICERT)
else
_MSICERT1 :=$(INSTALL_MSSDK)/Bin/msicert.exe
_MSICERT2 :=$(DEVTOOLS_PATH)msicert.exe
MSICERT :=$(call FileExists,$(_MSICERT1),$(_MSICERT2))
endif
MSICERT:=$(call AltCheckSpaces,MSICERT)
# Import JDK images allow for partial builds, components not built are
# imported (or copied from) these import areas when needed.
# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
ifdef ALT_BUILD_JDK_IMPORT_PATH
BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
else
BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
endif
BUILD_JDK_IMPORT_PATH:=$(call AltCheckSpaces,BUILD_JDK_IMPORT_PATH)
# JDK_IMPORT_PATH: location of previously built JDK (this version) to import
ifdef ALT_JDK_IMPORT_PATH
JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
else
JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
endif
JDK_IMPORT_PATH:=$(call AltCheckSpaces,JDK_IMPORT_PATH)
# HOTSPOT_CLIENT_PATH: location of client jvm library file.
ifeq ($(ARCH_DATA_MODEL), 32)
ifdef ALT_HOTSPOT_CLIENT_PATH
HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
else
HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
endif
HOTSPOT_CLIENT_PATH:=$(call AltCheckSpaces,HOTSPOT_CLIENT_PATH)
endif
# HOTSPOT_SERVER_PATH: location of server jvm library file.
ifdef ALT_HOTSPOT_SERVER_PATH
HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
else
HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
endif
HOTSPOT_SERVER_PATH:=$(call AltCheckSpaces,HOTSPOT_SERVER_PATH)
# HOTSPOT_LIB_PATH: location of jvm.lib file.
ifdef ALT_HOTSPOT_LIB_PATH
xALT_HOTSPOT_LIB_PATH :="$(subst \,/,$(ALT_HOTSPOT_LIB_PATH))"
HOTSPOT_LIB_PATH :=$(call FullPath,$(xALT_HOTSPOT_LIB_PATH))
else
HOTSPOT_LIB_PATH =$(HOTSPOT_IMPORT_PATH)/lib
endif
HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
# Special define for checking the binaries
# All windows dll and exe files should have been built with /NXCOMPAT
# and be setup for dynamic base addresses.
# In addition, we should not be dependent on certain dll files that
# we do not or cannot redistribute.
# List of filenames we should NOT be dependent on
ifeq ($(MFC_DEBUG),true)
BANNED_DLLS=msvcp100[.]dll
else
BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll
endif
# Check for /safeseh (only used on 32bit)
define binary_file_safeseh_verification # binary_file
( \
$(ECHO) "Checking for /SAFESEH usage in: $1" && \
if [ "`$(DUMPBIN) /loadconfig $1 | $(EGREP) -i 'Safe Exception Handler Table'`" = "" ] ; then \
$(ECHO) "ERROR: Did not find 'Safe Exception Handler Table' in loadconfig: $1" ; \
$(DUMPBIN) /loadconfig $1 ; \
exit 6 ; \
fi ; \
)
endef
# Check for /NXCOMPAT usage
define binary_file_nxcompat_verification # binary_file
( \
$(ECHO) "Checking for /NXCOMPAT usage in: $1" && \
if [ "`$(DUMPBIN) /headers $1 | $(EGREP) -i 'NX compatible'`" = "" ] ; then \
$(ECHO) "ERROR: Did not find 'NX compatible' in headers: $1" ; \
$(DUMPBIN) /headers $1 ; \
exit 7 ; \
fi ; \
)
endef
# Check for /DYNAMICBASE usage
define binary_file_dynamicbase_verification # binary_file
( \
$(ECHO) "Checking for /DYNAMICBASE usage in: $1" && \
if [ "`$(DUMPBIN) /headers $1 | $(EGREP) -i 'Dynamic base'`" = "" ] ; then \
$(ECHO) "ERROR: Did not find 'Dynamic base' in headers: $1" ; \
$(DUMPBIN) /headers $1 ; \
exit 8 ; \
fi ; \
)
endef
# Check for banned dll usage
define binary_file_dll_verification # binary_file
( \
$(ECHO) "Checking for banned dependencies in: $1" && \
if [ "`$(DUMPBIN) /dependents $1 | $(EGREP) -i '$(BANNED_DLLS)'`" != "" ] ; then \
$(ECHO) "ERROR: Found use of $(BANNED_DLLS)"; \
$(DUMPBIN) /dependents $1 ; \
exit 9 ; \
fi ; \
)
endef
# Macro to check it's input file for properly built executables.
# Relies on process exit code. Different for 32bit vs 64bit.
ifeq ($(ARCH_DATA_MODEL),32)
define binary_file_verification # binary_file
( \
$(call binary_file_safeseh_verification,$1); \
$(call binary_file_nxcompat_verification,$1); \
$(call binary_file_dynamicbase_verification,$1); \
$(call binary_file_dll_verification,$1); \
)
endef
else
define binary_file_verification # binary_file
( \
$(call binary_file_nxcompat_verification,$1); \
$(call binary_file_dynamicbase_verification,$1); \
$(call binary_file_dll_verification,$1); \
)
endef
endif

View File

@ -0,0 +1,666 @@
#
# Copyright (c) 2005, 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.
#
#
# Definitions for all platforms.
#
# Normally the convention is that these alternate definitions of
# primary make variables are never defined inside the Makefiles anywhere
# but are defined via environment variables or set on the make command
# line. So you should never see an ALT_* variable defined in any
# makefiles, just used. This is the convention and there are some
# exceptions, either mistakes or unusual circumstances.
#
# The naming convention for the default value of one of these variables
# that has an ALT_* override capability is to name the default value with a
# leading underscore (_). So for XXX you would have:
# _XXX default value
# ALT_XXX any override the user is providing if any
# XXX the final value, either the default _XXX or the ALT_XXX value.
#
# On Directory names. In very rare cases should the Windows directory
# names use the backslash, please use the C:/ style of windows paths.
# Avoid duplicating the // characters in paths, this has known to cause
# strange problems with jar and other utilities, e.g. /a//b/ != /a/b/.
# Some of these variables have an explicit trailing / character, but in
# general, they should NOT have the trailing / character.
-include $(SPEC)
-include $(VARS)
# Get shared system utilities macros defined
include $(JDK_MAKE_SHARED_DIR)/Defs-utils.gmk
# Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, JDK_TOPDIR, etc. have been defined.
# Simple pwd path
# NOTE: Just use the shell's cd and pwd here, more reliable at sanity time.
define PwdPath
$(shell cd $1 2> $(DEV_NULL) && pwd)
endef
define AbsPwdPathCheck
$(shell cd .. 2> $(DEV_NULL) && cd $1 2> $(DEV_NULL) && pwd)
endef
# Checks an ALT value for spaces (should be one word),
# warns and returns Check_ALT_$1 if spaces
define AltCheckSpaces
$(if $(word 2,$($1)),$(warning "WARNING: Value of $1 contains a space: '$($1)', check or set ALT_$1")Check_ALT_$1,$($1))
endef
# Checks an ALT value for empty, warns and returns Check_ALT_$1 if empty
define AltCheckValue
$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, check or set ALT_$1")Check_ALT_$1)
endef
# Checks any value for empty, warns and returns $2 if empty
define CheckValue
$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, will use '$2'")$2)
endef
# Prefix for a utility prefix path, if empty leave alone, otherwise end with a /
define PrefixPath
$(if $1,$(subst //,/,$1/),)
endef
# Select a directory if it exists, or the alternate 2 or the alternate 3
define DirExists
$(shell \
if [ -d "$1" ]; then \
echo "$1"; \
elif [ -d "$2" ]; then \
echo "$2"; \
else \
echo "$3"; \
fi)
endef
# Select a directory if it exists, or the alternate 2, or the alternate 3, or the alternate 4
define DirExists4
$(shell \
if [ -d "$1" ]; then \
echo "$1"; \
elif [ -d "$2" ]; then \
echo "$2"; \
elif [ -d "$3" ]; then \
echo "$3"; \
else \
echo "$4"; \
fi)
endef
# Select a writable directory if it exists and is writable, or the alternate
define WriteDirExists
$(shell \
if [ -d "$1" -a -w "$1" ]; then \
echo "$1"; \
else \
echo "$2"; \
fi)
endef
# Select a file if it exists, or the alternate 1, or the alternate 2
define FileExists
$(shell \
if [ -r "$1" ]; then \
echo "$1"; \
elif [ -r "$2" ]; then \
echo "$2"; \
else \
echo "NO_FILE_EXISTS"; \
fi)
endef
# Given a line of text, get the version number from it
define GetVersion
$(shell echo $1 | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' )
endef
# Return one part of the version numbers, watch out for non digits.
define VersionWord # Number Version
$(word $1,$(subst ., ,$(subst -, ,$2)))
endef
# Given a major.minor.micro version, return the major, minor, or micro number
define MajorVersion
$(if $(call VersionWord,1,$1),$(call VersionWord,1,$1),0)
endef
define MinorVersion
$(if $(call VersionWord,2,$1),$(call VersionWord,2,$1),0)
endef
define MicroVersion
$(if $(call VersionWord,3,$1),$(call VersionWord,3,$1),0)
endef
# Macro that returns missing, same, newer, or older $1=version $2=required
define CheckVersions
$(shell \
if [ "$1" = "" -o "$2" = "" ]; then \
echo missing; \
elif [ "$1" = "$2" ]; then \
echo same; \
elif [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \
echo older; \
elif [ $(call MajorVersion,$1) -gt $(call MajorVersion,$2) ] ; then \
echo newer; \
elif [ $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \
echo older; \
elif [ $(call MinorVersion,$1) -gt $(call MinorVersion,$2) ]; then \
echo newer; \
elif [ $(call MicroVersion,$1) -lt $(call MicroVersion,$2) ]; then \
echo older; \
elif [ $(call MicroVersion,$1) -gt $(call MicroVersion,$2) ]; then \
echo newer; \
else \
echo same; \
fi)
endef
# Expand SRCDIR_LIST, which is used to automatically include various
# platform and shared sources/headers. This is mainly useful for the
# Mac OS X build, which pulls its platform sources from the solaris and/or
# macosx trees, depending on the component.
ifeq ($(PLATFORM), macosx)
define JavaSrcDirList
$(JAVA_SRCDIR_LIST:%=$1$(JDK_TOPDIR)/%/$2)
endef
define NativeSrcDirList
$(NATIVE_SRCDIR_LIST:%=$1$(JDK_TOPDIR)/%/$2)
endef
endif
# Make sure certain variables are non-empty at this point
_check_values:=\
$(call CheckValue,ARCH,),\
$(call CheckValue,ARCH_DATA_MODEL,),\
$(call CheckValue,ARCH_VM_SUBDIR,),\
$(call CheckValue,JDK_TOPDIR,),\
$(call CheckValue,JDK_MAKE_SHARED_DIR,),\
$(call CheckValue,VARIANT,),\
$(call CheckValue,PLATFORM,)
# Misc common settings for all workspaces
# This determines the version of the product, and the previous version or boot
ifndef JDK_MAJOR_VERSION
JDK_MAJOR_VERSION = 1
PREVIOUS_MAJOR_VERSION = 1
endif
ifndef JDK_MINOR_VERSION
JDK_MINOR_VERSION = 8
PREVIOUS_MINOR_VERSION = 7
endif
ifndef JDK_MICRO_VERSION
JDK_MICRO_VERSION = 0
PREVIOUS_MICRO_VERSION = 0
endif
ifndef MILESTONE
MILESTONE = internal
endif
# Default names
ifdef OPENJDK
LAUNCHER_NAME = openjdk
PRODUCT_NAME = OpenJDK
PRODUCT_SUFFIX = Runtime Environment
JDK_RC_PLATFORM_NAME = Platform
COMPANY_NAME = N/A
else
LAUNCHER_NAME = java
PRODUCT_NAME = Java(TM)
PRODUCT_SUFFIX = SE Runtime Environment
JDK_RC_PLATFORM_NAME = Platform SE
COMPANY_NAME = Oracle Corporation
endif
RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
ifndef BUILD_NUMBER
JDK_BUILD_NUMBER = b00
else
ifndef JDK_BUILD_NUMBER
JDK_BUILD_NUMBER = $(BUILD_NUMBER)
endif
endif
# Default variant is the optimized version of everything
# can be OPT or DBG, default is OPT
# Determine the extra pattern to add to the release name for debug/fastdebug.
# Determine the JDK_IMPORT_VARIANT, so we get the right VM files copied over.
# Determine suffix for obj directory or OBJDIR, for .o files.
# (by keeping .o files separate, just .o files, they don't clobber each
# other, however, the library files will clobber each other).
#
ifeq ($(VARIANT), DBG)
BUILD_VARIANT_RELEASE=-debug
OBJDIRNAME_SUFFIX=_g
else
BUILD_VARIANT_RELEASE=
OBJDIRNAME_SUFFIX=
endif
ifeq ($(FASTDEBUG), true)
VARIANT=DBG
BUILD_VARIANT_RELEASE=-fastdebug
OBJDIRNAME_SUFFIX=_gO
_JDK_IMPORT_VARIANT=/fastdebug
endif
# Depending on the flavor of the build, add a -debug or -fastdebug to the name
ifdef DEBUG_NAME
BUILD_VARIANT_RELEASE=-$(DEBUG_NAME)
endif
# These default values are redefined during a release build.
# CTE can set JDK_UPDATE_VERSION during the update release
ifdef JDK_UPDATE_VERSION
JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)_$(JDK_UPDATE_VERSION)
MARKETING_NUMBER := $(shell \
$(ECHO) $(JDK_UPDATE_VERSION) | $(NAWK) '{if (substr($$0,1,1)=="0") print substr($$0, 2); else print $$0;}')
MARKET_NAME= $(shell $(ECHO) " Update $(MARKETING_NUMBER)")
JDK_MKTG_VERSION = $(JDK_MINOR_VERSION)u$(MARKETING_NUMBER)
else
JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
JDK_MKTG_VERSION = $(JDK_MINOR_VERSION)
MARKET_NAME=
endif
JDK_UNDERSCORE_VERSION = $(subst .,_,$(JDK_VERSION))
JDK_MKTG_UNDERSCORE_VERSION = $(subst .,_,$(JDK_MKTG_VERSION))
# RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set
ifneq ($(MILESTONE),fcs)
RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
else
RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
endif
# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
ifdef BUILD_NUMBER
FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
else
BUILD_NUMBER = b00
ifndef USER_RELEASE_SUFFIX
BUILD_DATE := $(shell $(DATE) '+%Y_%m_%d_%H_%M')
# Avoid [:alnum:] since it depends on the locale.
CLEAN_USERNAME := $(shell $(ECHO) "$(USER)" | $(TR) -d -c 'abcdefghijklmnopqrstuvqxyz0123456789')
USER_RELEASE_SUFFIX := $(shell $(ECHO) "$(CLEAN_USERNAME)_$(BUILD_DATE)" | $(TR) 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz')
endif
export USER_RELEASE_SUFFIX
FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
endif
# Promoted build location
PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
PROMOTED_BUILD_LATEST = latest
PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
PROMOTED_BUILD_DISTDIR = $(PROMOTED_BUILD_BASEDIR)/dist/$(PLATFORM)-$(ARCH)
PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
# If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set
# to parallel.
#
# Recommended setting: 2 seems to be ideal for single cpu machines,
# 2 times the number of CPU's is a basic formula,
# but probably not more than 4 if the machine is
# being shared by others, or the machine is limited
# in RAM or swap.
#
ifdef ALT_PARALLEL_COMPILE_JOBS
PARALLEL_COMPILE_JOBS=$(ALT_PARALLEL_COMPILE_JOBS)
else
PARALLEL_COMPILE_JOBS=2
endif
# Previous JDK release (version of BOOTDIR version)
ifdef ALT_PREVIOUS_JDK_VERSION
PREVIOUS_JDK_VERSION = $(ALT_PREVIOUS_JDK_VERSION)
else
PREVIOUS_JDK_VERSION = $(PREVIOUS_MAJOR_VERSION).$(PREVIOUS_MINOR_VERSION).$(PREVIOUS_MICRO_VERSION)
endif
export PREVIOUS_JDK_VERSION
PREVIOUS_JDK_VERSION:=$(call AltCheckSpaces,PREVIOUS_JDK_VERSION)
# Version with _ instead of . in number
ifeq ($(PREVIOUS_MINOR_VERSION),5)
PREVIOUS_JDK_UNDERSCORE_VERSION = $(subst .,_,$(PREVIOUS_JDK_VERSION))
else
PREVIOUS_JDK_UNDERSCORE_VERSION = $(PREVIOUS_MINOR_VERSION)
endif
# Include any private definitions for this set of workspaces
_PRIVATE_DEFS_FILE=$(JDK_MAKE_SHARED_DIR)/PrivateDefs.gmk
ifeq ($(USING_PRIVATE_DEFS),)
USING_PRIVATE_DEFS:=$(shell if [ -f $(_PRIVATE_DEFS_FILE) ]; then echo true; else echo false; fi)
endif
ifeq ($(USING_PRIVATE_DEFS),true)
dummy:=$(warning "WARNING: Using definitions from $(_PRIVATE_DEFS_FILE)")
include $(_PRIVATE_DEFS_FILE)
endif
# OUTPUTDIR: Location of all output for the build
ifdef ALT_OUTPUTDIR
OUTPUTDIR:=$(subst \,/,$(ALT_OUTPUTDIR))
# Assumes this is absolute (checks later)
ABS_OUTPUTDIR:=$(OUTPUTDIR)
else
ifndef _OUTPUTDIR
# Default: Get "build" parent directory, which should always exist
ifndef BUILD_PARENT_DIRECTORY
BUILD_PARENT_DIRECTORY=$(BUILDDIR)/..
endif
ifdef OPENJDK
_OUTPUTDIRNAME=$(PLATFORM)-$(ARCH)$(OPENJDK_SUFFIX)
else
_OUTPUTDIRNAME=$(PLATFORM)-$(ARCH)
endif
_OUTPUTDIR=$(BUILD_PARENT_DIRECTORY)/build/$(_OUTPUTDIRNAME)
endif
OUTPUTDIR:=$(_OUTPUTDIR)
endif
# Check for spaces and null value
OUTPUTDIR:=$(call AltCheckSpaces,OUTPUTDIR)
# Get platform specific settings
# NB: OUTPUTDIR must be defined. Otherwise hotspot import detection will not work correctly
# On other hand this must be included early as it provides platform specific defines such as FullPath
include $(JDK_MAKE_SHARED_DIR)/Defs-versions.gmk
# Get platform specific settings (defines COMPILER_PATH)
include $(JDK_MAKE_SHARED_DIR)/Defs-$(PLATFORM).gmk
# Components
ifdef ALT_LANGTOOLS_DIST
LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))
else
LANGTOOLS_DIST =
endif
ifdef ALT_CORBA_DIST
CORBA_DIST :=$(call FullPath,$(ALT_CORBA_DIST))
else
CORBA_DIST =
endif
ifdef ALT_JAXP_DIST
JAXP_DIST :=$(call FullPath,$(ALT_JAXP_DIST))
else
JAXP_DIST =
endif
ifdef ALT_JAXWS_DIST
JAXWS_DIST :=$(call FullPath,$(ALT_JAXWS_DIST))
else
JAXWS_DIST =
endif
# HOTSPOT_DOCS_IMPORT_PATH: Path to hotspot docs files to import into the docs generation
ifdef ALT_HOTSPOT_DOCS_IMPORT_PATH
HOTSPOT_DOCS_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_DOCS_IMPORT_PATH))
else
HOTSPOT_DOCS_IMPORT_PATH :=$(call DirExists,$(HOTSPOT_IMPORT_PATH)/docs,$(PROMOTED_BUILD_BASEDIR)/docs,/NO_DOCS_DIR)
endif
# These are the same on all platforms but require the above platform include 1st
# BOOTDIR: Bootstrap JDK, previous released JDK.
# _BOOTDIR1 and _BOOTDIR2 picked by platform
# Platform may optionally define _BOOTDIR3 as well.
ifdef ALT_BOOTDIR
BOOTDIR =$(ALT_BOOTDIR)
else
ifdef _BOOTDIR3
BOOTDIR :=$(call DirExists4,$(_BOOTDIR1),$(_BOOTDIR2),$(_BOOTDIR3),/NO_BOOTDIR)
else
BOOTDIR :=$(call DirExists,$(_BOOTDIR1),$(_BOOTDIR2),/NO_BOOTDIR)
endif
endif
export BOOTDIR
BOOTDIR:=$(call AltCheckSpaces,BOOTDIR)
# PREVIOUS_FCS_RE_AREA: re path to where previous release binaries/bundles are
PREVIOUS_FCS_RE_AREA = $(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs
# PREVIOUS_RELEASE_IMAGE: Previous install image to compare against
ifdef ALT_PREVIOUS_RELEASE_IMAGE
# Explicit image provided, no bundle access needed
PREVIOUS_RELEASE_IMAGE :=$(call FullPath,$(ALT_PREVIOUS_RELEASE_IMAGE))
else
# PREVIOUS_RELEASE_PATH: path to where previous release bundles are
ifdef ALT_PREVIOUS_RELEASE_PATH
PREVIOUS_RELEASE_PATH :=$(call OptFullPath,$(ALT_PREVIOUS_RELEASE_PATH))
else
PREVIOUS_RELEASE_PATH := \
$(call DirExists,$(PREVIOUS_FCS_RE_AREA)/bundles/$(PLATFORM)-$(ARCH),,)
endif
# Depending on if we have access to these bundles
ifeq ($(PREVIOUS_RELEASE_PATH),)
# Use images in re area or BOOTDIR (which is normally the previous release)
PREVIOUS_RELEASE_IMAGE := \
$(call DirExists,$(PREVIOUS_FCS_RE_AREA)/binaries/$(PLATFORM)-$(ARCH),$(BOOTDIR),)
else
# Get names of and paths to bundles
PREVIOUS_RELEASE_PATH:=$(call AltCheckSpaces,PREVIOUS_RELEASE_PATH)
export PREVIOUS_RELEASE_PATH
# PREVIOUS_JDK_FILE: filename of install bundle for previous JDK
ifdef ALT_PREVIOUS_JDK_FILE
PREVIOUS_JDK_FILE =$(ALT_PREVIOUS_JDK_FILE)
else
PREVIOUS_JDK_FILE = \
jdk-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX)
endif
export PREVIOUS_JDK_FILE
PREVIOUS_JDK_FILE:=$(call AltCheckSpaces,PREVIOUS_JDK_FILE)
# PREVIOUS_JRE_FILE: filename of install bundle for previous JRE
ifdef ALT_PREVIOUS_JRE_FILE
PREVIOUS_JRE_FILE =$(ALT_PREVIOUS_JRE_FILE)
else
PREVIOUS_JRE_FILE = \
jre-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX)
endif
export PREVIOUS_JRE_FILE
PREVIOUS_JRE_FILE:=$(call AltCheckSpaces,PREVIOUS_JRE_FILE)
# Paths to these bundles
PREVIOUS_JRE_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JRE_FILE)
PREVIOUS_JDK_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JDK_FILE)
endif
endif
# Indicate we are using an image comparison
ifneq ($(PREVIOUS_RELEASE_IMAGE),)
PREVIOUS_RELEASE_PATH = USING-PREVIOUS_RELEASE_IMAGE
PREVIOUS_JRE_BUNDLE = USING-PREVIOUS_RELEASE_IMAGE
PREVIOUS_JDK_BUNDLE = USING-PREVIOUS_RELEASE_IMAGE
endif
# CACERTS_FILE: if OPENJDK is false and the internal version of the file
# (that is, non-empty) is available, use it, otherwise use an
# empty keystore.
#
# We put this variable here for sanity checks and in case another
# components will need to know which cacerts file is being used.
#
ifdef ALT_CACERTS_FILE
CACERTS_FILE = $(ALT_CACERTS_FILE)
else
CACERTS_EXT = $(SHARE_SRC)/lib/security/cacerts
ifdef OPENJDK
CACERTS_FILE :=$(CACERTS_EXT)
else # (!OPENJDK)
CACERTS_INT = $(CLOSED_SHARE_SRC)/lib/security/cacerts.internal
CACERTS_FILE :=$(call FileExists,$(CACERTS_INT),$(CACERTS_EXT))
endif # (OPENJDK)
endif
CACERTS_FILE:=$(call AltCheckSpaces,CACERTS_FILE)
#
# When signing the JCE framework and provider, we could be using built
# bits on a read-only filesystem. If so, this test will fail and crash
# the build.
#
ifndef IGNORE_WRITABLE_OUTPUTDIR_TEST
# Create the output directory and make sure it exists and is writable
_create_outputdir:=$(shell $(MKDIR) -p "$(OUTPUTDIR)" > $(DEV_NULL) 2>&1)
ifeq ($(call WriteDirExists,$(OUTPUTDIR),/dev/null),/dev/null)
_outputdir_error:=$(error "ERROR: OUTPUTDIR '$(OUTPUTDIR)' not created or not writable")
endif
endif
# Define absolute path if needed and check for spaces and null value
ifndef ABS_OUTPUTDIR
ifdef _OUTPUTDIRNAME
#Could not define this at the same time as _OUTPUTDIRNAME as FullPath is not defined at that point
ABS_BUILD_PARENT_DIRECTORY:=$(call FullPath,$(BUILD_PARENT_DIRECTORY))
ABS_OUTPUTDIR:=$(ABS_BUILD_PARENT_DIRECTORY)/build/$(_OUTPUTDIRNAME)
else
ABS_OUTPUTDIR:=$(call FullPath,$(OUTPUTDIR))
endif
endif
ABS_OUTPUTDIR:=$(call AltCheckSpaces,ABS_OUTPUTDIR)
# Make doubly sure this is a full path
ifeq ($(call AbsPwdPathCheck,$(ABS_OUTPUTDIR)), )
ifdef ALT_OUTPUTDIR
_outputdir_error:=$(error "ERROR: Trouble with the absolute path for OUTPUTDIR '$(OUTPUTDIR)', was ALT_OUTPUTDIR '$(ALT_OUTPUTDIR)' an absolute path?")
else
_outputdir_error:=$(error "ERROR: Trouble with the absolute path for OUTPUTDIR '$(OUTPUTDIR)'")
endif
endif
_dir1:=$(call FullPath,$(ABS_OUTPUTDIR))
_dir2:=$(call FullPath,$(OUTPUTDIR))
ifneq ($(_dir1),$(_dir2))
_outputdir_error:=$(error "ERROR: ABS_OUTPUTDIR '$(ABS_OUTPUTDIR)' is not the same directory as OUTPUTDIR '$(OUTPUTDIR)', '$(_dir1)'!='$(_dir2)'")
endif
# Bin directory
# NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR)
# MOZILLA_HEADERS_PATH: path to mozilla header files for plugin
ifdef ALT_MOZILLA_HEADERS_PATH
MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH))
else
MOZILLA_HEADERS_PATH =$(JDK_DEVTOOLS_DIR)/share/plugin
endif
MOZILLA_HEADERS_PATH:=$(call AltCheckSpaces,MOZILLA_HEADERS_PATH)
# CUPS_HEADERS_PATH: path to Cups headers files for Unix printing
#ifneq ($(PLATFORM), windows)
#JDK_CUPS_HEADERS_PATH=$(JDK_DEVTOOLS_DIR)/share/cups/include
# ifdef ALT_CUPS_HEADERS_PATH
# CUPS_HEADERS_PATH:=$(call FullPath,$(ALT_CUPS_HEADERS_PATH))
# CUPS_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
# else
# CUPS_HEADERS_PATH:= \
# $(shell if [ -d "$(JDK_CUPS_HEADERS_PATH)" ]; then \
# echo "$(JDK_CUPS_HEADERS_PATH)"; \
# else \
# echo "$(_CUPS_HEADERS_PATH)";\
# fi)
# endif
#endif
# Utilities ant
ifeq ($(PLATFORM), windows)
ifeq ($(ANT_HOME),)
ANT_HOME := $(call DirExists,$(JDK_DEVTOOLS_DIR)/share/ant/latest,,)
endif
endif
# There are few problems with ant we need to workaround:
# 1) ant is using temporary directory java.io.tmpdir
# However, this directory is not unique enough and two separate ant processes
# can easily end up using the exact same temp directory. This may lead to weird build failures
# To workaround this we will define tmp dir explicitly
# 2) ant attempts to detect JDK location based on java.exe location
# This is fragile as developer may have JRE first on the PATH.
# To workaround this we will specify JAVA_HOME explicitly
ANT_TMPDIR = $(ABS_OUTPUTDIR)/tmp
ANT_WORKAROUNDS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)' JAVA_HOME='$(BOOTDIR)'
ifeq ($(ANT_HOME),)
ANT = $(ANT_WORKAROUNDS) ant
else
ANT = $(ANT_WORKAROUNDS) $(ANT_HOME)/bin/ant
endif
ifdef ALT_COPYRIGHT_YEAR
COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
else
COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')
endif
# Create file with source information
SOURCE_TIPS=$(ABS_OUTPUTDIR)/source_tips
# The source tips can come from the Mercurial repository, or in the files
# $(HGTIP_FILENAME) which contains the tip but is also positioned in the same
# directory as the original $(HGDIR) directory.
# These should not be := assignments, only used from the root Makefile.
HG_VERSION = $(shell $(HG) version 2> $(DEV_NULL))
HG_DIRECTORY=.hg
HGTIP_FILENAME=.hgtip
HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO
REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \
$(shell ( $(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) ; \
$(LS) $(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) ) \
2> $(DEV_NULL))))))
# Emit the repo:tip pairs to $@
define GetSourceTips
for i in $(REPO_LIST) IGNORE ; do \
if [ "$${i}" = "IGNORE" ] ; then \
continue; \
elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \
$(PRINTF) " %s:%s" \
"$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \
elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \
$(PRINTF) " %s:%s" \
"$${i}" `$(CAT) $${i}/$(HGTIP_FILENAME)` ; \
fi; \
done >> $@
$(PRINTF) "\n" >> $@
endef
# Create the HGTIP_FILENAME file
define CreateHgTip
$(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME);\
$(ECHO) $1/$(HGTIP_FILENAME)
endef
# Get the compiler specific settings (will run the compiler to find out)
# NOTE: COMPILER_PATH must be set by this time.
# Up until we include this file, we don't know what specific compiler
# version is actually being used (i.e. what is in PATH or COMPILER_PATH).
include $(JDK_MAKE_SHARED_DIR)/Compiler-$(CC_VERSION).gmk

View File

@ -0,0 +1,526 @@
#
# 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.
#
#
# Shared platform (OS/ARCH) variable settings for the JDK builds.
#
# Includes basic system requirements, versions of utilities required,
# suffixes on files, and basic defaults attributed to the build platform.
#
#
# Assumes some basic unix system utilities (e.g. uname) are in the search path
# in order to figure out the system.
#
ifndef PLATFORM_SHARED
PLATFORM_SHARED=done
# Possible Input variables:
# ARCH_DATA_MODEL 32 or 64, default to 32
# USER, LOGNAME user name (runs logname, or id if not set)
# PROCESSOR_IDENTIFIER windows only: needed in environment
#
# (Also gets input by running the utilities uname, logname, isainfo, or id.)
#
# Variables set by this file:
# SYSTEM_UNAME what 'uname' says this system is
# USER login name of user (minus blanks)
# PLATFORM windows, solaris, or linux
# VARIANT OPT or DBG, OPT is the default
# TEMP_DISK /tmp or C:/temp
# ARCH_DATA_MODEL 32 or 64
# ARCH sparc, sparcv9, i586, amd64, or ia64
# ARCH_FAMILY sparc or i586
# ARCHPROP sparc or x86
# ARCH_VM_SUBDIR jre/bin, jre/lib/sparc, etc.
# LIBARCH sparc, sparcv9, i386, amd64, or ia64
# DEV_NULL destination of /dev/null, NUL or /dev/NULL
# CLASSPATH_SEPARATOR separator in classpath, ; or :
# LIB_PREFIX dynamic or static library prefix, lib or empty
# LIB_SUFFIX static library file suffix, .lib or .a?
# LIBRARY_SUFFIX dynamic library file suffix, .dll or .so
# OBJECT_SUFFIX object file suffix, .o or .obj
# EXE_SUFFIX executable file suffix, .exe or empty
# BUNDLE_FILE_SUFFIX suffix for bundles: .tar or .tar.gz
# ISA_DIR solaris only: /sparcv9 or /amd64
# LIBARCH32 solaris only: sparc or i386
# LIBARCH64 solaris only: sparcv9 or amd64
# USING_CYGWIN windows only: true or false
# ISHIELD_TEMP_MIN windows only: minimum disk space in temp area
# Only run uname once in this make session.
ifndef SYSTEM_UNAME
SYSTEM_UNAME := $(shell uname)
export SYSTEM_UNAME
endif
#
# Prune out all known SCM (Source Code Management) directories
# so they will not be included when copying directory trees
# or packaging up .jar files, etc. This applies to all workspaces.
#
SCM_DIRs = .hg .svn CVS RCS SCCS Codemgr_wsdata deleted_files .hgignore .hgtags
# When changing SCM_DIRs also change SCM_DIRS_rexp and SCM_DIRS_prune:
SCM_DIRS_rexp = ".hg|.svn|CVS|RCS|SCCS|Codemgr_wsdata|deleted_files|.hgignore|.hgtags"
SCM_DIRS_prune = \( -name .hg -o -name .svn -o -name CVS -o -name RCS -o -name SCCS -o -name Codemgr_wsdata -o -name deleted_files -o -name .hgignore -o -name .hgtags \) -prune
# Don't define this unless it's not defined
ifndef VARIANT
VARIANT=OPT
endif
# Platform settings specific to Solaris
ifeq ($(SYSTEM_UNAME), SunOS)
PLATFORM = solaris
# Solaris sparc build can be either 32-bit or 64-bit.
# Default to 32, but allow explicit setting to 32 or 64.
ifndef ARCH_DATA_MODEL
ARCH_DATA_MODEL=32
endif
ifeq ($(ARCH_DATA_MODEL), 32)
processor := $(shell uname -p)
archExpr = case "$(processor)" in \
i[3-9]86) \
echo i586 \
;; \
sparc*) \
echo sparc \
;; \
*) \
echo $(processor) \
;; \
esac
ARCH := $(shell $(archExpr))
else
ARCH := $(shell isainfo -n)
# ISA_DIR is used to locate 64-bit specific libraries which are generally
# in the same general place as other libraries under the ./$(ARCH) directory
ISA_DIR = /$(ARCH)
endif
# Need to maintain the jre/lib/i386 location for 32-bit Intel
ifeq ($(ARCH), i586)
ARCH_FAMILY = $(ARCH)
LIBARCH = i386
# Value of Java os.arch property
ARCHPROP = x86
else
ifeq ($(ARCH), amd64)
ARCH_FAMILY = i586
else
ARCH_FAMILY = sparc
endif
LIBARCH = $(ARCH)
# Value of Java os.arch property
ARCHPROP = $(LIBARCH)
endif
# The two LIBARCH names
ifeq ($(ARCH_FAMILY), sparc)
LIBARCH32 = sparc
LIBARCH64 = sparcv9
else
LIBARCH32 = i386
LIBARCH64 = amd64
endif
# Suffix for file bundles used in previous release
BUNDLE_FILE_SUFFIX=.tar
# How much RAM does this machine have (zones send an error to stderr):
MB_OF_MEMORY:=$(shell /usr/sbin/prtconf 2>/dev/null | fgrep 'Memory size:' | expand | cut -d' ' -f3)
endif
# Platform settings specific to Linux
ifeq ($(SYSTEM_UNAME), Linux)
PLATFORM = linux
# Arch and OS name/version
ifdef CROSS_COMPILE_ARCH
mach := $(CROSS_COMPILE_ARCH)
else
mach := $(shell uname -m)
endif
archExpr = case "$(mach)" in \
i[3-9]86) \
echo i586 \
;; \
ia64) \
echo ia64 \
;; \
x86_64) \
echo amd64 \
;; \
sparc*) \
echo sparc \
;; \
arm*) \
echo arm \
;; \
*) \
echo $(mach) \
;; \
esac
ARCH := $(shell $(archExpr) )
ARCH_FAMILY := $(ARCH)
# Linux builds may be 32-bit or 64-bit data model.
ifeq ($(ARCH), sparc)
# Linux sparc build can be either 32-bit or 64-bit.
# Default to 32, but allow explicit setting to 32 or 64.
ifndef ARCH_DATA_MODEL
ARCH_DATA_MODEL=32
endif
ifeq ($(ARCH_DATA_MODEL), 32)
ARCH=sparc
else
ARCH=sparcv9
endif
else
# Most archs are 32-bit
ifndef ARCH_DATA_MODEL
ARCH_DATA_MODEL=32
ifeq ($(ARCH), amd64)
ARCH_DATA_MODEL=64
endif
ifeq ($(ARCH), ia64)
ARCH_DATA_MODEL=64
endif
endif
endif
# Need to maintain the jre/lib/i386 location for 32-bit Intel
ifeq ($(ARCH), i586)
LIBARCH = i386
else
LIBARCH = $(ARCH)
endif
# Value of Java os.arch property
ARCHPROP = $(LIBARCH)
# Suffix for file bundles used in previous release
BUNDLE_FILE_SUFFIX=.tar.gz
# How much RAM does this machine have:
MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' )
endif
ifeq ($(SYSTEM_UNAME), Darwin)
PLATFORM = macosx
OS_NAME = darwin
OS_VENDOR = Apple
GB_OF_MEMORY := $(shell system_profiler SPHardwareDataType | fgrep Memory: | awk '{print $$2}')
MB_OF_MEMORY := $(shell expr ${GB_OF_MEMORY} '*' 1024)
endif
# Platform settings specific to BSD/Mac OS X
ifeq ($(PLATFORM), macosx)
OS_VERSION := $(shell uname -r)
# Arch and OS name/version
# Darwin x86 builds are i386/amd64 universal by default.
# Allow arch to be set from the environment to avoid this.
ifeq ($(origin ARCH), undefined)
ifeq ($(PLATFORM), macosx)
# ifdef OPENJDK -- when universal 32/64 binaries available in Hotspot
# mach := universal
# else
mach := x86_64
# endif
else
mach := $(shell uname -m)
endif
else
mach := $(ARCH)
endif
archExpr = case "$(mach)" in \
i[3-9]86) \
echo i586 \
;; \
sparc64) \
echo sparcv9 \
;; \
sparc*) \
echo sparc \
;; \
x86_64) \
echo amd64 \
;; \
universal) \
echo universal \
;; \
"Power Macintosh") \
echo ppc \
;; \
*) \
echo $(mach) \
;; \
esac
ARCH := $(shell $(archExpr) )
ARCH_FAMILY := $(ARCH)
# i586, sparc, and ppc are 32 bit, amd64 and sparc64 are 64
# ARCH_DATA_MODEL does not exactly mean anything in universal
# but it has to be one or the other, so pick 32
ifneq (,$(findstring $(ARCH), i586 sparc ppc universal))
ARCH_DATA_MODEL=32
else
ARCH_DATA_MODEL=64
endif
# Need to maintain the jre/lib/i386 location for 32-bit Intel
ifeq ($(ARCH), i586)
LIBARCH = i386
else
LIBARCH = $(ARCH)
endif
# Value of Java os.arch property
ARCHPROP = $(LIBARCH)
# Suffix for file bundles used in previous release
BUNDLE_FILE_SUFFIX=.tar.gz
# How much RAM does this machine have:
endif
# Windows with and without CYGWIN will be slightly different
ifeq ($(SYSTEM_UNAME), Windows_NT)
PLATFORM = windows
endif
ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
PLATFORM = windows
USING_CYGWIN = true
export USING_CYGWIN
CYGPATH_CMD=cygpath -a -s -m
# Only run "cygpath /" once in this make session.
ifndef CYGWIN_HOME
CYGWIN_HOME := $(shell $(CYGPATH_CMD) /)
export CYGWIN_HOME
endif
endif
# Platform settings specific to Windows
ifeq ($(PLATFORM), windows)
# Windows builds default to the appropriate for the underlaying
# architecture.
# Temporary disk area
TEMP_DISK=C:/temp
# GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always
# return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead.
# And sometimes PROCESSOR_IDENTIFIER is not defined at all
# (in some restricted shells), so we use uname if we have to.
ifeq ($(PROCESSOR_IDENTIFIER),)
# Only run uname -m once in this make session.
ifndef SYSTEM_UNAME_M
SYSTEM_UNAME_M := $(shell uname -m)
export SYSTEM_UNAME_M
endif
PROC_ARCH:=$(SYSTEM_UNAME_M)
else
PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
endif
# Cover all the possibilities, MKS uname, CYGWIN uname, PROCESSOR_IDENTIFIER
# Get: X86, X64, or IA64
PROC_ARCH:=$(patsubst 386,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst 486,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst 586,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst 686,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst i386,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst i486,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst i586,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst i686,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst x86,X86,$(PROC_ARCH))
PROC_ARCH:=$(patsubst intel64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst Intel64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst INTEL64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst em64t,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst EM64T,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst amd64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst AMD64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst 8664,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst x86_64,X64,$(PROC_ARCH))
PROC_ARCH:=$(patsubst ia64,IA64,$(PROC_ARCH))
ifndef ARCH_DATA_MODEL
ifeq ($(PROC_ARCH),IA64)
ARCH_DATA_MODEL=64
else
ifeq ($(PROC_ARCH),X64)
ARCH_DATA_MODEL=64
else
ARCH_DATA_MODEL=32
endif
endif
endif
export ARCH_DATA_MODEL
ifeq ($(ARCH_DATA_MODEL), 64)
# If the user wants to perform a cross compile build then they must
# - set ARCH_DATA_MODEL=64 and either
# + set ARCH to ia64 or amd64, or
ifeq ($(PROC_ARCH),X64)
ARCH=amd64
else
ifeq ($(PROC_ARCH),IA64)
ARCH=ia64
endif
endif
LIBARCH=$(ARCH)
# Value of Java os.arch property
ARCHPROP=$(LIBARCH)
else
# LIBARCH is used to preserve the jre/lib/i386 directory name for 32-bit intel
ARCH=i586
LIBARCH=i386
# Value of Java os.arch property
ARCHPROP=x86
endif
ARCH_FAMILY = $(ARCH)
# Where is unwanted output to be delivered?
# MKS uses the special file "NUL", cygwin uses the customary unix file.
ifeq ($(USING_CYGWIN),true)
DEV_NULL = /dev/null
else
DEV_NULL = NUL
endif
export DEV_NULL
# Classpath separator
CLASSPATH_SEPARATOR = ;
# The suffix used for object file (.o for unix .obj for windows)
OBJECT_SUFFIX = obj
# The suffix applied to executables (.exe for windows, nothing for solaris)
EXE_SUFFIX = .exe
# The prefix applied to library files (lib for solaris, nothing for windows)
LIB_PREFIX=
LIBRARY_SUFFIX = dll
LIB_SUFFIX = lib
# User name determination (set _USER)
ifndef USER
ifdef USERNAME
_USER := $(USERNAME)
else
ifdef LOGNAME
_USER := $(LOGNAME)
else
_USER := $(shell id -un)
endif
endif
else
_USER:=$(USER)
endif
# Location of client/server directories
ARCH_VM_SUBDIR=jre/bin
# Suffix for file bundles used in previous release
BUNDLE_FILE_SUFFIX=.tar
# ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
# bundles build on windows.
ISHIELD_TEMP_MIN=250000
# How much RAM does this machine have:
ifeq ($(JDK_HAS_MEM_INFO),)
MB_OF_MEMORY := 1024
endif
endif
# Unix type settings (same for all unix platforms)
ifneq ($(PLATFORM), windows)
# Temporary disk area
TEMP_DISK=/tmp
# Where is unwanted output to be delivered?
DEV_NULL = /dev/null
export DEV_NULL
# Character used between entries in classpath
CLASSPATH_SEPARATOR = :
# suffix used for object file (.o for unix .obj for windows)
OBJECT_SUFFIX = o
# The suffix applied to runtime libraries
LIBRARY_SUFFIX = so
# The suffix applied to link libraries
LIB_SUFFIX = so
# The suffix applied to executables (.exe for windows, nothing for solaris)
EXE_SUFFIX =
# The prefix applied to library files (lib for solaris, nothing for windows)
LIB_PREFIX = lib
# User name determination (set _USER)
ifndef USER
ifdef LOGNAME
_USER := $(LOGNAME)
else
_USER := $(shell logname)
endif
else
_USER:=$(USER)
endif
# Location of client/server directories
ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)
endif
# Darwin-specific Overrides
ifeq ($(SYSTEM_UNAME),Darwin)
# The suffix applied to runtime libraries
LIBRARY_SUFFIX = dylib
# The suffix applied to link libraries
ifeq ($(ARCH), universal)
LIB_SUFFIX = o
else
LIB_SUFFIX = a
endif
ifeq ($(PLATFORM), macosx)
ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)
endif
endif
# Machines with 512Mb or less of real memory are considered low memory
# build machines and adjustments will be made to prevent excessing
# system swapping during the build.
ifeq ($(JDK_HAS_MEM_INFO),)
JDK_HAS_MEM_INFO=true
export JDK_HAS_MEM_INFO
ifneq ($(MB_OF_MEMORY),)
LOW_MEMORY_MACHINE := $(shell \
if [ $(MB_OF_MEMORY) -le 512 ] ; then \
echo "true"; \
else \
echo "false"; \
fi)
MAX_VM_MEMORY := 512
MIN_VM_MEMORY := $(MAX_VM_MEMORY)
else
MB_OF_MEMORY := unknown
LOW_MEMORY_MACHINE := true
MAX_VM_MEMORY := 384
MIN_VM_MEMORY := 128
endif
export MB_OF_MEMORY
export LOW_MEMORY_MACHINE
export MAX_VM_MEMORY
export MIN_VM_MEMORY
endif
# If blanks in the username, use the first 4 words and pack them together
_USER1:=$(subst ', ,$(_USER))
_USER2:=$(subst ", ,$(_USER1))
USER:=$(word 1,$(_USER2))$(word 2,$(_USER2))$(word 3,$(_USER2))$(word 4,$(_USER2))
export USER
export PLATFORM
endif

View File

@ -0,0 +1,19 @@
# This file, when re-named to PrivateDefs.gmk will get included in the
# makefile definitions (before the ALT_ variables are read) so that you can
# override makefile settings permanently for a workspace.
# Use of this file will cause WARNING errors, repeatedly, for a reason.
#
# WARNING: Use with caution.
#
# EXAMPLE: Testing a special build of hotspot
# (this is the build/solaris/export-solaris-sparc directory from doing
# a 'cd hotspot/make; gnumake' build)
#
ifeq ($(PLATFORM),solaris)
ifeq ($(ARCH),sparc)
ALT_HOTSPOT_IMPORT_PATH=$(JDK_TOPDIR)/../export-solaris-sparc
endif
endif

View File

@ -0,0 +1,267 @@
#
# Copyright (c) 2005, 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.
#
#
# Shared sanity settings file. Fills in the variable ALL_SETTINGS.
#
# On Windows in particular, it can happen that quotes get into the PATH
# variable. This is very bad, and must be caught early or you can
# see errors like: sh: -c: line 0: syntax error near unexpected token
#
ifneq ($(PATH), $(subst ",,$(PATH)))
dummy1:=$(error ERROR: PATH variable contains double quotes, fix your PATH.)
endif
ifneq ($(PATH), $(subst ',,$(PATH)))
dummy1:=$(error ERROR: PATH variable contains single quotes, fix your PATH.)
endif
# Used to add a heading to ALL_SETTINGS
define addHeading
"\n$1:\n"
endef
# Used to add a line to ALL_SETTINGS for an optional value
# (need if test for windows which has issues with ; characters in values)
define addOptionalSetting
$(if $($1)," $1 = $($1)\n"," $1 = $($1)\n")
endef
# Used to add a line to ALL_SETTINGS for something that must have a value
define addRequiredSetting
$(if $($1)," $1 = $($1)\n",$(warning WARNING: $1 should not be empty [Sanity-Settings.gmk]))
endef
# Used to add a line to ALL_SETTINGS for something that must have a value
define addRequiredVersionSetting
$(if $($1)," $1 = $($1) [requires at least $(REQUIRED_$1)]\n",$(warning WARNING: $1 should not be empty [Sanity-Settings.gmk]))
endef
# Used to add a series of lines to ALL_SETTINGS
define addAltSetting
" $1 = $($1)\n ALT_$1 = $(ALT_$1)\n"
endef
# Variable that contains a string of all information
# Make sure this is a 'do it now' variable.
ALL_SETTINGS:=$(call addHeading,Bootstrap Settings)
ALL_SETTINGS+=$(call addAltSetting,BOOTDIR)
ALL_SETTINGS+=$(call addRequiredVersionSetting,BOOT_VER)
ALL_SETTINGS+=$(call addAltSetting,OUTPUTDIR)
ALL_SETTINGS+=$(call addRequiredSetting,ABS_OUTPUTDIR)
ALL_SETTINGS+=$(call addHeading,Build Tool Settings)
ALL_SETTINGS+=$(call addAltSetting,SLASH_JAVA)
ALL_SETTINGS+=$(call addRequiredSetting,VARIANT)
ALL_SETTINGS+=$(call addAltSetting,JDK_DEVTOOLS_DIR)
ALL_SETTINGS+=$(call addOptionalSetting,ANT_HOME)
ALL_SETTINGS+=$(call addAltSetting,UNIXCOMMAND_PATH)
ALL_SETTINGS+=$(call addAltSetting,COMPILER_PATH)
ALL_SETTINGS+=$(call addAltSetting,DEVTOOLS_PATH)
ifeq ($(PLATFORM),linux)
ALL_SETTINGS+=$(call addAltSetting,UNIXCCS_PATH)
ALL_SETTINGS+=$(call addAltSetting,USRBIN_PATH)
ifndef OPENJDK
ALL_SETTINGS+=$(call addAltSetting,GCC29_COMPILER_PATH)
endif
endif
ifeq ($(PLATFORM),solaris)
ALL_SETTINGS+=$(call addAltSetting,UNIXCCS_PATH)
ifndef OPENJDK
ALL_SETTINGS+=$(call addAltSetting,GCC_COMPILER_PATH)
endif
endif
ifeq ($(PLATFORM),windows)
ifneq ($(MSVCRNN_DLL),)
ALL_SETTINGS+=$(call addAltSetting,MSVCRNN_DLL_PATH)
endif
ALL_SETTINGS+=$(call addRequiredSetting,INCLUDE)
ALL_SETTINGS+=$(call addRequiredSetting,LIB)
endif
ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_NAME)
ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_VERSION)
ifdef REQUIRED_CC_VER
ALL_SETTINGS+=$(call addRequiredVersionSetting,CC_VER)
else
ALL_SETTINGS+=$(call addOptionalSetting,CC_VER)
endif
ifeq ($(PLATFORM),solaris)
ifeq ($(ARCH_DATA_MODEL), 32)
ifndef OPENJDK
ALL_SETTINGS+=$(call addRequiredVersionSetting,GCC_VER)
endif
endif
endif
ALL_SETTINGS+=$(call addRequiredVersionSetting,ZIP_VER)
ALL_SETTINGS+=$(call addRequiredVersionSetting,UNZIP_VER)
ifeq ($(PLATFORM),windows)
ALL_SETTINGS+=$(call addRequiredVersionSetting,LINK_VER)
ALL_SETTINGS+=$(call addRequiredSetting,CC)
ALL_SETTINGS+=$(call addRequiredSetting,LINK)
ALL_SETTINGS+=$(call addRequiredSetting,DUMPBIN)
endif
ALL_SETTINGS+=$(call addRequiredVersionSetting,ANT_VER)
ALL_SETTINGS+=$(call addRequiredSetting,TEMPDIR)
ALL_SETTINGS+=$(call addHeading,Build Directives)
ALL_SETTINGS+=$(call addOptionalSetting,OPENJDK)
ALL_SETTINGS+=$(call addOptionalSetting,USE_HOTSPOT_INTERPRETER_MODE)
ALL_SETTINGS+=$(call addOptionalSetting,PEDANTIC)
ALL_SETTINGS+=$(call addOptionalSetting,DEV_ONLY)
ALL_SETTINGS+=$(call addOptionalSetting,NO_DOCS)
ALL_SETTINGS+=$(call addOptionalSetting,NO_DEMOS)
ALL_SETTINGS+=$(call addOptionalSetting,NO_SAMPLES)
ALL_SETTINGS+=$(call addOptionalSetting,NO_IMAGES)
ALL_SETTINGS+=$(call addOptionalSetting,TOOLS_ONLY)
ALL_SETTINGS+=$(call addOptionalSetting,INSANE)
ALL_SETTINGS+=$(call addRequiredSetting,COMPILE_APPROACH)
ifeq ($(COMPILE_APPROACH), parallel)
ALL_SETTINGS+=$(call addAltSetting,PARALLEL_COMPILE_JOBS)
endif
ALL_SETTINGS+=$(call addOptionalSetting,FASTDEBUG)
ALL_SETTINGS+=$(call addRequiredSetting,COMPILER_WARNINGS_FATAL)
ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_WARNING_LEVEL)
ALL_SETTINGS+=$(call addOptionalSetting,SHOW_ALL_WARNINGS)
ALL_SETTINGS+=$(call addRequiredSetting,INCREMENTAL_BUILD)
ALL_SETTINGS+=$(call addOptionalSetting,CC_HIGHEST_OPT)
ALL_SETTINGS+=$(call addOptionalSetting,CC_HIGHER_OPT)
ALL_SETTINGS+=$(call addOptionalSetting,CC_LOWER_OPT)
ALL_SETTINGS+=$(call addOptionalSetting,CXXFLAGS)
ALL_SETTINGS+=$(call addOptionalSetting,CFLAGS)
ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAVA_CMD)
ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAVAC_CMD)
ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAR_CMD)
ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JARSIGNER_CMD)
# These don't print out well with windows due to the ';' characters
ifneq ($(PLATFORM),windows)
ALL_SETTINGS+=$(call addOptionalSetting,JAVAC_CMD)
ALL_SETTINGS+=$(call addOptionalSetting,JAVAH_CMD)
ALL_SETTINGS+=$(call addOptionalSetting,JAVADOC_CMD)
endif
ALL_SETTINGS+=$(call addHeading,Build Platform Settings)
ALL_SETTINGS+=$(call addRequiredSetting,USER)
ALL_SETTINGS+=$(call addRequiredSetting,PLATFORM)
ALL_SETTINGS+=$(call addRequiredSetting,ARCH)
ALL_SETTINGS+=$(call addRequiredSetting,LIBARCH)
ALL_SETTINGS+=$(call addRequiredSetting,ARCH_FAMILY)
ALL_SETTINGS+=$(call addRequiredSetting,ARCH_DATA_MODEL)
ALL_SETTINGS+=$(call addRequiredSetting,ARCHPROP)
ifeq ($(PLATFORM),windows)
ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_ARCHITECTURE)
ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_IDENTIFIER)
ifdef USING_CYGWIN
ALL_SETTINGS+=$(call addRequiredSetting,USING_CYGWIN)
ALL_SETTINGS+=$(call addRequiredVersionSetting,CYGWIN_VER)
ALL_SETTINGS+=$(call addRequiredSetting,CYGPATH_CMD)
else
ALL_SETTINGS+=$(call addRequiredVersionSetting,MKS_VER)
ALL_SETTINGS+=$(call addOptionalSetting,DOSNAME_CMD)
endif
endif
ifeq ($(PLATFORM),linux)
ifdef REQUIRED_ALSA_VERSION
ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION)
endif
endif
ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION)
ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_NAME)
ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_VERSION)
ALL_SETTINGS+=$(call addRequiredSetting,MB_OF_MEMORY)
ALL_SETTINGS+=$(call addHeading,GNU Make Settings)
ALL_SETTINGS+=$(call addRequiredSetting,MAKE)
ALL_SETTINGS+=$(call addRequiredVersionSetting,MAKE_VER)
ALL_SETTINGS+=$(call addOptionalSetting,MAKECMDGOALS)
ALL_SETTINGS+=$(call addOptionalSetting,MAKEFLAGS)
ALL_SETTINGS+=$(call addRequiredSetting,SHELL)
ALL_SETTINGS+=$(call addHeading,Target Build Versions)
ALL_SETTINGS+=$(call addRequiredSetting,JDK_VERSION)
ALL_SETTINGS+=$(call addOptionalSetting,MILESTONE)
ALL_SETTINGS+=$(call addOptionalSetting,RELEASE)
ALL_SETTINGS+=$(call addRequiredSetting,FULL_VERSION)
ALL_SETTINGS+=$(call addOptionalSetting,BUILD_NUMBER)
ALL_SETTINGS+=$(call addHeading,External File/Binary Locations)
ALL_SETTINGS+=$(call addRequiredSetting,USRJDKINSTANCES_PATH)
ALL_SETTINGS+=$(call addAltSetting,BUILD_JDK_IMPORT_PATH)
ALL_SETTINGS+=$(call addAltSetting,JDK_IMPORT_PATH)
ALL_SETTINGS+=$(call addAltSetting,LANGTOOLS_DIST)
ALL_SETTINGS+=$(call addAltSetting,CORBA_DIST)
ALL_SETTINGS+=$(call addAltSetting,JAXP_DIST)
ALL_SETTINGS+=$(call addAltSetting,JAXWS_DIST)
ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_DOCS_IMPORT_PATH)
ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_IMPORT_PATH)
ifeq ($(ARCH_DATA_MODEL), 32)
ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_CLIENT_PATH)
endif
ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_SERVER_PATH)
ifeq ($(PLATFORM),windows)
ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_LIB_PATH)
ALL_SETTINGS+=$(call addRequiredSetting,DXSDK_VER)
ALL_SETTINGS+=$(call addAltSetting,DXSDK_PATH)
ALL_SETTINGS+=$(call addAltSetting,DXSDK_INCLUDE_PATH)
ALL_SETTINGS+=$(call addAltSetting,DXSDK_LIB_PATH)
ALL_SETTINGS+=$(call addAltSetting,WINDOWSSDKDIR)
ALL_SETTINGS+=$(call addRequiredSetting,RC)
ALL_SETTINGS+=$(call addRequiredSetting,REBASE)
ifndef OPENJDK
ALL_SETTINGS+=$(call addAltSetting,DEPLOY_MSSDK)
ALL_SETTINGS+=$(call addAltSetting,INSTALL_MSSDK)
ALL_SETTINGS+=$(call addAltSetting,WSCRIPT)
ALL_SETTINGS+=$(call addAltSetting,MSICERT)
endif
endif
ALL_SETTINGS+=$(call addAltSetting,CACERTS_FILE)
ifndef OPENJDK
ALL_SETTINGS+=$(call addAltSetting,MOZILLA_HEADERS_PATH)
endif
ifneq ($(PLATFORM),windows)
ALL_SETTINGS+=$(call addAltSetting,CUPS_HEADERS_PATH)
endif
ifdef OPENJDK
ALL_SETTINGS+=$(call addHeading,OpenJDK-specific settings)
ALL_SETTINGS+=$(call addAltSetting,FREETYPE_HEADERS_PATH)
ALL_SETTINGS+=$(call addAltSetting,FREETYPE_LIB_PATH)
endif
ifdef OPENJDK
ALL_SETTINGS+=$(call addHeading,Previous JDK Settings)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_PATH)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_VERSION)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_FILE)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JRE_FILE)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_IMAGE)
endif

View File

@ -0,0 +1,293 @@
#
# Copyright (c) 2001, 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.
#
# EXCLUDE_PKGS is the list of packages to exclude from the
# Java API Specification. Do not add these to CORE_PKGS.
# The concatenation of EXCLUDE_PKGS and CORE_PKGS
# should make up the list of all packages under the
# src/shared/classes directory of the JDK source tree.
#
EXCLUDE_PKGS = \
java.awt.peer \
java.awt.dnd.peer \
sun.* \
sunw.* \
com.sun.* \
org.apache.* \
org.jcp.* \
org.w3c.dom.css \
org.w3c.dom.html \
org.w3c.dom.stylesheets \
org.w3c.dom.traversal \
org.w3c.dom.ranges \
org.w3c.dom.views \
org.omg.stub.javax.management.remote.rmi
#
# ACTIVE_JSR_PKGS are packages that are part of an active JSR process--
# one that is doing its own review. These packages are not included when
# creating diff pages for the platform's JCP process.
#
# (see /java/pubs/apisrc/jdk/6.0/beta/make/docs/active_jsr_pkgs)
# Note:
# This is a list of regular expressions. So foo.* matches "foo" and "foo.bar".
#
ACTIVE_JSR_PKGS= \
java.lang.invoke \
java.sql \
javax.activation \
javax.annotation.* \
javax.jws.* \
javax.lang.* \
javax.management.* \
javax.script \
javax.sql.* \
javax.tools \
javax.xml.* \
org.w3c.* \
org.xml.sax
#
# CORE_PKGS is the list of packages that form the
# Java API Specification.
#
### ***IMPORTANT NOTE***
### There is also a "REGEXP" variable in the docs/makefile that
### determines which table the packages go in on the main page.
### Currently, there is only table ("Platform Packages") and
### everything goes in it, so REGEXP is "*". But if that policy
### changes, packages added will need to be reflected in that
### list of wildcard expressions, as well.
###
CORE_PKGS = \
java.applet \
java.awt \
java.awt.color \
java.awt.datatransfer \
java.awt.dnd \
java.awt.event \
java.awt.font \
java.awt.geom \
java.awt.im \
java.awt.im.spi \
java.awt.image \
java.awt.image.renderable \
java.awt.print \
java.beans \
java.beans.beancontext \
java.io \
java.lang \
java.lang.annotation \
java.lang.instrument \
java.lang.invoke \
java.lang.management \
java.lang.ref \
java.lang.reflect \
java.math \
java.net \
java.nio \
java.nio.channels \
java.nio.channels.spi \
java.nio.charset \
java.nio.charset.spi \
java.nio.file \
java.nio.file.attribute \
java.nio.file.spi \
java.rmi \
java.rmi.activation \
java.rmi.dgc \
java.rmi.registry \
java.rmi.server \
java.security \
java.security.acl \
java.security.cert \
java.security.interfaces \
java.security.spec \
java.sql \
java.text \
java.text.spi \
java.util \
java.util.concurrent \
java.util.concurrent.atomic \
java.util.concurrent.locks \
java.util.jar \
java.util.logging \
java.util.prefs \
java.util.regex \
java.util.spi \
java.util.zip \
javax.accessibility \
javax.activation \
javax.activity \
javax.annotation \
javax.annotation.processing \
javax.crypto \
javax.crypto.interfaces \
javax.crypto.spec \
javax.imageio \
javax.imageio.event \
javax.imageio.metadata \
javax.imageio.plugins.jpeg \
javax.imageio.plugins.bmp \
javax.imageio.spi \
javax.imageio.stream \
javax.jws \
javax.jws.soap \
javax.lang.model \
javax.lang.model.element \
javax.lang.model.type \
javax.lang.model.util \
javax.management \
javax.management.loading \
javax.management.monitor \
javax.management.relation \
javax.management.openmbean \
javax.management.timer \
javax.management.modelmbean \
javax.management.remote \
javax.management.remote.rmi \
javax.naming \
javax.naming.directory \
javax.naming.event \
javax.naming.ldap \
javax.naming.spi \
javax.net \
javax.net.ssl \
javax.print \
javax.print.attribute \
javax.print.attribute.standard \
javax.print.event \
javax.rmi \
javax.rmi.CORBA \
javax.rmi.ssl \
javax.script \
javax.security.auth \
javax.security.auth.callback \
javax.security.auth.kerberos \
javax.security.auth.login \
javax.security.auth.spi \
javax.security.auth.x500 \
javax.security.cert \
javax.security.sasl \
javax.sound.sampled \
javax.sound.sampled.spi \
javax.sound.midi \
javax.sound.midi.spi \
javax.sql \
javax.sql.rowset \
javax.sql.rowset.serial \
javax.sql.rowset.spi \
javax.swing \
javax.swing.border \
javax.swing.colorchooser \
javax.swing.filechooser \
javax.swing.event \
javax.swing.table \
javax.swing.text \
javax.swing.text.html \
javax.swing.text.html.parser \
javax.swing.text.rtf \
javax.swing.tree \
javax.swing.undo \
javax.swing.plaf \
javax.swing.plaf.basic \
javax.swing.plaf.metal \
javax.swing.plaf.multi \
javax.swing.plaf.nimbus \
javax.swing.plaf.synth \
javax.tools \
javax.transaction \
javax.transaction.xa \
javax.xml.parsers \
javax.xml.bind \
javax.xml.bind.annotation \
javax.xml.bind.annotation.adapters \
javax.xml.bind.attachment \
javax.xml.bind.helpers \
javax.xml.bind.util \
javax.xml.soap \
javax.xml.ws \
javax.xml.ws.handler \
javax.xml.ws.handler.soap \
javax.xml.ws.http \
javax.xml.ws.soap \
javax.xml.ws.spi \
javax.xml.ws.spi.http \
javax.xml.ws.wsaddressing \
javax.xml.transform \
javax.xml.transform.sax \
javax.xml.transform.dom \
javax.xml.transform.stax \
javax.xml.transform.stream \
javax.xml \
javax.xml.crypto \
javax.xml.crypto.dom \
javax.xml.crypto.dsig \
javax.xml.crypto.dsig.dom \
javax.xml.crypto.dsig.keyinfo \
javax.xml.crypto.dsig.spec \
javax.xml.datatype \
javax.xml.validation \
javax.xml.namespace \
javax.xml.xpath \
javax.xml.stream \
javax.xml.stream.events \
javax.xml.stream.util \
org.ietf.jgss \
org.omg.CORBA \
org.omg.CORBA.DynAnyPackage \
org.omg.CORBA.ORBPackage \
org.omg.CORBA.TypeCodePackage \
org.omg.stub.java.rmi \
org.omg.CORBA.portable \
org.omg.CORBA_2_3 \
org.omg.CORBA_2_3.portable \
org.omg.CosNaming \
org.omg.CosNaming.NamingContextExtPackage \
org.omg.CosNaming.NamingContextPackage \
org.omg.SendingContext \
org.omg.PortableServer \
org.omg.PortableServer.CurrentPackage \
org.omg.PortableServer.POAPackage \
org.omg.PortableServer.POAManagerPackage \
org.omg.PortableServer.ServantLocatorPackage \
org.omg.PortableServer.portable \
org.omg.PortableInterceptor \
org.omg.PortableInterceptor.ORBInitInfoPackage \
org.omg.Messaging \
org.omg.IOP \
org.omg.IOP.CodecFactoryPackage \
org.omg.IOP.CodecPackage \
org.omg.Dynamic \
org.omg.DynamicAny \
org.omg.DynamicAny.DynAnyPackage \
org.omg.DynamicAny.DynAnyFactoryPackage \
org.w3c.dom \
org.w3c.dom.events \
org.w3c.dom.bootstrap \
org.w3c.dom.ls \
org.xml.sax \
org.xml.sax.ext \
org.xml.sax.helpers

1174
jdk/makefiles/docs/Makefile Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,104 @@
#
# Copyright (c) 2002, 2012, 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.
#
#
# This file contains the package names of all the "non-core"
# API published in the Java 2 SDK documentation. "Non-core" means
# it includes all published API outside of the JDK API specification.
#
# These environment variables are used by javadoc in
# make/docs/Makefile and are referenced by the localization
# team when determining which APIs to extract javadoc
# comments from.
DOMAPI_PKGS = com.sun.java.browser.dom \
org.w3c.dom \
org.w3c.dom.bootstrap \
org.w3c.dom.ls \
org.w3c.dom.ranges \
org.w3c.dom.traversal \
org.w3c.dom.html \
org.w3c.dom.stylesheets \
org.w3c.dom.css \
org.w3c.dom.events \
org.w3c.dom.views
JDI_PKGS = com.sun.jdi \
com.sun.jdi.event \
com.sun.jdi.request \
com.sun.jdi.connect \
com.sun.jdi.connect.spi
MGMT_PKGS = com.sun.management
JAAS_PKGS = com.sun.security.auth \
com.sun.security.auth.callback \
com.sun.security.auth.login \
com.sun.security.auth.module
JGSS_PKGS = com.sun.security.jgss
OLD_JSSE_PKGS = com.sun.net.ssl
HTTPSERVER_PKGS = com.sun.net.httpserver \
com.sun.net.httpserver.spi
NIO_PKGS = com.sun.nio.file
DOCLETAPI_PKGS = com.sun.javadoc
TAGLETAPI_FILE = com/sun/tools/doclets/Taglet.java
ATTACH_PKGS = com.sun.tools.attach \
com.sun.tools.attach.spi
JCONSOLE_PKGS = com.sun.tools.jconsole
TREEAPI_PKGS = com.sun.source.tree \
com.sun.source.util
SMARTCARDIO_PKGS = javax.smartcardio
SCTPAPI_PKGS = com.sun.nio.sctp
ifeq ($(PLATFORM), macosx)
APPLE_EXT_PKGS = com.apple.concurrent \
com.apple.eawt \
com.apple.eawt.event \
com.apple.eio
endif
# non-core packages in rt.jar
NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(MGMT_PKGS) \
$(JAAS_PKGS) \
$(JGSS_PKGS) \
$(NIO_PKGS) \
$(OLD_JSSE_PKGS) \
$(HTTPSERVER_PKGS) \
$(SMARTCARDIO_PKGS) \
$(SCTPAPI_PKGS) \
$(APPLE_EXT_PKGS)

View File

@ -0,0 +1,49 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Doc Process Notes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h3><a name="REGEXP"></a><br>
REGEXP</h3>
<p> REGEXP is a list of wildcard patterns that determines which packages listed
in CORE_PKGS.gmk go into which summary-table on the main API index page. It
was motivated by the need to divide the world into &quot;core packages&quot;
(java.*) and &quot;extension packages&quot; (javax.*). In time, the distinction
went away. The whole table is now called &quot;Platform Packages&quot;--which
eliminated the need for this list of regular expressions. But it lingered on,
accreting all of the packages in the JVM, one by one. I pruned it back to &quot;*&quot;,
so it now covers every package in the Java platform API docs. If some separation
is needed in the future, it can grow back into a colon-separated list, starting
with this, which is in all respects equivalent to &quot;*&quot; at this point
in time:</p>
<blockquote>
<pre>REGEXP = &quot;java.*:javax.*:org.ietf*:org.omg.</pre>
</blockquote>
<h3><a name="releaseTargets"></a><br>
Release Targets</h3>
<p> (Thanks to Kelly O'Hair for this info.)</p>
<p> The <tt>rel-coredocs</tt> and <tt>rel-docs</tt> targets were added by Eric
Armstrong. <tt>rel-coredocs</tt> assumes the kind of large, 32-bit machine used
in the javapubs group's docs-release process. It specifies memory settings accordingly
to maximize performance.</p>
<p> The performance settings, like the sanity check, are most important for the
core docs--the platform APIs. Running javadoc on those APIs takes a significant
amount of time and memory. Setting the initial heap size as large as possible
is important to prevent thrashing as the heap grows. Setting the maximum as
large as necessary is also important to keep the job from failing.</p>
<blockquote>
<p> <tt>-J-Xmx512</tt> sets a maximum of 512, which became necessary in 6.0<br>
<tt>-J-Xms256</tt> sets starting size to 256 (default is 8)</p>
</blockquote>
<p> <tt>rel-coredocs</tt> also includes a sanity check to help ensure that <tt>BUILD_NUMBER</tt>
and <tt>MILESTONE</tt> are specified properly when docs are built outside of
the normal release engineering process, with the intention of releasing them
on the web or in a downloaded docs bundle. (When invoked in release engineering's
control build, the values are always set properly. But when the targets are
run by themselves, they default to b00 and &quot;internal&quot;--which silently
sabotage the result of a build that can take many hours to complete.</p>
</body>
</html>

View File

@ -0,0 +1,69 @@
#
# 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.
#
#
# Makefile for building all of java
#
PRODUCT=java
BUILDDIR=..
include $(BUILDDIR)/common/Defs.gmk
#
# The order of subdirs here is important
#
SUBDIRS += jvm redist verify fdlibm java sun_nio jli main
# Others
# Note: java_crw_demo java_hprof_demo are demos but must be delivered built in sdk
SUBDIRS += security util net nio
SUBDIRS_management = management
SUBDIRS_misc = npt java_crw_demo java_hprof_demo \
instrument
#TODO Check invoke
# logging instrument invoke sql rmi
ifeq ($(PLATFORM), solaris)
ifeq ($(ARCH_DATA_MODEL), 32)
SUBDIRS += jexec
endif
endif # PLATFORM
ifeq ($(PLATFORM), linux)
SUBDIRS += jexec
endif # PLATFORM
ifeq ($(PLATFORM), macosx)
SUBDIRS += jobjc
endif # PLATFORM
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)

View File

@ -0,0 +1,88 @@
#
# Copyright (c) 1998, 2002, 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.
#
FILES_c = \
k_standard.c \
k_rem_pio2.c \
k_cos.c \
k_sin.c \
k_tan.c \
e_acos.c \
e_asin.c \
e_atan2.c \
e_atanh.c \
e_cosh.c \
e_exp.c \
e_fmod.c \
e_hypot.c \
e_log.c \
e_log10.c \
e_pow.c \
e_rem_pio2.c \
e_remainder.c \
e_scalb.c \
e_sinh.c \
e_sqrt.c \
w_acos.c \
w_asin.c \
w_atan2.c \
w_atanh.c \
w_cosh.c \
w_exp.c \
w_fmod.c \
w_hypot.c \
w_log.c \
w_log10.c \
w_pow.c \
w_remainder.c \
w_scalb.c \
w_sinh.c \
w_sqrt.c \
s_atan.c \
s_cbrt.c \
s_ceil.c \
s_copysign.c \
s_cos.c \
s_expm1.c \
s_fabs.c \
s_finite.c \
s_floor.c \
s_frexp.c \
s_ilogb.c \
s_isnan.c \
s_ldexp.c \
s_lib_version.c \
s_log1p.c \
s_logb.c \
s_matherr.c \
s_modf.c \
s_nextafter.c \
s_rint.c \
s_scalbn.c \
s_signgam.c \
s_significand.c \
s_sin.c \
s_tan.c \
s_tanh.c

View File

@ -0,0 +1,93 @@
#
# Copyright (c) 1998, 2012, 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 fdlibm
#
# Note:
# The fdlibm libraries are built using special rules in Library.gmk.
#
BUILDDIR = ../..
LIBRARY = fdlibm
PRODUCT = java
include $(BUILDDIR)/common/Defs.gmk
#
# Where is fdlibm in the source tree?
#
FDLIBM_SRC = $(SHARE_SRC)/native/java/lang/fdlibm
# Windows: compiler flags
ifeq ($(PLATFORM),windows)
# Turn all optimizations off
OPTIMIZATION_LEVEL = NONE
FASTDEBUG_OPTIMIZATION_LEVEL = NONE
OTHER_CFLAGS =
CPPFLAGS_DBG += -DLOGGING
endif
#
# Linux: Disable optimization to get correctly reproducible
# floating-point results.
#
ifeq ($(PLATFORM),linux)
# Turn all optimizations off
OPTIMIZATION_LEVEL = NONE
FASTDEBUG_OPTIMIZATION_LEVEL = NONE
endif
ifeq ($(PLATFORM),macosx)
# Turn all optimizations off
OPTIMIZATION_LEVEL = NONE
FASTDEBUG_OPTIMIZATION_LEVEL = NONE
endif
#
# Include path.
#
OTHER_INCLUDES = -I$(FDLIBM_SRC)/include
#
# Things that must be linked in.
#
OTHER_LDLIBS =
#
# Files to compile.
#
include FILES_c.gmk
#
# Rules for the .a file.
#
include $(BUILDDIR)/common/Library.gmk
#
# Find fdlibm source files.
#
vpath %.c
vpath %.c $(FDLIBM_SRC)/src

View File

@ -0,0 +1,149 @@
#
# Copyright (c) 2003, 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 building the Java Programming Language Instrumentation Services
# agent, supporting java.lang.instrument
BUILDDIR = ../..
PACKAGE = sun.instrument
LIBRARY = instrument
PRODUCT = sun
# Configure the CFLAGS for this library. Use static binding so that there
# are not dependencies on modules not on the search patch when invoked from
# the Windows system directory (or elsewhere).
MS_RUNTIME_STATIC=true
FILES_m = mapfile-vers
JAVAC_MAX_WARNINGS = true
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
# Use the mapfile-vers (See the mapfile located with this Makefile)
ifdef FILES_m
include $(BUILDDIR)/common/Mapfile-vers.gmk
endif
#
# Files to compile.
#
FILES_c = \
EncodingSupport.c \
EncodingSupport_md.c \
FileSystemSupport_md.c \
InstrumentationImplNativeMethods.c \
InvocationAdapter.c \
JarFacade.c \
JPLISAgent.c \
JPLISAssert.c \
JavaExceptions.c \
PathCharsValidator.c \
Reentrancy.c \
Utilities.c
#
# -jaragent support requires zip and jar manfiest parser to be compiled
# into the instrument library.
#
IO_PLATFORM_SRC = $(PLATFORM_SRC)/native/java/io
LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
FILES_c += \
canonicalize_md.c
FILES_export = \
sun/instrument/InstrumentationImpl.java
#
# This controls the ability to do logging in the library.
#
CPPFLAGS_DBG += -DJPLIS_LOGGING
CPPFLAGS_OPT += -DNO_JPLIS_LOGGING
OTHER_INCLUDES = -I$(SHARE_SRC)/instrument
OTHER_INCLUDES += -I$(PLATFORM_SRC)/instrument
OTHER_INCLUDES += -I$(IO_PLATFORM_SRC)
OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC) -I$(LAUNCHER_PLATFORM_SRC)
#
# Create a dependency on libjli (Java Launcher Infrastructure)
#
# On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
# do this reliably on Linux takes a different syntax than Solaris.
#
# On Windows, this is done by using the same directory as the executable
# itself, as with all the Windows libraries.
#
ifeq ($(PLATFORM), windows)
OTHER_LDLIBS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/jli.lib
OTHER_LCF += -export:Agent_OnAttach
# equivalent of strcasecmp is stricmp on Windows
CPPFLAGS_COMMON += -Dstrcasecmp=stricmp
else
ifneq (,$(findstring $(PLATFORM), macosx))
ifneq ($(ARCH), universal)
LDFLAGS += -Wl,-all_load
endif
LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
OTHER_LDLIBS += -liconv
ifeq ($(SYSTEM_ZLIB), true)
OTHER_LDLIBS += -lz
endif
else
LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
OTHER_LDLIBS += -ljli
OTHER_LDLIBS += -ldl
ifeq ($(PLATFORM), solaris)
LDFLAGS += -R \$$ORIGIN/jli
endif
ifeq ($(PLATFORM), linux)
LDFLAGS += $(LDFLAG_Z_ORIGIN)
LDFLAGS += -Wl,--allow-shlib-undefined
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
endif
endif
endif
ifeq ($(PLATFORM), macosx)
LDFLAGS += -framework Cocoa -framework Security -framework ApplicationServices
endif
#
# Library to compile.
#
include $(BUILDDIR)/common/Library.gmk
# We don't want to link against -ljava
JAVALIB=
#
# Add to ambient vpath so we pick up the library files
#
vpath %.c $(SHARE_SRC)/instrument $(PLATFORM_SRC)/instrument
vpath %.c $(IO_PLATFORM_SRC)

View File

@ -0,0 +1,44 @@
#
# Copyright (c) 2003, 2005, 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.
#
# Define public interface.
SUNWprivate_1.1 {
global:
Agent_OnLoad;
Agent_OnAttach;
Java_sun_instrument_InstrumentationImpl_isModifiableClass0;
Java_sun_instrument_InstrumentationImpl_isRetransformClassesSupported0;
Java_sun_instrument_InstrumentationImpl_setHasRetransformableTransformers;
Java_sun_instrument_InstrumentationImpl_retransformClasses0;
Java_sun_instrument_InstrumentationImpl_getAllLoadedClasses0;
Java_sun_instrument_InstrumentationImpl_getInitiatedClasses0;
Java_sun_instrument_InstrumentationImpl_redefineClasses0;
Java_sun_instrument_InstrumentationImpl_getObjectSize0;
Java_sun_instrument_InstrumentationImpl_appendToClassLoaderSearch0;
Java_sun_instrument_InstrumentationImpl_setNativeMethodPrefixes;
local:
*;
};

View File

@ -0,0 +1,42 @@
#
# Copyright (c) 2008, 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.
#
BUILDDIR = ../..
PACKAGE = java.lang.invoke
PRODUCT = java
include $(BUILDDIR)/common/Defs.gmk
AUTO_FILES_JAVA_DIRS = java/lang/invoke sun/invoke
FILES_java = \
java/lang/ClassValue.java \
java/lang/BootstrapMethodError.java
# The sources built here use new language syntax to generate
# method handle calls. Let's be sure we are using that format.
LANGUAGE_VERSION = -source 7
CLASS_VERSION = -target 7
include $(BUILDDIR)/common/Classes.gmk

View File

@ -0,0 +1,178 @@
#
# Copyright (c) 1997, 2006, 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.
#
#
# These are the names of JAVA classes for which we will make .h files.
#
ifneq ($(PLATFORM), windows)
FILES_export = \
java/lang/Object.java \
java/lang/Class.java \
java/lang/Compiler.java \
java/lang/String.java \
java/lang/Thread.java \
java/lang/ThreadGroup.java \
java/lang/StrictMath.java \
java/lang/Number.java \
java/lang/Byte.java \
java/lang/Short.java \
java/lang/Integer.java \
java/lang/Long.java \
java/lang/Float.java \
java/lang/Double.java \
java/lang/Boolean.java \
java/lang/Character.java \
java/lang/System.java \
java/lang/ClassLoader.java \
java/lang/Runtime.java \
java/lang/SecurityManager.java \
java/lang/Shutdown.java \
java/lang/Package.java \
java/lang/ref/Finalizer.java \
java/lang/reflect/AccessibleObject.java \
java/lang/reflect/Field.java \
java/lang/reflect/Method.java \
java/lang/reflect/Constructor.java \
java/lang/reflect/InvocationTargetException.java \
java/lang/reflect/Array.java \
java/lang/reflect/Proxy.java \
java/security/AccessController.java \
java/util/Date.java \
java/util/TimeZone.java \
java/util/ResourceBundle.java \
java/util/concurrent/atomic/AtomicLong.java \
java/util/prefs/FileSystemPreferences.java \
java/io/Console.java \
java/io/FileDescriptor.java \
java/io/InputStream.java \
java/io/FileInputStream.java \
java/io/FileOutputStream.java \
java/io/PrintStream.java \
java/io/RandomAccessFile.java \
java/io/DataInputStream.java \
java/io/DataOutputStream.java \
java/io/File.java \
java/io/FileSystem.java \
java/io/UnixFileSystem.java \
java/io/ObjectInputStream.java \
java/io/ObjectOutputStream.java \
java/io/ObjectStreamClass.java \
java/lang/Throwable.java \
java/lang/NoClassDefFoundError.java \
java/lang/StringIndexOutOfBoundsException.java \
java/lang/OutOfMemoryError.java \
sun/misc/Version.java \
sun/misc/VM.java \
sun/misc/VMSupport.java \
sun/misc/Signal.java \
sun/misc/MessageUtils.java \
sun/misc/NativeSignalHandler.java \
sun/misc/GC.java \
sun/reflect/ConstantPool.java \
sun/reflect/NativeConstructorAccessorImpl.java \
sun/reflect/NativeMethodAccessorImpl.java \
sun/reflect/Reflection.java
EXPORTED_inner = \
java.lang.ClassLoader$$NativeLibrary
else # PLATFORM
FILES_export = \
java/lang/Object.java \
java/lang/Class.java \
java/lang/Compiler.java \
java/lang/String.java \
java/lang/Thread.java \
java/lang/ThreadGroup.java \
java/lang/StrictMath.java \
java/lang/Number.java \
java/lang/Byte.java \
java/lang/Short.java \
java/lang/Integer.java \
java/lang/Long.java \
java/lang/Float.java \
java/lang/Double.java \
java/lang/Boolean.java \
java/lang/System.java \
java/lang/Package.java \
java/lang/ClassLoader.java \
java/lang/Runtime.java \
java/lang/SecurityManager.java \
java/lang/Shutdown.java \
java/lang/reflect/AccessibleObject.java \
java/lang/reflect/Field.java \
java/lang/reflect/Method.java \
java/lang/reflect/Constructor.java \
java/lang/reflect/InvocationTargetException.java \
java/lang/reflect/Array.java \
java/lang/reflect/Proxy.java \
java/lang/ref/Reference.java \
java/lang/ref/Finalizer.java \
java/util/Date.java \
java/util/Properties.java \
java/util/ResourceBundle.java \
java/util/TimeZone.java \
java/util/concurrent/atomic/AtomicLong.java \
java/util/prefs/WindowsPreferences.java \
java/util/prefs/WindowsPreferencesFactory.java \
java/util/logging/FileHandler.java \
java/io/Console.java \
java/io/FileSystem.java \
java/io/FileDescriptor.java \
java/io/InputStream.java \
java/io/FileInputStream.java \
java/io/FileOutputStream.java \
java/io/PrintStream.java \
java/io/RandomAccessFile.java \
java/io/DataInputStream.java \
java/io/DataOutputStream.java \
java/io/File.java \
java/io/ObjectOutputStream.java \
java/io/ObjectInputStream.java \
java/io/ObjectStreamClass.java \
java/lang/Throwable.java \
java/lang/NoClassDefFoundError.java \
java/lang/StringIndexOutOfBoundsException.java \
java/lang/OutOfMemoryError.java \
java/lang/ProcessImpl.java \
sun/misc/Version.java \
sun/misc/VM.java \
sun/misc/VMSupport.java \
sun/misc/GC.java \
sun/misc/Signal.java \
sun/misc/NativeSignalHandler.java \
sun/misc/MessageUtils.java \
java/security/AccessController.java \
sun/reflect/ConstantPool.java \
sun/reflect/NativeConstructorAccessorImpl.java \
sun/reflect/NativeMethodAccessorImpl.java \
sun/reflect/Reflection.java \
sun/security/provider/NativeSeedGenerator.java \
sun/io/Win32ErrorMode.java
EXPORTED_inner = \
java.lang.ClassLoader$$NativeLibrary
endif # PLATFORM

View File

@ -0,0 +1,82 @@
#
# Copyright (c) 1996, 2006, 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.
#
FILES_c = \
AccessController.c \
Array.c \
String.c \
Class.c \
ClassLoader.c \
Compiler.c \
Console_md.c \
Double.c \
FileSystem_md.c \
FileDescriptor_md.c \
FileInputStream.c \
FileInputStream_md.c \
FileOutputStream_md.c \
Finalizer.c \
Float.c \
Object.c \
ObjectOutputStream.c \
ObjectInputStream.c \
ObjectStreamClass.c \
Package.c \
ProcessEnvironment_md.c \
Proxy.c \
RandomAccessFile.c \
RandomAccessFile_md.c \
ResourceBundle.c \
Runtime.c \
SecurityManager.c \
Shutdown.c \
StrictMath.c \
System.c \
Thread.c \
Throwable.c \
Signal.c \
NativeSignalHandler.c \
verify_stub.c \
io_util.c \
io_util_md.c \
jio.c \
logging.c \
jni_util.c \
jni_util_md.c \
jdk_util.c \
jdk_util_md.c \
check_version.c \
java_props_md.c \
DriverManager.c \
ConstantPool.c \
MessageUtils.c \
GC.c \
NativeAccessors.c \
Reflection.c \
Bits.c \
AtomicLong.c \
Version.c \
VM.c \
VMSupport.c

View File

@ -0,0 +1,489 @@
#
# Copyright (c) 1996, 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.
#
#
# This is the list of java classes that will be automatically built
# from sources. See Exportedfiles.gmk for the list of files which
# will generate header files
#
JAVA_JAVA_java = \
java/lang/Object.java \
java/lang/AutoCloseable.java \
java/lang/Class.java \
java/lang/Thread.java \
java/lang/Character.java \
java/lang/CharacterData.java \
java/lang/CharacterName.java \
sun/misc/ASCIICaseInsensitiveComparator.java \
sun/misc/VM.java \
sun/misc/Signal.java \
sun/misc/NativeSignalHandler.java \
java/lang/ThreadGroup.java \
java/lang/ThreadLocal.java \
java/lang/InheritableThreadLocal.java \
java/lang/String.java \
java/lang/ConditionalSpecialCasing.java \
java/lang/StringCoding.java \
java/lang/StringBuffer.java \
java/lang/StringBuilder.java \
java/lang/SuppressWarnings.java \
java/lang/AbstractStringBuilder.java \
java/lang/ClassLoader.java \
java/lang/AssertionStatusDirectives.java \
java/lang/Enum.java \
java/lang/StrictMath.java \
java/lang/Math.java \
sun/misc/FloatingDecimal.java \
sun/misc/FormattedFloatingDecimal.java \
java/lang/Number.java \
java/lang/Byte.java \
java/lang/Short.java \
java/lang/Integer.java \
java/lang/Long.java \
java/lang/Float.java \
java/lang/Double.java \
java/lang/Boolean.java \
java/lang/Void.java \
java/lang/Runnable.java \
java/lang/Cloneable.java \
java/lang/CharSequence.java \
java/lang/SecurityManager.java \
java/lang/Runtime.java \
java/lang/RuntimePermission.java \
java/lang/ApplicationShutdownHooks.java \
java/lang/Shutdown.java \
java/lang/Terminator.java \
java/lang/System.java \
java/lang/Compiler.java \
java/lang/Throwable.java \
java/lang/Exception.java \
java/lang/ReflectiveOperationException.java \
java/lang/IllegalAccessException.java \
java/lang/InstantiationException.java \
java/lang/ClassNotFoundException.java \
java/lang/CloneNotSupportedException.java \
java/lang/InterruptedException.java \
java/lang/NoSuchFieldException.java \
java/lang/NoSuchMethodException.java \
java/lang/RuntimeException.java \
java/lang/ArithmeticException.java \
java/lang/ArrayStoreException.java \
java/lang/ClassCastException.java \
java/lang/IndexOutOfBoundsException.java \
java/lang/ArrayIndexOutOfBoundsException.java \
java/lang/StringIndexOutOfBoundsException.java \
java/lang/NegativeArraySizeException.java \
java/lang/NullPointerException.java \
java/lang/IllegalStateException.java \
java/lang/IllegalArgumentException.java \
java/lang/NumberFormatException.java \
java/lang/IllegalThreadStateException.java \
java/lang/IllegalMonitorStateException.java \
java/lang/SecurityException.java \
java/lang/TypeNotPresentException.java \
java/lang/EnumConstantNotPresentException.java \
java/lang/UnsupportedOperationException.java \
java/lang/Error.java \
java/lang/AssertionError.java \
java/lang/ThreadDeath.java \
java/lang/LinkageError.java \
java/lang/ClassCircularityError.java \
java/lang/ClassFormatError.java \
java/lang/UnsupportedClassVersionError.java \
java/lang/ExceptionInInitializerError.java \
java/lang/IncompatibleClassChangeError.java \
java/lang/AbstractMethodError.java \
java/lang/IllegalAccessError.java \
java/lang/InstantiationError.java \
java/lang/NoSuchFieldError.java \
java/lang/NoSuchMethodError.java \
java/lang/NoClassDefFoundError.java \
java/lang/UnsatisfiedLinkError.java \
java/lang/VerifyError.java \
java/lang/VirtualMachineError.java \
java/lang/InternalError.java \
java/lang/OutOfMemoryError.java \
java/lang/StackOverflowError.java \
java/lang/UnknownError.java \
java/lang/StackTraceElement.java \
java/lang/Package.java \
java/lang/Process.java \
java/lang/ProcessBuilder.java \
java/lang/ProcessEnvironment.java \
java/lang/ProcessImpl.java \
java/lang/Appendable.java \
java/lang/Comparable.java \
java/lang/Readable.java \
java/lang/Override.java \
java/lang/SafeVarargs.java \
java/lang/SuppressWarnings.java \
java/lang/ref/Reference.java \
java/lang/ref/SoftReference.java \
java/lang/ref/WeakReference.java \
java/lang/ref/FinalReference.java \
java/lang/ref/PhantomReference.java \
java/lang/ref/ReferenceQueue.java \
java/lang/ref/Finalizer.java \
java/util/BitSet.java \
java/util/Calendar.java \
java/util/GregorianCalendar.java \
sun/util/BuddhistCalendar.java \
java/util/JapaneseImperialCalendar.java \
sun/util/calendar/CalendarDate.java \
sun/util/calendar/ImmutableGregorianDate.java \
sun/util/calendar/CalendarSystem.java \
sun/util/calendar/Era.java \
sun/util/calendar/CalendarUtils.java \
sun/util/calendar/AbstractCalendar.java \
sun/util/calendar/BaseCalendar.java \
sun/util/calendar/Gregorian.java \
sun/util/calendar/JulianCalendar.java \
sun/util/calendar/LocalGregorianCalendar.java \
java/util/Currency.java \
java/util/Date.java \
java/util/Dictionary.java \
java/util/EmptyStackException.java \
java/util/Enumeration.java \
java/util/EventListener.java \
java/util/EventListenerProxy.java \
java/util/EventObject.java \
java/util/Formatter.java \
java/util/Formattable.java \
java/util/FormattableFlags.java \
java/util/IllegalFormatException.java \
java/util/DuplicateFormatFlagsException.java \
java/util/FormatFlagsConversionMismatchException.java \
java/util/IllegalFormatCodePointException.java \
java/util/IllegalFormatConversionException.java \
java/util/IllegalFormatFlagsException.java \
java/util/IllegalFormatPrecisionException.java \
java/util/IllegalFormatWidthException.java \
java/util/MissingFormatArgumentException.java \
java/util/MissingFormatWidthException.java \
java/util/UnknownFormatConversionException.java \
java/util/UnknownFormatFlagsException.java \
java/util/IllformedLocaleException.java \
java/util/FormatterClosedException.java \
java/util/ListResourceBundle.java \
sun/util/EmptyListResourceBundle.java \
java/util/Locale.java \
sun/util/locale/BaseLocale.java \
sun/util/locale/Extension.java \
sun/util/locale/InternalLocaleBuilder.java \
sun/util/locale/LanguageTag.java \
sun/util/locale/LocaleExtensions.java \
sun/util/locale/LocaleObjectCache.java \
sun/util/locale/LocaleSyntaxException.java \
sun/util/locale/LocaleUtils.java \
sun/util/locale/ParseStatus.java \
sun/util/locale/StringTokenIterator.java \
sun/util/locale/UnicodeLocaleExtension.java \
java/util/LocaleISOData.java \
sun/util/LocaleServiceProviderPool.java \
sun/util/LocaleDataMetaInfo.java \
java/util/MissingResourceException.java \
java/util/NoSuchElementException.java \
java/util/Observable.java \
java/util/Observer.java \
java/util/Properties.java \
java/util/InvalidPropertiesFormatException.java \
java/util/PropertyPermission.java \
java/util/PropertyResourceBundle.java \
java/util/Random.java \
java/util/ResourceBundle.java \
sun/util/ResourceBundleEnumeration.java \
sun/util/CoreResourceBundleControl.java \
java/util/Scanner.java \
java/util/InputMismatchException.java \
java/util/Stack.java \
java/util/StringTokenizer.java \
java/util/TimeZone.java \
java/util/SimpleTimeZone.java \
sun/util/TimeZoneNameUtility.java \
sun/util/calendar/ZoneInfo.java \
sun/util/calendar/ZoneInfoFile.java \
sun/util/calendar/TzIDOldMapping.java \
java/util/TooManyListenersException.java \
java/util/Comparator.java \
java/util/Collections.java \
java/util/Iterator.java \
java/util/ListIterator.java \
java/util/Collection.java \
java/util/Set.java \
java/util/SortedSet.java \
java/util/NavigableSet.java \
java/util/List.java \
java/util/Queue.java \
java/util/Deque.java \
java/util/AbstractCollection.java \
java/util/AbstractSet.java \
java/util/HashSet.java \
java/util/LinkedHashSet.java \
java/util/TreeSet.java \
java/util/EnumSet.java \
java/util/RegularEnumSet.java \
java/util/JumboEnumSet.java \
java/util/AbstractList.java \
java/util/ArrayList.java \
java/util/Vector.java \
java/util/AbstractSequentialList.java \
java/util/LinkedList.java \
java/util/AbstractQueue.java \
java/util/PriorityQueue.java \
java/util/ArrayDeque.java \
java/util/Map.java \
java/util/SortedMap.java \
java/util/NavigableMap.java \
java/util/AbstractMap.java \
java/util/HashMap.java \
java/util/LinkedHashMap.java \
java/util/TreeMap.java \
java/util/Hashtable.java \
java/util/WeakHashMap.java \
java/util/IdentityHashMap.java \
java/util/EnumMap.java \
java/util/Arrays.java \
java/util/DualPivotQuicksort.java \
java/util/TimSort.java \
java/util/ComparableTimSort.java \
java/util/ConcurrentModificationException.java \
java/util/ServiceLoader.java \
java/util/ServiceConfigurationError.java \
java/util/Timer.java \
java/util/TimerTask.java \
java/util/Objects.java \
java/util/UUID.java \
java/util/concurrent/AbstractExecutorService.java \
java/util/concurrent/ArrayBlockingQueue.java \
java/util/concurrent/BlockingDeque.java \
java/util/concurrent/BlockingQueue.java \
java/util/concurrent/BrokenBarrierException.java \
java/util/concurrent/Callable.java \
java/util/concurrent/CancellationException.java \
java/util/concurrent/CompletionService.java \
java/util/concurrent/ConcurrentHashMap.java \
java/util/concurrent/ConcurrentLinkedDeque.java \
java/util/concurrent/ConcurrentLinkedQueue.java \
java/util/concurrent/ConcurrentMap.java \
java/util/concurrent/ConcurrentNavigableMap.java \
java/util/concurrent/ConcurrentSkipListMap.java \
java/util/concurrent/ConcurrentSkipListSet.java \
java/util/concurrent/CopyOnWriteArrayList.java \
java/util/concurrent/CopyOnWriteArraySet.java \
java/util/concurrent/CountDownLatch.java \
java/util/concurrent/CyclicBarrier.java \
java/util/concurrent/DelayQueue.java \
java/util/concurrent/Delayed.java \
java/util/concurrent/Exchanger.java \
java/util/concurrent/ExecutionException.java \
java/util/concurrent/Executor.java \
java/util/concurrent/ExecutorService.java \
java/util/concurrent/ExecutorCompletionService.java \
java/util/concurrent/Executors.java \
java/util/concurrent/ForkJoinPool.java \
java/util/concurrent/ForkJoinTask.java \
java/util/concurrent/ForkJoinWorkerThread.java \
java/util/concurrent/Future.java \
java/util/concurrent/FutureTask.java \
java/util/concurrent/LinkedBlockingDeque.java \
java/util/concurrent/LinkedBlockingQueue.java \
java/util/concurrent/LinkedTransferQueue.java \
java/util/concurrent/Phaser.java \
java/util/concurrent/PriorityBlockingQueue.java \
java/util/concurrent/RecursiveAction.java \
java/util/concurrent/RecursiveTask.java \
java/util/concurrent/RejectedExecutionException.java \
java/util/concurrent/RejectedExecutionHandler.java \
java/util/concurrent/RunnableFuture.java \
java/util/concurrent/RunnableScheduledFuture.java \
java/util/concurrent/ScheduledExecutorService.java \
java/util/concurrent/ScheduledFuture.java \
java/util/concurrent/ScheduledThreadPoolExecutor.java \
java/util/concurrent/Semaphore.java \
java/util/concurrent/SynchronousQueue.java \
java/util/concurrent/ThreadFactory.java \
java/util/concurrent/ThreadLocalRandom.java \
java/util/concurrent/ThreadPoolExecutor.java \
java/util/concurrent/TimeUnit.java \
java/util/concurrent/TimeoutException.java \
java/util/concurrent/TransferQueue.java \
java/util/concurrent/atomic/AtomicBoolean.java \
java/util/concurrent/atomic/AtomicInteger.java \
java/util/concurrent/atomic/AtomicIntegerArray.java \
java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java \
java/util/concurrent/atomic/AtomicLong.java \
java/util/concurrent/atomic/AtomicLongArray.java \
java/util/concurrent/atomic/AtomicLongFieldUpdater.java \
java/util/concurrent/atomic/AtomicMarkableReference.java \
java/util/concurrent/atomic/AtomicReference.java \
java/util/concurrent/atomic/AtomicReferenceArray.java \
java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java \
java/util/concurrent/atomic/AtomicStampedReference.java \
java/util/concurrent/locks/AbstractOwnableSynchronizer.java \
java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java \
java/util/concurrent/locks/AbstractQueuedSynchronizer.java \
java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java \
java/util/concurrent/locks/Condition.java \
java/util/concurrent/locks/Lock.java \
java/util/concurrent/locks/LockSupport.java \
java/util/concurrent/locks/ReadWriteLock.java \
java/util/concurrent/locks/ReentrantLock.java \
java/util/concurrent/locks/ReentrantReadWriteLock.java \
java/util/regex/Pattern.java \
java/util/regex/Matcher.java \
java/util/regex/MatchResult.java \
java/util/regex/ASCII.java \
java/util/regex/UnicodeProp.java \
java/util/regex/PatternSyntaxException.java \
java/util/prefs/Preferences.java \
java/util/prefs/AbstractPreferences.java \
java/util/prefs/PreferenceChangeEvent.java \
java/util/prefs/PreferenceChangeListener.java \
java/util/prefs/NodeChangeEvent.java \
java/util/prefs/NodeChangeListener.java \
java/util/prefs/BackingStoreException.java \
java/util/prefs/InvalidPreferencesFormatException.java \
java/util/prefs/PreferencesFactory.java \
java/util/prefs/Base64.java \
java/util/prefs/XmlSupport.java \
java/util/spi/CurrencyNameProvider.java \
java/util/spi/LocaleNameProvider.java \
java/util/spi/LocaleServiceProvider.java \
java/util/spi/TimeZoneNameProvider.java \
java/io/Closeable.java \
java/io/Flushable.java \
java/io/PipedInputStream.java \
java/io/PipedOutputStream.java \
java/io/IOException.java \
java/io/CharConversionException.java \
java/io/FileNotFoundException.java \
java/io/EOFException.java \
java/io/SyncFailedException.java \
java/io/UTFDataFormatException.java \
java/io/InterruptedIOException.java \
java/io/UnsupportedEncodingException.java \
java/io/DataInput.java \
java/io/DataOutput.java \
java/io/InputStream.java \
java/io/FileInputStream.java \
java/io/FilterInputStream.java \
java/io/BufferedInputStream.java \
java/io/DataInputStream.java \
java/io/ByteArrayInputStream.java \
java/io/PushbackInputStream.java \
java/io/SequenceInputStream.java \
java/io/StringBufferInputStream.java \
java/io/LineNumberInputStream.java \
java/io/OutputStream.java \
java/io/FileOutputStream.java \
java/io/FilterOutputStream.java \
java/io/BufferedOutputStream.java \
java/io/DataOutputStream.java \
java/io/ByteArrayOutputStream.java \
java/io/PrintStream.java \
java/io/RandomAccessFile.java \
java/io/StreamTokenizer.java \
java/io/DeleteOnExitHook.java \
java/io/File.java \
java/io/FileSystem.java \
java/io/FileDescriptor.java \
java/io/FilenameFilter.java \
java/io/FileFilter.java \
java/io/FilePermission.java \
java/io/Serializable.java \
java/io/Externalizable.java \
java/io/SerialCallbackContext.java \
java/io/Bits.java \
java/io/ObjectInput.java \
java/io/ObjectInputStream.java \
java/io/ObjectInputValidation.java \
java/io/ObjectOutput.java \
java/io/ObjectOutputStream.java \
java/io/ObjectStreamClass.java \
java/io/ObjectStreamConstants.java \
java/io/ObjectStreamField.java \
java/io/SerializablePermission.java \
java/io/InvalidClassException.java \
java/io/InvalidObjectException.java \
java/io/NotActiveException.java \
java/io/NotSerializableException.java \
java/io/ObjectStreamException.java \
java/io/OptionalDataException.java \
java/io/StreamCorruptedException.java \
java/io/WriteAbortedException.java \
java/io/Reader.java \
java/io/BufferedReader.java \
java/io/LineNumberReader.java \
java/io/CharArrayReader.java \
java/io/FilterReader.java \
java/io/PushbackReader.java \
java/io/InputStreamReader.java \
java/io/FileReader.java \
java/io/PipedReader.java \
java/io/StringReader.java \
java/io/Writer.java \
java/io/BufferedWriter.java \
java/io/PrintWriter.java \
java/io/CharArrayWriter.java \
java/io/FilterWriter.java \
java/io/OutputStreamWriter.java \
java/io/FileWriter.java \
java/io/PipedWriter.java \
java/io/StringWriter.java \
java/io/Console.java \
java/io/ExpiringCache.java \
java/nio/charset/Charset.java \
java/nio/charset/CharsetDecoder.java \
java/nio/charset/CharsetEncoder.java \
java/nio/charset/UnmappableCharacterException.java \
java/nio/Bits.java \
java/nio/DirectByteBuffer.java \
java/nio/HeapByteBuffer.java \
java/nio/HeapCharBuffer.java \
java/security/AccessController.java \
java/security/ProtectionDomain.java \
java/net/URLClassLoader.java \
java/net/URLConnection.java \
sun/misc/Launcher.java \
sun/misc/MetaIndex.java \
sun/misc/URLClassPath.java \
sun/misc/Version.java \
sun/misc/FileURLMapper.java \
sun/misc/MessageUtils.java \
sun/misc/GC.java \
sun/misc/Service.java \
sun/misc/JavaAWTAccess.java \
sun/misc/JavaLangAccess.java \
sun/misc/JavaIOAccess.java \
sun/misc/JavaIOFileDescriptorAccess.java \
sun/misc/JavaNioAccess.java \
sun/misc/Perf.java \
sun/misc/PerfCounter.java \
sun/net/www/protocol/jar/Handler.java \
sun/net/www/protocol/jar/JarURLConnection.java \
sun/net/www/protocol/file/Handler.java \
sun/net/www/protocol/file/FileURLConnection.java
FILES_java = $(JAVA_JAVA_java)

View File

@ -0,0 +1,375 @@
#
# 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
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
JAVAC_MAX_WARNINGS=true
include $(BUILDDIR)/common/Defs.gmk
$(info ENTERING java)
# 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
ifeq ($(PLATFORM), macosx)
FILES_c += java_props_macosx.c
FILES_java += java/util/prefs/MacOSXPreferences.java \
java/util/prefs/MacOSXPreferencesFile.java \
java/util/prefs/MacOSXPreferencesFactory.java
CFLAGS_$(VARIANT)/java_props_md.o = -Os -x objective-c
endif
#
# Make sure first rule does 'all'
#
default_rule: all
#
# Source files to generate before we try to compile anything
#
CLASSES_INIT = niosrc rbcontrolsrc
niosrc: ; ($(CD) ../nio; $(MAKE) sources)
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)
ifneq ($(PLATFORM), macosx)
HAVE_ALTZONE=true
endif
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) $(LIBDL) \
-L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
ifeq ($(PLATFORM), macosx)
OTHER_LDLIBS += \
-framework CoreFoundation \
-framework Security \
-framework SystemConfiguration
endif
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/.
ifeq ($(PLATFORM), macosx)
PLATFORM_UNIX_PROCESS = \
$(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.bsd
else
PLATFORM_UNIX_PROCESS = \
$(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM)
endif
$(GENSRCDIR)/java/lang/UNIXProcess.java: $(PLATFORM_UNIX_PROCESS)
$(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
build: $(CURDATA)
$(CURDATA): \
$(BUILD_TOOLS) \
$(SHARE_SRC)/classes/java/util/CurrencyData.properties
$(RM) $(CURDATA)
$(TOOL_GENERATECURRENCYDATA) -o $@.temp \
< $(SHARE_SRC)/classes/java/util/CurrencyData.properties
$(MV) $@.temp $@
$(call chmod-file, 444)
clean::
$(RM) $(CURDATA)
#
# Rules to generate classes/java/lang/uniName.dat
#
UNINAME = $(CLASSBINDIR)/java/lang/uniName.dat
build: $(UNINAME)
$(UNINAME): $(JDK_TOPDIR)/make/tools/UnicodeData/UnicodeData.txt \
$(BUILD_TOOLS)
@$(prep-target)
$(TOOL_CHARACTERNAME) \
$(JDK_TOPDIR)/make/tools/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

View File

@ -0,0 +1,109 @@
#!/bin/sh
#
# Copyright (c) 2005, 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.
#
#
# This script is to generate the supported locale list string and replace the
# #LOCALE_LIST# in <ws>/src/share/classes/sun/util/CoreResourceBundleControl.java.
#
# NAWK & SED is passed in as environment variables.
#
LOCALE_LIST=$1
INUT_FILE=$2
OUTPUT_FILE=$3
LOCALES=`(for I in $LOCALE_LIST; do echo $I;done) | sort | uniq`
JAVA_LOCALES=
toJavaLocale()
{
NewLocale=`echo $1 | $NAWK '
BEGIN {
# The following values have to be consistent with java.util.Locale.
javalocales["en"] = "ENGLISH";
javalocales["fr"] = "FRENCH";
javalocales["de"] = "GERMAN";
javalocales["it"] = "ITALIAN";
javalocales["ja"] = "JAPANESE";
javalocales["ko"] = "KOREAN";
javalocales["zh"] = "CHINESE";
javalocales["zh_CN"] = "SIMPLIFIED_CHINESE";
javalocales["zh_TW"] = "TRADITIONAL_CHINESE";
javalocales["fr_FR"] = "FRANCE";
javalocales["de_DE"] = "GERMANY";
javalocales["it_IT"] = "ITALY";
javalocales["ja_JP"] = "JAPAN";
javalocales["ko_KR"] = "KOREA";
javalocales["en_GB"] = "UK";
javalocales["en_US"] = "US";
javalocales["en_CA"] = "CANADA";
javalocales["fr_CA"] = "CANADA_FRENCH";
}
{
if ($0 in javalocales) {
print " Locale." javalocales[$0];
} else {
split($0, a, "_");
if (a[3] != "") {
print " new Locale(\"" a[1] "\", \"" a[2] "\", \"" a[3] "\")";
} else if (a[2] != "") {
print " new Locale(\"" a[1] "\", \"" a[2] "\")";
} else {
print " new Locale(\"" a[1] "\")";
}
}
}'`
JAVA_LOCALES=$JAVA_LOCALES$NewLocale
}
# count the number of locales
counter=0
for i in $LOCALES
do
counter=`expr $counter + 1`
done
index=0
for locale in $LOCALES
do
index=`expr $index + 1`;
if [ $index != $counter ]
then
toJavaLocale $locale
JAVA_LOCALES=$JAVA_LOCALES","
else
toJavaLocale $locale
fi
done
# replace the #LOCALE_LIST# in the precompiled CoreResourceBundleControl.java file.
$SED -e "s@^#warn .*@// -- This file was mechanically generated: Do not edit! -- //@" \
-e "s/#LOCALE_LIST#/$JAVA_LOCALES/g" $2 > $3

View File

@ -0,0 +1,300 @@
#
# Copyright (c) 1997, 2009, 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.
#
# Define public interface.
SUNWprivate_1.1 {
global:
JNI_OnLoad;
JNU_ThrowNoSuchMethodException;
JNU_CallStaticMethodByName;
JNU_CallMethodByName;
JNU_CallMethodByNameV;
JNU_ClassClass;
JNU_ClassObject;
JNU_ClassString;
JNU_ClassThrowable;
JNU_CopyObjectArray;
JNU_Equals;
JNU_GetEnv;
JNU_GetFieldByName;
JNU_GetStaticFieldByName;
JNU_GetStringPlatformChars;
JNU_IsInstanceOfByName;
JNU_MonitorWait;
JNU_NewObjectByName;
JNU_NewStringPlatform;
JNU_Notify;
JNU_NotifyAll;
JNU_PrintClass;
JNU_PrintString;
JNU_ReleaseStringPlatformChars;
JNU_SetFieldByName;
JNU_SetStaticFieldByName;
JNU_ThrowArrayIndexOutOfBoundsException;
JNU_ThrowByName;
JNU_ThrowByNameWithLastError;
JNU_ThrowClassNotFoundException;
JNU_ThrowIllegalAccessError;
JNU_ThrowIllegalAccessException;
JNU_ThrowIllegalArgumentException;
JNU_ThrowInstantiationException;
JNU_ThrowInternalError;
JNU_ThrowIOException;
JNU_ThrowIOExceptionWithLastError;
JNU_ThrowNoSuchFieldError;
JNU_ThrowNoSuchFieldException;
JNU_ThrowNoSuchMethodError;
JNU_ThrowNullPointerException;
JNU_ThrowNumberFormatException;
JNU_ThrowOutOfMemoryError;
JNU_ThrowStringIndexOutOfBoundsException;
JNU_ToString;
Java_java_io_FileDescriptor_initIDs;
Java_java_io_FileDescriptor_sync;
Java_java_io_FileInputStream_available;
Java_java_io_FileInputStream_close0;
Java_java_io_FileInputStream_initIDs;
Java_java_io_FileInputStream_open;
Java_java_io_FileInputStream_read;
Java_java_io_FileInputStream_readBytes;
Java_java_io_FileInputStream_skip;
Java_java_io_FileOutputStream_close0;
Java_java_io_FileOutputStream_initIDs;
Java_java_io_FileOutputStream_open;
Java_java_io_FileOutputStream_write;
Java_java_io_FileOutputStream_writeBytes;
Java_java_io_FileSystem_getFileSystem;
Java_java_io_ObjectInputStream_bytesToDoubles;
Java_java_io_ObjectInputStream_bytesToFloats;
Java_java_io_ObjectOutputStream_doublesToBytes;
Java_java_io_ObjectOutputStream_floatsToBytes;
Java_java_io_ObjectStreamClass_hasStaticInitializer;
Java_java_io_ObjectStreamClass_initNative;
Java_java_io_RandomAccessFile_close0;
Java_java_io_RandomAccessFile_getFilePointer;
Java_java_io_RandomAccessFile_initIDs;
Java_java_io_RandomAccessFile_length;
Java_java_io_RandomAccessFile_open;
Java_java_io_RandomAccessFile_read;
Java_java_io_RandomAccessFile_readBytes;
Java_java_io_RandomAccessFile_seek;
Java_java_io_RandomAccessFile_setLength;
Java_java_io_RandomAccessFile_write;
Java_java_io_RandomAccessFile_writeBytes;
Java_java_io_UnixFileSystem_canonicalize0;
Java_java_io_UnixFileSystem_checkAccess;
Java_java_io_UnixFileSystem_createDirectory;
Java_java_io_UnixFileSystem_createFileExclusively;
Java_java_io_UnixFileSystem_delete0;
Java_java_io_UnixFileSystem_getBooleanAttributes0;
Java_java_io_UnixFileSystem_getLastModifiedTime;
Java_java_io_UnixFileSystem_getLength;
Java_java_io_UnixFileSystem_getSpace;
Java_java_io_UnixFileSystem_initIDs;
Java_java_io_UnixFileSystem_list;
Java_java_io_UnixFileSystem_rename0;
Java_java_io_UnixFileSystem_setLastModifiedTime;
Java_java_io_UnixFileSystem_setReadOnly;
Java_java_io_UnixFileSystem_setPermission;
Java_java_lang_Class_forName0;
Java_java_lang_Class_getPrimitiveClass;
Java_java_lang_Class_isAssignableFrom;
Java_java_lang_Class_isInstance;
Java_java_lang_Class_registerNatives;
Java_java_lang_ClassLoader_findBootstrapClass;
Java_java_lang_ClassLoader_defineClass0;
Java_java_lang_ClassLoader_defineClass1;
Java_java_lang_ClassLoader_defineClass2;
Java_java_lang_ClassLoader_findLoadedClass0;
Java_java_lang_ClassLoader_resolveClass0;
Java_java_lang_ClassLoader_00024NativeLibrary_find;
Java_java_lang_ClassLoader_00024NativeLibrary_load;
Java_java_lang_ClassLoader_00024NativeLibrary_unload;
Java_java_lang_ClassLoader_getCaller;
Java_java_lang_ClassLoader_registerNatives;
Java_java_lang_Compiler_registerNatives;
Java_java_lang_Double_longBitsToDouble;
Java_java_lang_Double_doubleToRawLongBits;
Java_java_lang_reflect_Proxy_defineClass0;
Java_java_lang_Shutdown_runAllFinalizers;
Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
Java_java_lang_Float_intBitsToFloat;
Java_java_lang_Float_floatToRawIntBits;
Java_java_lang_StrictMath_IEEEremainder;
Java_java_lang_StrictMath_acos;
Java_java_lang_StrictMath_asin;
Java_java_lang_StrictMath_atan;
Java_java_lang_StrictMath_atan2;
Java_java_lang_StrictMath_cos;
Java_java_lang_StrictMath_exp;
Java_java_lang_StrictMath_log;
Java_java_lang_StrictMath_log10;
Java_java_lang_StrictMath_pow;
Java_java_lang_StrictMath_sin;
Java_java_lang_StrictMath_sqrt;
Java_java_lang_StrictMath_cbrt;
Java_java_lang_StrictMath_tan;
Java_java_lang_StrictMath_cosh;
Java_java_lang_StrictMath_sinh;
Java_java_lang_StrictMath_tanh;
Java_java_lang_StrictMath_hypot;
Java_java_lang_StrictMath_log1p;
Java_java_lang_StrictMath_expm1;
Java_java_lang_Object_getClass;
Java_java_lang_Object_registerNatives;
Java_java_lang_Package_getSystemPackage0;
Java_java_lang_Package_getSystemPackages0;
Java_java_lang_ProcessEnvironment_environ;
Java_java_lang_reflect_Array_get;
Java_java_lang_reflect_Array_getBoolean;
Java_java_lang_reflect_Array_getByte;
Java_java_lang_reflect_Array_getChar;
Java_java_lang_reflect_Array_getDouble;
Java_java_lang_reflect_Array_getFloat;
Java_java_lang_reflect_Array_getInt;
Java_java_lang_reflect_Array_getLength;
Java_java_lang_reflect_Array_getLong;
Java_java_lang_reflect_Array_getShort;
Java_java_lang_reflect_Array_multiNewArray;
Java_java_lang_reflect_Array_newArray;
Java_java_lang_reflect_Array_set;
Java_java_lang_reflect_Array_setBoolean;
Java_java_lang_reflect_Array_setByte;
Java_java_lang_reflect_Array_setChar;
Java_java_lang_reflect_Array_setDouble;
Java_java_lang_reflect_Array_setFloat;
Java_java_lang_reflect_Array_setInt;
Java_java_lang_reflect_Array_setLong;
Java_java_lang_reflect_Array_setShort;
Java_java_lang_Runtime_freeMemory;
Java_java_lang_Runtime_maxMemory;
Java_java_lang_Runtime_gc;
Java_java_lang_Runtime_runFinalization0;
Java_java_lang_Runtime_totalMemory;
Java_java_lang_Runtime_traceInstructions;
Java_java_lang_Runtime_traceMethodCalls;
Java_java_lang_Runtime_availableProcessors;
Java_java_lang_SecurityManager_classDepth;
Java_java_lang_SecurityManager_classLoaderDepth0;
Java_java_lang_SecurityManager_currentClassLoader0;
Java_java_lang_SecurityManager_currentLoadedClass0;
Java_java_lang_SecurityManager_getClassContext;
Java_java_lang_Shutdown_halt0;
Java_java_lang_String_intern;
Java_java_lang_System_identityHashCode;
Java_java_lang_System_initProperties;
Java_java_lang_System_mapLibraryName;
Java_java_lang_System_registerNatives;
Java_java_lang_System_setErr0;
Java_java_lang_System_setIn0;
Java_java_lang_System_setOut0;
Java_java_lang_Thread_registerNatives;
Java_java_lang_Throwable_fillInStackTrace;
Java_java_lang_Throwable_getStackTraceDepth;
Java_java_lang_Throwable_getStackTraceElement;
Java_java_lang_UNIXProcess_initIDs;
Java_java_lang_UNIXProcess_waitForProcessExit;
Java_java_lang_UNIXProcess_forkAndExec;
Java_java_lang_UNIXProcess_destroyProcess;
Java_java_nio_Bits_copyFromShortArray;
Java_java_nio_Bits_copyToShortArray;
Java_java_nio_Bits_copyFromIntArray;
Java_java_nio_Bits_copyToIntArray;
Java_java_nio_Bits_copyFromLongArray;
Java_java_nio_Bits_copyToLongArray;
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
Java_java_security_AccessController_getStackAccessControlContext;
Java_java_security_AccessController_getInheritedAccessControlContext;
Java_java_sql_DriverManager_getCallerClassLoader;
Java_java_util_ResourceBundle_getClassContext;
Java_java_util_TimeZone_getSystemTimeZoneID;
Java_java_util_TimeZone_getSystemGMTOffsetID;
Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8;
Java_java_util_prefs_FileSystemPreferences_chmod;
Java_java_util_prefs_FileSystemPreferences_lockFile0;
Java_java_util_prefs_FileSystemPreferences_unlockFile0;
Java_java_util_logging_FileHandler_isSetUID;
Java_sun_misc_MessageUtils_toStderr;
Java_sun_misc_MessageUtils_toStdout;
Java_sun_misc_NativeSignalHandler_handle0;
Java_sun_misc_Signal_findSignal;
Java_sun_misc_Signal_handle0;
Java_sun_misc_Signal_raise0;
Java_sun_reflect_ConstantPool_getClassAt0;
Java_sun_reflect_ConstantPool_getClassAtIfLoaded0;
Java_sun_reflect_ConstantPool_getDoubleAt0;
Java_sun_reflect_ConstantPool_getFieldAt0;
Java_sun_reflect_ConstantPool_getFieldAtIfLoaded0;
Java_sun_reflect_ConstantPool_getFloatAt0;
Java_sun_reflect_ConstantPool_getIntAt0;
Java_sun_reflect_ConstantPool_getLongAt0;
Java_sun_reflect_ConstantPool_getMemberRefInfoAt0;
Java_sun_reflect_ConstantPool_getMethodAt0;
Java_sun_reflect_ConstantPool_getMethodAtIfLoaded0;
Java_sun_reflect_ConstantPool_getSize0;
Java_sun_reflect_ConstantPool_getStringAt0;
Java_sun_reflect_ConstantPool_getUTF8At0;
Java_java_io_Console_istty;
Java_java_io_Console_encoding;
Java_java_io_Console_echo;
Java_sun_misc_GC_maxObjectInspectionAge;
Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
Java_sun_reflect_Reflection_getCallerClass;
Java_sun_reflect_Reflection_getClassAccessFlags;
Java_sun_misc_Version_getJdkVersionInfo;
Java_sun_misc_Version_getJdkSpecialVersion;
Java_sun_misc_Version_getJvmVersionInfo;
Java_sun_misc_Version_getJvmSpecialVersion;
Java_sun_misc_VM_getThreadStateValues;
Java_sun_misc_VM_latestUserDefinedLoader;
Java_sun_misc_VM_initialize;
Java_sun_misc_VMSupport_initAgentProperties;
# ZipFile.c needs this one
throwFileNotFoundException;
# Java_sun_misc_VM_getState; threads.c
# Java_sun_misc_VM_threadsSuspended; threads.c
# Java_sun_misc_VM_unsuspendSomeThreads; threads.c
# Java_sun_misc_VM_unsuspendThreads; threads.c
# Outcalls from libjvm done using dlsym().
VerifyClassCodes;
VerifyClassCodesForMajorVersion;
NewStringPlatform;
GetStringPlatformChars;
Canonicalize;
JDK_GetVersionInfo0;
local:
*;
};

View File

@ -0,0 +1,61 @@
#
# Copyright (c) 2003, 2005, 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 reflection and annotations
#
BUILDDIR = ../../..
PACKAGE = java.lang.reflect
PRODUCT = java
include $(BUILDDIR)/common/Defs.gmk
#
# Files to compile.
#
AUTO_FILES_JAVA_DIRS = java/lang/reflect sun/reflect
#
# Install .lib file.
#
INSTALL_DOT_LIB = true
include $(BUILDDIR)/common/Classes.gmk
#
# Special rules.
#
subdirs: classes
clean::
$(RM) -r $(CLASSHDRDIR)
clobber::
$(RM) -r $(CLASSBINDIR)/java/lang/reflect \
$(CLASSBINDIR)/java/lang/annotatation
.PHONY: clean clobber

View File

@ -0,0 +1,109 @@
data = R0x2000;
text = LOAD ?RXO;
# Test Null
text: .text%_init;
text: .text%init64IO: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
text: .text%JNI_OnLoad;
text: .text%Canonicalize;
text: .text%canonicalize;
text: .text%collapse: OUTPUTDIR/tmp/java/java.lang/java/obj/canonicalize_md.o;
text: .text%Java_java_lang_Object_registerNatives;
text: .text%Java_java_lang_System_registerNatives;
text: .text%Java_java_lang_Thread_registerNatives;
text: .text%Java_java_security_AccessController_getStackAccessControlContext;
text: .text%Java_java_security_AccessController_getInheritedAccessControlContext;
text: .text%Java_java_lang_ClassLoader_registerNatives;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
text: .text%Java_java_lang_Class_registerNatives;
text: .text%Java_java_lang_Class_getPrimitiveClass;
text: .text%Java_java_lang_System_initProperties;
text: .text%GetJavaProperties;
text: .text%uname: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
text: .text%mapLookup: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
text: .text%setPathEnvironment: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
text: .text%JNU_NewStringPlatform;
text: .text%JNU_CallStaticMethodByName;
text: .text%NewStringPlatform;
text: .text%Java_java_io_FileInputStream_initIDs;
text: .text%Java_java_io_FileDescriptor_initIDs;
text: .text%Java_java_io_FileOutputStream_initIDs;
text: .text%Java_java_lang_System_setIn0;
text: .text%Java_sun_reflect_Reflection_getCallerClass;
text: .text%Java_java_lang_Class_forName0;
text: .text%Java_java_lang_String_intern;
text: .text%Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
text: .text%Java_java_lang_Throwable_fillInStackTrace;
text: .text%Java_java_lang_System_setOut0;
text: .text%Java_java_lang_System_setErr0;
text: .text%Java_java_lang_Compiler_registerNatives;
text: .text%Java_java_io_FileSystem_getFileSystem;
text: .text%JNU_NewObjectByName;
text: .text%Java_java_io_UnixFileSystem_initIDs;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
text: .text%Java_java_io_UnixFileSystem_list;
text: .text%JNU_GetStringPlatformChars;
text: .text%JNU_ReleaseStringPlatformChars;
text: .text%JNU_ClassString;
text: .text%JNU_CopyObjectArray;
text: .text%Java_java_io_UnixFileSystem_canonicalize;
text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
text: .text%Java_java_lang_ClassLoader_findLoadedClass;
text: .text%Java_java_lang_ClassLoader_findBootstrapClass;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
text: .text%Java_java_lang_System_mapLibraryName;
text: .text%cpchars: OUTPUTDIR/tmp/java/java.lang/java/obj/System.o;
text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_load;
text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
text: .text%Java_java_lang_Float_floatToIntBits;
text: .text%Java_java_lang_Double_doubleToLongBits;
text: .text%Java_java_io_FileInputStream_open;
text: .text%fileOpen;
text: .text%Java_java_io_UnixFileSystem_getLength;
text: .text%Java_java_io_FileInputStream_readBytes;
text: .text%readBytes;
text: .text%Java_java_io_FileInputStream_close0;
text: .text%Java_java_lang_Object_getClass;
text: .text%Java_java_lang_ClassLoader_defineClass0;
text: .text%VerifyClassCodes;
# Test Exit
text: .text%Java_java_lang_Shutdown_halt;
# Test Hello
text: .text%Java_java_io_FileOutputStream_writeBytes;
text: .text%writeBytes;
# Test Sleep
# Test IntToString
# Test LoadToolkit
text: .text%Java_java_util_ResourceBundle_getClassContext;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
text: .text%JNU_GetEnv;
text: .text%Java_java_io_UnixFileSystem_checkAccess;
text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
text: .text%Java_java_io_FileInputStream_available;
text: .text%Java_java_lang_reflect_Array_newArray;
text: .text%Java_java_lang_Throwable_getStackTraceDepth;
text: .text%Java_java_lang_Throwable_getStackTraceElement;
text: .text%Java_java_lang_System_identityHashCode;
text: .text%Java_sun_misc_Signal_findSignal;
text: .text%Java_sun_misc_Signal_handle0;
text: .text%JNU_NotifyAll;
# Test LoadFrame
text: .text%JNU_CallMethodByName;
text: .text%JNU_CallMethodByNameV;
text: .text%Java_java_util_logging_FileHandler_lockFile;
text: .text%Java_java_io_FileOutputStream_open;
text: .text%Java_java_io_UnixFileSystem_createDirectory;
text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
text: .text%Java_java_io_UnixFileSystem_setLastModifiedTime;
text: .text%Java_java_util_prefs_FileSystemPreferences_unlockFile0;
text: .text%Java_java_io_FileOutputStream_close0;
text: .text%Java_java_util_logging_FileHandler_unlockFile;
# Test LoadJFrame
text: .text%Java_java_lang_Class_isAssignableFrom;
text: .text%Java_java_lang_Class_isInstance;
# Test JHello
# SwingSet
text: .text%Java_java_util_TimeZone_getSystemTimeZoneID;
text: .text%findJavaTZ_md;
text: .text%Java_java_lang_StrictMath_log;

View File

@ -0,0 +1,107 @@
data = R0x2000;
text = LOAD ?RXO;
# Test Null
text: .text%init64IO: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
text: .text%JNI_OnLoad;
text: .text%Canonicalize;
text: .text%canonicalize;
text: .text%collapse: OUTPUTDIR/tmp/java/java.lang/java/obj/canonicalize_md.o;
text: .text%Java_java_lang_Object_registerNatives;
text: .text%Java_java_lang_System_registerNatives;
text: .text%Java_java_lang_Thread_registerNatives;
text: .text%Java_java_security_AccessController_getStackAccessControlContext;
text: .text%Java_java_security_AccessController_getInheritedAccessControlContext;
text: .text%Java_java_lang_ClassLoader_registerNatives;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
text: .text%Java_java_lang_Class_registerNatives;
text: .text%Java_java_io_ObjectStreamClass_initNative;
text: .text%Java_java_lang_Class_getPrimitiveClass;
text: .text%Java_java_lang_System_initProperties;
text: .text%GetJavaProperties;
text: .text%JNU_NewStringPlatform;
text: .text%initializeEncoding: OUTPUTDIR/tmp/java/java.lang/java/obj/jni_util.o;
text: .text%JNU_CallStaticMethodByName;
text: .text%newString646_US: OUTPUTDIR/tmp/java/java.lang/java/obj/jni_util.o;
text: .text%NewStringPlatform;
text: .text%Java_java_io_FileInputStream_initIDs;
text: .text%Java_java_io_FileDescriptor_initIDs;
text: .text%Java_java_io_FileOutputStream_initIDs;
text: .text%Java_java_lang_System_setIn0;
text: .text%Java_sun_reflect_Reflection_getCallerClass;
text: .text%Java_java_lang_Class_forName0;
text: .text%Java_java_lang_Object_getClass;
text: .text%Java_sun_reflect_Reflection_getClassAccessFlags;
text: .text%Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
text: .text%Java_java_lang_System_setOut0;
text: .text%Java_java_lang_System_setErr0;
text: .text%Java_java_lang_System_identityHashCode;
text: .text%Java_sun_misc_Signal_findSignal;
text: .text%Java_sun_misc_Signal_handle0;
text: .text%Java_java_io_FileSystem_getFileSystem;
text: .text%JNU_NewObjectByName;
text: .text%Java_java_io_UnixFileSystem_initIDs;
text: .text%Java_java_io_UnixFileSystem_canonicalize;
text: .text%JNU_GetStringPlatformChars;
text: .text%JNU_ReleaseStringPlatformChars;
text: .text%Java_java_io_FileInputStream_open;
text: .text%fileOpen;
text: .text%Java_java_io_FileInputStream_readBytes;
text: .text%readBytes;
text: .text%Java_java_io_FileInputStream_available;
text: .text%Java_java_io_FileInputStream_close0;
text: .text%Java_java_lang_System_mapLibraryName;
text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
text: .text%statMode: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_load;
text: .text%Java_java_lang_Compiler_registerNatives;
text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
text: .text%Java_java_io_UnixFileSystem_list;
text: .text%JNU_ClassString;
text: .text%JNU_CopyObjectArray;
text: .text%Java_java_lang_String_intern;
text: .text%Java_java_lang_ClassLoader_findLoadedClass;
text: .text%Java_java_lang_ClassLoader_findBootstrapClass;
text: .text%Java_java_lang_Throwable_fillInStackTrace;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
text: .text%Java_java_lang_Float_floatToIntBits;
text: .text%Java_java_lang_Double_doubleToLongBits;
text: .text%Java_java_io_UnixFileSystem_getLength;
text: .text%Java_java_lang_ClassLoader_defineClass0;
text: .text%VerifyClassCodes;
# Test Exit
text: .text%Java_java_lang_Shutdown_halt;
# Test Hello
text: .text%Java_java_io_FileOutputStream_writeBytes;
text: .text%writeBytes;
# Test Sleep
# Test IntToString
# Test LoadToolkit
text: .text%Java_java_util_ResourceBundle_getClassContext;
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
text: .text%JNU_GetEnv;
text: .text%Java_java_io_UnixFileSystem_checkAccess;
text: .text%Java_java_lang_reflect_Array_newArray;
text: .text%Java_java_lang_Throwable_getStackTraceDepth;
text: .text%Java_java_lang_Throwable_getStackTraceElement;
text: .text%throwFileNotFoundException;
text: .text%JNU_NotifyAll;
# Test LoadFrame
text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
text: .text%JNU_CallMethodByName;
text: .text%JNU_CallMethodByNameV;
text: .text%Java_java_io_UnixFileSystem_createDirectory;
text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
text: .text%Java_java_io_UnixFileSystem_setLastModifiedTime;
text: .text%Java_java_util_prefs_FileSystemPreferences_unlockFile0;
# Test LoadJFrame
text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
text: .text%Java_java_lang_Class_isInstance;
# Test JHello
# SwingSet
text: .text%Java_java_lang_Class_isAssignableFrom;
text: .text%Java_java_util_TimeZone_getSystemTimeZoneID;
text: .text%findJavaTZ_md;
text: .text%Java_java_lang_StrictMath_log;
text: .text%Java_java_lang_StrictMath_sqrt;

Some files were not shown because too many files have changed in this diff Show More