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) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/xawt
 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