1 #
   2 # Copyright (c) 2002, 2008, 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 BUILDDIR = ../..
  27 MODULE  = awt
  28 PACKAGE = sun.awt.X11
  29 LIBRARY = mawt
  30 LIBRARY_OUTPUT = xawt
  31 LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/xawt
  32 PRODUCT = sun
  33 
  34 include $(BUILDDIR)/common/Defs.gmk
  35 
  36 GEN_DIR=$(GENSRCDIR)/sun/awt/X11
  37 
  38 CLASSES_INIT += $(TEMPDIR)/.gen.wrappers $(TEMPDIR)/.gen_icons touch.wrappers
  39 
  40 .PHONY: generated.clean
  41 
  42 #
  43 # Files
  44 #
  45 include FILES_c_unix.gmk
  46 include FILES_export_unix.gmk
  47 AUTO_FILES_JAVA_DIRS = sun/awt/X11
  48 AUTO_JAVA_PRUNE = WrapperGenerator.java
  49 
  50 LDFLAGS += -L$(OPENWIN_LIB)
  51 
  52 # For Xrender extension.
  53 ifeq ($(PLATFORM), solaris)
  54 LDFLAGS += -L/usr/openwin/sfw/lib$(ISA_DIR) -R/usr/openwin/sfw/lib$(ISA_DIR)
  55 endif
  56 
  57 ifeq ($(PLATFORM), linux)
  58 LDFLAGS += -lpthread
  59 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
  60 endif
  61 
  62 # Since this library will be living in a subdirectory below the other libraries
  63 #   we need to add an extra runpath so that libraries in the upper directory
  64 #   are found at runtime.
  65 LD_RUNPATH_EXTRAS = ..
  66 
  67 #
  68 # Rules.
  69 #
  70 include $(BUILDDIR)/common/Mapfile-vers.gmk
  71 include $(BUILDDIR)/common/Library.gmk
  72 
  73 #
  74 # Add to the ambient vpath to pick up files in subdirectories
  75 #
  76 vpath %.c   $(SHARE_SRC)/native/sunawt/alphacomposite
  77 vpath %.c   $(PLATFORM_SRC)/native/sun/xawt
  78 vpath %.c   $(PLATFORM_SRC)/native/sun/awt
  79 vpath %.c   $(SHARE_SRC)/native/sun/awt/debug
  80 vpath %.c   $(SHARE_SRC)/native/sun/awt/image
  81 vpath %.c   $(SHARE_SRC)/native/sun/awt/image/gif
  82 vpath %.c   $(SHARE_SRC)/native/sun/awt/image/cvutils
  83 vpath %.c   $(SHARE_SRC)/native/sun/awt/shell
  84 vpath %.c   $(SHARE_SRC)/native/sun/java2d
  85 vpath %.c   $(SHARE_SRC)/native/sun/java2d/loops
  86 vpath %.c   $(SHARE_SRC)/native/sun/java2d/pipe
  87 vpath %.c   $(SHARE_SRC)/native/sun/awt/medialib
  88 vpath %.c   $(SHARE_SRC)/native/sun/awt/utility
  89 vpath %.cpp $(SHARE_SRC)/native/sun/image
  90 vpath %.c   $(SHARE_SRC)/native/sun/font
  91 vpath %.c   $(PLATFORM_SRC)/native/sun/awt/robot_child
  92 vpath %.c   $(SHARE_SRC)/native/sun/java2d/opengl
  93 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/opengl
  94 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/x11
  95 
  96 OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -lXrender -ldl \
  97                    $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
  98 
  99 ifeq  ($(PLATFORM), solaris)
 100 CPPFLAGS += -DFUNCPROTO=15
 101 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
 102 endif
 103 
 104 CPPFLAGS += -I$(CUPS_HEADERS_PATH)
 105 
 106 CPPFLAGS += -DXAWT -DXAWT_HACK \
 107         -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders \
 108         -I$(PLATFORM_SRC)/native/sun/awt \
 109         -I$(PLATFORM_SRC)/native/sun/xawt \
 110         -I$(PLATFORM_SRC)/native/sun/jdga \
 111         -I$(SHARE_SRC)/native/sun/awt/debug \
 112         -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
 113         -I$(SHARE_SRC)/native/sun/java2d \
 114         -I$(SHARE_SRC)/native/sun/java2d/loops \
 115         -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
 116         -I$(SHARE_SRC)/native/sun/awt/image \
 117         -I$(SHARE_SRC)/native/sun/font \
 118         -I$(PLATFORM_SRC)/native/sun/java2d \
 119         -I$(SHARE_SRC)/native/sun/java2d/pipe \
 120         -I$(SHARE_SRC)/native/sun/java2d/opengl \
 121         -I$(PLATFORM_SRC)/native/sun/java2d/opengl \
 122         -I$(PLATFORM_SRC)/native/sun/java2d/x11 \
 123         -I$(SHARE_SRC)/native/sun/dc/path \
 124         -I$(SHARE_SRC)/native/sun/dc/doe \
 125         -I$(SHARE_SRC)/native/sun/awt/alphacomposite \
 126         -I$(SHARE_SRC)/native/sun/awt/medialib \
 127         -I$(PLATFORM_SRC)/native/sun/awt/medialib \
 128         -I$(PLATFORM_SRC)/native/sun/font \
 129         -I$(SHARE_SRC)/native/sun/awt \
 130         -I$(PLATFORM_SRC)/native/sun/awt
 131 
 132 ifeq ($(PLATFORM), linux)
 133 # Allows for builds on Debian GNU Linux, X11 is in a different place 
 134   CPPFLAGS += -I/usr/X11R6/include/X11/extensions \
 135               -I/usr/include/X11/extensions \
 136               -I$(OPENWIN_HOME)/include 
 137 endif
 138 
 139 ifeq ($(PLATFORM), solaris)
 140   CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions
 141 endif
 142 
 143 ifeq ($(MILESTONE), internal)
 144   CPPFLAGS += -DINTERNAL_BUILD
 145 endif
 146 
 147 #
 148 # Generation of wrappers
 149 #
 150 SIZER_DIR=$(GEN_DIR)/generator
 151 SIZER = $(SIZER_DIR)/sizer
 152 SIZER_32_C = $(SIZER).32.c
 153 SIZER_64_C = $(SIZER).64.c
 154 CFLAGS_32=$(CFLAGS)
 155 CFLAGS_64=$(CFLAGS)
 156 
 157 ifeq ($(PLATFORM), solaris)
 158 
 159 isalist:=$(shell $(ISAINFO))
 160 
 161 ifneq (,$(findstring sparcv9, $(isalist)))
 162 # On sparcv9 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
 163 # On sparcv9 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
 164 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
 165 SIZERS = $(SIZER).32 $(SIZER).64
 166 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
 167 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
 168 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
 169 else
 170 ifneq (,$(findstring amd64, $(isalist)))
 171 # On amd64 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
 172 # On amd64 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
 173 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
 174 SIZERS = $(SIZER).32 $(SIZER).64
 175 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
 176 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
 177 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
 178 else # !sparcv9 : includes (32-bit) sparc, i586
 179 SIZERS = $(SIZER).32
 180 SIZERS_C = $(SIZER_32_C)
 181 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
 182 endif # amd64
 183 endif # sparcv9
 184 
 185 else # !solaris
 186 
 187 ifeq ($(ARCH_DATA_MODEL), 32)
 188 SIZERS = $(SIZER).32
 189 SIZERS_C = $(SIZER_32_C)
 190 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
 191 else # !32
 192 SIZERS = $(SIZER).64
 193 SIZERS_C = $(SIZER_64_C)
 194 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.64
 195 endif # 32
 196 
 197 endif # solaris
 198 
 199 # XXX Hack for 6185483 - use hard-coded sizes.
 200 # Add the 64-bit platforms that need to be included into 32-bit build
 201 # and have sizes.64-$(PLATFORM)-$(LIBARCH) hardcoded in the workspace
 202 ifeq ($(PLATFORM)-$(LIBARCH), solaris-i386)
 203 # If you define DOHACK=true for some combination of $(PLATFORM)-$(LIBARCH),
 204 # make sure you have sizes.64-$(PLATFORM)-$(LIBARCH) pre-generated in
 205 # $(PLATFORM_SRC)/classes/sun/awt/X11/generator/
 206 DOHACK=true
 207 endif # Hack
 208 
 209 ifeq ($(DOHACK), true)
 210 PREDEFINED_SIZES_TMPL=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-$(PLATFORM)-$(LIBARCH)
 211 PREDEFINED_SIZES=$(WRAPPER_GENERATOR_DIR)/sizes.64
 212 SIZES += $(WRAPPER_GENERATOR_DIR)/sizes.64
 213 endif
 214 
 215 ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
 216 DOCOMPARE=true
 217 endif
 218 # 64 bit sizers are generated on platform-libarch (left) for use 
 219 # on platform-libarch (right) and stored under the latter name.
 220 # Do compare manually stored and automatically generated pair(s) 
 221 # if DOCOMPARE=true, just after the generation.
 222 STORED_SIZES_TMPL_solaris_amd64=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-solaris-i386
 223 
 224 WRAPPER_GENERATOR_JAVA=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/WrapperGenerator.java
 225 WRAPPER_GENERATOR_DIR=$(GENSRCDIR)/sun/awt/X11/generator
 226 WRAPPER_GENERATOR_TEMPDIR=$(TEMPDIR)/sun/awt/X11/generator
 227 WRAPPER_GENERATOR_CLASS=$(WRAPPER_GENERATOR_TEMPDIR)/WrapperGenerator.class 
 228 XLIBTYPES=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/xlibtypes.txt
 229 
 230 $(SIZERS): $(SIZERS_C) 
 231         $(prep-target)
 232         $(CC) $(CFLAGS_$(subst .,,$(suffix $@))) $(CPPFLAGS) -o $@ $(SIZER)$(suffix $@).c
 233 
 234 $(WRAPPER_GENERATOR_CLASS): $(WRAPPER_GENERATOR_JAVA)
 235         $(prep-target)
 236         $(BOOT_JAVAC_CMD) -d $(WRAPPER_GENERATOR_TEMPDIR) $(WRAPPER_GENERATOR_JAVA)
 237 
 238 $(SIZERS_C): $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
 239         $(prep-target)
 240         $(MKDIR) -p $(WRAPPER_GENERATOR_TEMPDIR)
 241         $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
 242             $(SIZER_DIR) $(XLIBTYPES) "sizer" $(subst .,,$(suffix $(basename $@)))
 243 
 244 $(SIZES): $(SIZERS)
 245         @if [ "$(DOHACK)$@" = "true$(PREDEFINED_SIZES)" ]; then \
 246             $(ECHO) COPYING $(PREDEFINED_SIZES_TMPL) into $@; \
 247             $(CP) $(PREDEFINED_SIZES_TMPL) $@; \
 248             $(CHMOD) +w $@;\
 249         else    \
 250             $(ECHO) GENERATING $@; \
 251             $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \
 252         fi
 253         @if [ "$(DOCOMPARE)$(suffix $@)" = "true.64" ]; then \
 254             $(ECHO) COMPARING $@ and $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
 255             $(DIFF) $@ $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
 256         fi
 257 
 258 $(TEMPDIR)/.gen.wrappers: $(SIZES) $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
 259         $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
 260             $(GEN_DIR) $(XLIBTYPES) "gen" $(WRAPPER_GENERATOR_DIR)/sizes
 261 
 262 touch.wrappers: $(TEMPDIR)/.gen.wrappers
 263         $(MKDIR) -p $(TEMPDIR)
 264         $(TOUCH) $(TEMPDIR)/.gen.wrappers
 265 
 266 generated.clean:
 267         $(RM) -r $(WRAPPER_GENERATOR_TEMPDIR)
 268         $(RM) -r $(WRAPPER_GENERATOR_DIR)
 269         $(RM) -r $(GEN_DIR)/*.java
 270         $(RM) -r $(TEMPDIR)/.gen_icons
 271 
 272 ifdef OPENJDK
 273     ICONS_PATH_PREFIX=$(PLATFORM_SRC)
 274 else
 275     ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris
 276 endif
 277 
 278 ICONS = \
 279     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \
 280     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \
 281     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \
 282     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png
 283 
 284 
 285 ICONPATH=$(PLATFORM_SRC)/classes/sun/awt/X11
 286 
 287 ICONS += \
 288    $(ICONPATH)/security-icon-bw16.png \
 289    $(ICONPATH)/security-icon-interim16.png \
 290    $(ICONPATH)/security-icon-yellow16.png \
 291    $(ICONPATH)/security-icon-bw24.png \
 292    $(ICONPATH)/security-icon-interim24.png \
 293    $(ICONPATH)/security-icon-yellow24.png \
 294    $(ICONPATH)/security-icon-bw32.png \
 295    $(ICONPATH)/security-icon-interim32.png \
 296    $(ICONPATH)/security-icon-yellow32.png \
 297    $(ICONPATH)/security-icon-bw48.png \
 298    $(ICONPATH)/security-icon-interim48.png \
 299    $(ICONPATH)/security-icon-yellow48.png
 300 
 301 TEMPDIR_CLASSES = $(TEMPDIR)/classes
 302 
 303 $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
 304         @$(prep-target)
 305         $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $<
 306 
 307 $(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS)
 308         $(prep-target)
 309         for i in $(ICONS); do \
 310             filename=`basename $$i`; \
 311             name=`$(ECHO) $$filename | $(TR) '\-.' '__'`;  \
 312             classname=$(GEN_DIR)/XAWTIcon32_$$name.java; \
 313             $(RM) $$classname; \
 314             $(ECHO) "package sun.awt.X11;" >> $$classname ; \
 315             $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \
 316             $(ECHO) "public static int[] $$name = { " >> $$classname;  \
 317             $(CAT) $$i | \
 318               $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
 319                 -Djava.awt.headless=true \
 320                 sun.awt.X11.ToBin >> $$classname; \
 321             $(ECHO) "}; }" >> $$classname;  \
 322             classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \
 323             $(RM) $$classname; \
 324             $(ECHO) "package sun.awt.X11;" >> $$classname ; \
 325             $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \
 326             $(ECHO) "public static long[] $$name = { " >> $$classname;  \
 327             $(CAT) $$i | \
 328               $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
 329                 -Djava.awt.headless=true \
 330                 sun.awt.X11.ToBin >> $$classname; \
 331             $(ECHO) "}; }" >> $$classname;  \
 332         done
 333         $(TOUCH) $@
 334 
 335 clean clobber:: generated.clean
 336 
 337 .PHONY: generated.clean robot_child
 338