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