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         $(ECHO) "sun/awt/motif/" >> $@
  57         $(ECHO) "sun/awt/X11/" >> $@
  58         $(ECHO) "sun/applet/" >> $@
  59         $(ECHO) "sun/java2d/opengl/" >> $@
  60         $(ECHO) "com/sun/java/swing/plaf/" >> $@
  61         $(ECHO) "sun/awt/motif/MFontConfiguration" >$(HEADLESS_CLASSLIST)
  62         $(ECHO) "sun/applet/AppContextCreator" >>$(HEADLESS_CLASSLIST)
  63         $(ECHO) "sun/applet/AppletAudioClip" >>$(HEADLESS_CLASSLIST)
  64         $(ECHO) "sun/java2d/opengl/GLXSurfaceData" >>$(HEADLESS_CLASSLIST)
  65         $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData" >>$(HEADLESS_CLASSLIST)
  66         $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager" >>$(HEADLESS_CLASSLIST)
  67         $(ECHO) "sun/java2d/opengl/OGLSurfaceData" >>$(HEADLESS_CLASSLIST)
  68 
  69 $(TOTAL_HEADLESS_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_HEADLESS_RT_JAR_LIST)
  70         $(prep-target)
  71         $(RM) $@.temp
  72         $(CD) $(CLASSBINDIR) ; \
  73                 $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \
  74                 -o  $@.temp $(HEADLESS_CLASSLIST) $(NOT_HEADLESS_RT_JAR_LIST)  .
  75         $(MV) $@.temp $@
  76         @$(CD) $(CLASSBINDIR); $(java-vm-cleanup)
  77 
  78 # Create the headless rt.jar file list & non-class files list
  79 MakeHeadlessJarFileList: $(TOTAL_HEADLESS_JAR_FILELIST) $(JARSPLIT_JARFILE)
  80         @$(RM) $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST)
  81         $(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) $(TOTAL_HEADLESS_JAR_FILELIST) \
  82                 -o  $(HEADLESS_RT_JAR_FILELIST) $(RES_JAR_FILELIST)
  83         @$(java-vm-cleanup)
  84 
  85 # Create headless rt.jar
  86 HL_RT_JAR=$(ABS_TEMPDIR)/rt-hl-orig.jar
  87 $(HL_RT_JAR): MakeHeadlessJarFileList $(JAR_MANIFEST_FILE)
  88         $(prep-target)
  89         $(CD) $(CLASSBINDIR) ; \
  90                 $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(JAR_MANIFEST_FILE) $@ @$(HEADLESS_RT_JAR_FILELIST) \
  91                  $(JAR_JFLAGS)
  92         @$(CD) $(CLASSBINDIR); $(java-vm-cleanup)
  93 
  94 
  95 #
  96 # Produce a reduced Headful JRE for Embedded Devices
  97 #
  98 # The deployment binaries are added during the deployment build process
  99 #
 100 
 101 # Binaries that don't get included in reduced jre image bin directory
 102 NOT_REDUCEDJRE_BIN = \
 103  java_vm \
 104  kinit \
 105  klist \
 106  ktab \
 107  orbd \
 108  policytool \
 109  rmid \
 110  rmiregistry \
 111  servertool \
 112  tnameserv \
 113  pack200 \
 114  unpack200
 115 
 116 # jars/resources/libs that don't get included in reduced jre image lib directory
 117 NOT_REDUCEDJRE_LIB = \
 118  charsets.jar \
 119  ext/dnsns.jar \
 120  ext/localedata.jar \
 121  $(LIBARCH)/client/classes.jsa \
 122  $(LIBARCH)/libjavaplugin_jni.so \
 123  $(LIBARCH)/libjavaplugin_nscp_gcc29.so \
 124  $(LIBARCH)/libjavaplugin_nscp.so \
 125  $(LIBARCH)/libjavaplugin_oji.so
 126 
 127 
 128 ifeq ($(PLATFORM), linux)
 129   STRIP_OPTS = --strip-unneeded
 130 else
 131   STRIP_OPTS = -x
 132 endif
 133 
 134 
 135 reduced-image-jre::
 136         @$(ECHO) Starting to Produce Reduced JRE
 137         @#
 138         @# First make a copy of the full JRE
 139         @#
 140         $(RM) -r $(JRE_REDUCED_IMAGE_DIR)
 141         $(MKDIR) -p $(JRE_REDUCED_IMAGE_DIR)
 142         $(CD) $(JRE_IMAGE_DIR); \
 143             $(TAR) cf - . | ($(CD) $(JRE_REDUCED_IMAGE_DIR); $(TAR) xf - ); 
 144 
 145         @# strip the main .so files
 146         $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/client/libjvm.so
 147 ifndef BUILD_CLIENT_ONLY
 148         $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/server/libjvm.so
 149 endif
 150 
 151         @#
 152         @# Remove all of the files that are not needed for the
 153         @# reduced JRE
 154         @#
 155         for l in $(NOT_REDUCEDJRE_BIN) ; do \
 156             $(RM) $(JRE_REDUCED_IMAGE_DIR)/bin/$$l ; \
 157         done
 158         for l in $(NOT_REDUCEDJRE_LIB) ; do \
 159             $(RM) $(JRE_REDUCED_IMAGE_DIR)/lib/$$l ; \
 160         done
 161 
 162         @# Remove misc. other files
 163         $(RM) -r $(JRE_REDUCED_IMAGE_DIR)/man
 164         $(RM) -f $(JRE_REDUCED_IMAGE_DIR)/CHANGES
 165 
 166         @$(ECHO) Done Creating Reduced JRE
 167 
 168 #
 169 # Produce a reduced Headless JRE
 170 #
 171 reduced-headless-image-jre:: $(RT_JAR) $(RESOURCES_JAR) $(BUILD_META_INDEX) $(HL_RT_JAR)
 172         @$(ECHO) Starting to Produce Reduced Headless JRE
 173         @#
 174         @# First make a copy of the reduced JRE we just built
 175         @#
 176         $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
 177         $(MKDIR) -p $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
 178         $(CD) $(JRE_REDUCED_IMAGE_DIR); \
 179             $(TAR) cf - . | ($(CD) $(JRE_REDUCED_HEADLESS_IMAGE_DIR); $(TAR) xf - ); 
 180 
 181         @# Replace the full rt.jar with the headless rt.jar
 182         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar
 183         $(CP) $(HL_RT_JAR) $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/rt.jar
 184 
 185         @#
 186         @# Remove all of the files that are not needed for the
 187         @# reduced Headless JRE
 188         @#
 189         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/gtkhelper
 190         $(RM)  $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libjsoundalsa.so
 191         $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/audio
 192         $(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/applet
 193         $(RM)  $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/awt_robot
 194         $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/xawt
 195         $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/$(LIBARCH)/libsplashscreen.so
 196         @# Remove oblique fonts and reduce font support to LucidaSansRegular only
 197         $(RM) -fr $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/oblique-fonts
 198         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiBold.ttf
 199         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightDemiItalic.ttf
 200         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightItalic.ttf
 201         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaBrightRegular.ttf
 202         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaSansDemiBold.ttf
 203         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterBold.ttf
 204         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/LucidaTypewriterRegular.ttf
 205 
 206 ifeq ($(PLATFORM), linux)
 207 # put out minimal fonts.dir file for the remaining font
 208         $(RM) -f $(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
 209         $(ECHO) 6>$(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-1">>$(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-2">>$(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-4">>$(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-5">>$(JRE_REDUCED_HEADLESS_IMAGE_DIR)/lib/fonts/fonts.dir
 214         $(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
 215         $(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
 216 
 217 endif # Linux
 218 
 219         @#
 220         @# all done with JRE reduced headless image
 221         @#
 222 
 223         @$(ECHO) Done Creating Reduced Headless JRE
 224 
 225 images-clobber::
 226         $(RM) -r $(JRE_REDUCED_IMAGE_DIR)
 227         $(RM) -r $(JRE_REDUCED_HEADLESS_IMAGE_DIR)
 228 
 229 .PHONY: reduced-image-jre reduced-headless-image-jre 
 230 
 231 endif # JAVASE_EMBEDDED
 232