1 # 2 # Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 # 27 # SE-Embedded Reduced JRE targets 28 # 29 ifdef JAVASE_EMBEDDED 30 31 reduced-image-jre reduced-headless-image-jre :: 32 @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..." 33 34 # Add the reduced-jre images as pre-reqs. These will be processed last 35 images:: reduced-image-jre reduced-headless-image-jre 36 37 38 ###################################################### 39 # Create the headless rt.jar 40 ###################################################### 41 42 NOT_HEADLESS_RT_JAR_LIST = $(ABS_TEMPDIR)/not_hl_rt_jar.list 43 HEADLESS_RT_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/hl_rt_jar_list 44 TOTAL_HEADLESS_JAR_FILELIST=$(REORDER_TEMPDIR)/hl_file_list 45 HEADLESS_CLASSLIST=$(ABS_TEMPDIR)/headless_classlist 46 47 # Add the jar file directories that we don't want in the 48 # headless JRE. If you want to remove most classes in a 49 # directory, put the directory in the NOT_HEADLESS_RT_JAR_LIST 50 # and put the individual classes you want to keep in the 51 # HEADLESS_CLASSLIST file. 52 $(NOT_HEADLESS_RT_JAR_LIST): $(NOT_RT_JAR_LIST) 53 $(RM) $(HEADLESS_CLASSLIST) 54 $(RM) $(NOT_HEADLESS_RT_JAR_LIST) 55 $(CP) $(NOT_RT_JAR_LIST) $(NOT_HEADLESS_RT_JAR_LIST) 56 # List all the packages to be excluded 57 $(ECHO) "sun/awt/motif/" >> $@ 58 $(ECHO) "sun/awt/X11/" >> $@ 59 $(ECHO) "sun/applet/" >> $@ 60 $(ECHO) "sun/java2d/opengl/" >> $@ 61 $(ECHO) "com/sun/java/swing/plaf/" >> $@ 62 # List all the individual classes to be included 63 $(ECHO) "sun/awt/motif/MFontConfiguration.class" >$(HEADLESS_CLASSLIST) 64 $(ECHO) "sun/applet/AppContextCreator.class" >>$(HEADLESS_CLASSLIST) 65 $(ECHO) "sun/applet/AppletAudioClip.class" >>$(HEADLESS_CLASSLIST) 66 $(ECHO) "sun/java2d/opengl/GLXSurfaceData.class" >>$(HEADLESS_CLASSLIST) 67 $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData.class" >>$(HEADLESS_CLASSLIST) 68 $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager.class" >>$(HEADLESS_CLASSLIST) 69 $(ECHO) "sun/java2d/opengl/OGLSurfaceData.class" >>$(HEADLESS_CLASSLIST) 70 71 72 $(TOTAL_HEADLESS_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_HEADLESS_RT_JAR_LIST) 73 $(prep-target) 74 $(RM) $@.temp 75 $(CD) $(CLASSBINDIR) ; \ 76 $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \ 77 -o $@.temp - $(NOT_HEADLESS_RT_JAR_LIST) . 78 # Add on the explicitly included class files from the otherwise excluded packages 79 $(CAT) $(HEADLESS_CLASSLIST) >> $@.temp 80 $(MV) $@.temp $@ 81 @$(CD) $(CLASSBINDIR); $(java-vm-cleanup) 82 83 # Create the headless rt.jar file list & non-class files list 84 MakeHeadlessJarFileList: $(TOTAL_HEADLESS_JAR_FILELIST) $(JARSPLIT_JARFILE) 85 @$(RM) $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST) 86 $(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) $(TOTAL_HEADLESS_JAR_FILELIST) \ 87 -o $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST) 88 @$(java-vm-cleanup) 89 90 # Create headless rt.jar 91 HL_RT_JAR=$(ABS_TEMPDIR)/rt-hl-orig.jar 92 $(HL_RT_JAR): MakeHeadlessJarFileList $(RT_JAR_MANIFEST_FILE) 93 $(prep-target) 94 $(CD) $(CLASSBINDIR) ; \ 95 $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ @$(HEADLESS_RT_JAR_FILELIST) \ 96 $(JAR_JFLAGS) 97 @$(CD) $(CLASSBINDIR); $(java-vm-cleanup) 98 99 100 # 101 # Produce a reduced Headful JRE for Embedded Devices 102 # 103 # The deployment binaries are added during the deployment build process 104 # 105 106 # Binaries that don't get included in reduced jre image bin directory 107 NOT_REDUCEDJRE_BIN = \ 108 java_vm \ 109 kinit \ 110 klist \ 111 ktab \ 112 orbd \ 113 policytool \ 114 rmid \ 115 rmiregistry \ 116 servertool \ 117 tnameserv \ 118 pack200 \ 119 unpack200 120 121 # jars/resources/libs that don't get included in reduced jre image lib directory 122 NOT_REDUCEDJRE_LIB = \ 123 charsets.jar \ 124 ext/dnsns.jar \ 125 ext/localedata.jar \ 126 $(LIBARCH)/client/classes.jsa \ 127 $(LIBARCH)/libjavaplugin_jni.so \ 128 $(LIBARCH)/libjavaplugin_nscp_gcc29.so \ 129 $(LIBARCH)/libjavaplugin_nscp.so \ 130 $(LIBARCH)/libjavaplugin_oji.so 131 132 # JRE docs that don't get included in reduced jre image top directory 133 NOT_REDUCEDJRE_DOC = \ 134 Welcome.html 135 136 reduced-image-jre:: 137 @$(ECHO) Starting to Produce Reduced JRE 138 @# 139 @# First make a copy of the full JRE 140 @# 141 $(RM) -r $(JRE_REDUCED_IMAGE_DIR) 142 $(MKDIR) -p $(JRE_REDUCED_IMAGE_DIR) 143 $(CD) $(JRE_IMAGE_DIR); \ 144 $(TAR) cf - . | ($(CD) $(JRE_REDUCED_IMAGE_DIR); $(TAR) xf - ); 145 146 @# 147 @# Remove all of the files that are not needed for the 148 @# reduced JRE 149 @# 150 for l in $(NOT_REDUCEDJRE_BIN) ; do \ 151 $(RM) $(JRE_REDUCED_IMAGE_DIR)/bin/$$l ; \ 152 done 153 for l in $(NOT_REDUCEDJRE_LIB) ; do \ 154 $(RM) $(JRE_REDUCED_IMAGE_DIR)/lib/$$l ; \ 155 done 156 for l in $(NOT_REDUCEDJRE_DOC) ; do \ 157 $(RM) $(JRE_REDUCED_IMAGE_DIR)/$$l ; \ 158 done 159 160 @# Remove misc. other files 161 $(RM) -r $(JRE_REDUCED_IMAGE_DIR)/man 162 $(RM) -f $(JRE_REDUCED_IMAGE_DIR)/CHANGES 163 164 @$(ECHO) Done Creating Reduced JRE 165 166 # 167 # Produce a reduced Headless JRE 168 # 169 reduced-headless-image-jre:: $(RT_JAR) $(RESOURCES_JAR) $(BUILD_META_INDEX) $(HL_RT_JAR) 170 @$(ECHO) Starting to Produce Reduced Headless JRE 171 @# 172 @# First make a copy of the reduced JRE we just built 173 @# 174 $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR) 175 $(MKDIR) -p $(JRE_REDUCED_HEADLESS_IMAGE_DIR) 176 $(CD) $(JRE_REDUCED_IMAGE_DIR); \ 177 $(TAR) cf - . | ($(CD) $(JRE_REDUCED_HEADLESS_IMAGE_DIR); $(TAR) xf - ); 178 179 @# Replace the full rt.jar with the headless rt.jar 180 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar 181 $(CP) $(HL_RT_JAR) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar 182 183 @# 184 @# Remove all of the files that are not needed for the 185 @# reduced Headless JRE 186 @# 187 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/gtkhelper 188 $(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libjsoundalsa.so 189 $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/audio 190 $(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/applet 191 $(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/awt_robot 192 $(RM) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libawt_xawt.so 193 $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libsplashscreen.so 194 @# Remove oblique fonts and reduce font support to LucidaSansRegular only 195 $(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/oblique-fonts 196 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiBold.ttf 197 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiItalic.ttf 198 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightItalic.ttf 199 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightRegular.ttf 200 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaSansDemiBold.ttf 201 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterBold.ttf 202 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterRegular.ttf 203 204 ifeq ($(PLATFORM), linux) 205 # put out minimal fonts.dir file for the remaining font 206 $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir 207 $(ECHO) 6>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir 208 $(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 209 $(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 210 $(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 211 $(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 212 $(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 213 $(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 214 215 endif # Linux 216 217 @# 218 @# all done with JRE reduced headless image 219 @# 220 221 @$(ECHO) Done Creating Reduced Headless JRE 222 223 images-clobber:: 224 $(RM) -r $(JRE_REDUCED_IMAGE_DIR) 225 $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR) 226 227 .PHONY: reduced-image-jre reduced-headless-image-jre 228 229 endif # JAVASE_EMBEDDED 230