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