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 # Allows for builds on Debian GNU Linux, X11 is in a different place 133 CPPFLAGS += -I/usr/X11R6/include/X11/extensions \ 134 -I/usr/include/X11/extensions \ 135 -I$(OPENWIN_HOME)/include 136 endif 137 138 # We have some odd logic here because some Solaris 10 updates 139 # have a render.h file that suggests gradients are supported, but 140 # the Xrender.h doesn't have the corresponding type definitions. 141 # Earlier updates have neither. We'd like to know if there's a mismatch. 142 # Whilst in the C preprocessor we can tell if the render.h define's are set 143 # we can't tell anything about C declarations. 144 # A grep of Xrender.h is the only way to know this. If they are absent 145 # we will set a flag indicating this mismatch and the JDK source file 146 # will interpret it to resolve the problem. 147 ifeq ($(PLATFORM), solaris) 148 CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions 149 OS_VERSION := $(shell uname -r) 150 XRENDER_H := $(OPENWIN_HOME)/share/include/X11/extensions/Xrender.h 151 ifeq ($(OS_VERSION),5.10) 152 LINEARGRADIENT_CNT := $(shell $(EGREP) -c XLinearGradient $(XRENDER_H)) 153 ifeq ($(LINEARGRADIENT_CNT),0) 154 CFLAGS+= -DSOLARIS10_NO_XRENDER_STRUCTS 155 endif 156 endif 157 endif 158 159 ifeq ($(MILESTONE), internal) 160 CPPFLAGS += -DINTERNAL_BUILD 161 endif 162 163 # 164 # Generation of wrappers 165 # 166 SIZER_DIR=$(GEN_DIR)/generator 167 SIZER = $(SIZER_DIR)/sizer 168 SIZER_32_C = $(SIZER).32.c 169 SIZER_64_C = $(SIZER).64.c 170 CFLAGS_32=$(CFLAGS) 171 CFLAGS_64=$(CFLAGS) 172 173 ifeq ($(PLATFORM), solaris) 174 175 isalist:=$(shell $(ISAINFO)) 176 177 ifneq (,$(findstring sparcv9, $(isalist))) 178 # On sparcv9 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL. 179 # On sparcv9 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option. 180 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS)) 181 SIZERS = $(SIZER).32 $(SIZER).64 182 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C) 183 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64 184 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64) 185 else 186 ifneq (,$(findstring amd64, $(isalist))) 187 # On amd64 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL. 188 # On amd64 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option. 189 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS)) 190 SIZERS = $(SIZER).32 $(SIZER).64 191 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C) 192 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64 193 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64) 194 else # !sparcv9 : includes (32-bit) sparc, i586 195 SIZERS = $(SIZER).32 196 SIZERS_C = $(SIZER_32_C) 197 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 198 endif # amd64 199 endif # sparcv9 200 201 else # !solaris 202 203 ifeq ($(ARCH_DATA_MODEL), 32) 204 SIZERS = $(SIZER).32 205 SIZERS_C = $(SIZER_32_C) 206 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 207 else # !32 208 SIZERS = $(SIZER).64 209 SIZERS_C = $(SIZER_64_C) 210 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.64 211 endif # 32 212 213 endif # solaris 214 215 # XXX Hack for 6185483 - use hard-coded sizes. 216 # Add the 64-bit platforms that need to be included into 32-bit build 217 # and have sizes.64-$(PLATFORM)-$(LIBARCH) hardcoded in the workspace 218 ifeq ($(PLATFORM)-$(LIBARCH), solaris-i386) 219 # If you define DOHACK=true for some combination of $(PLATFORM)-$(LIBARCH), 220 # make sure you have sizes.64-$(PLATFORM)-$(LIBARCH) pre-generated in 221 # $(PLATFORM_SRC)/classes/sun/awt/X11/generator/ 222 DOHACK=true 223 endif # Hack 224 225 ifeq ($(DOHACK), true) 226 PREDEFINED_SIZES_TMPL=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-$(PLATFORM)-$(LIBARCH) 227 PREDEFINED_SIZES=$(WRAPPER_GENERATOR_DIR)/sizes.64 228 SIZES += $(WRAPPER_GENERATOR_DIR)/sizes.64 229 endif 230 231 ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64) 232 DOCOMPARE=true 233 endif 234 # 64 bit sizers are generated on platform-libarch (left) for use 235 # on platform-libarch (right) and stored under the latter name. 236 # Do compare manually stored and automatically generated pair(s) 237 # if DOCOMPARE=true, just after the generation. 238 STORED_SIZES_TMPL_solaris_amd64=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-solaris-i386 239 240 WRAPPER_GENERATOR_JAVA=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/WrapperGenerator.java 241 WRAPPER_GENERATOR_DIR=$(GENSRCDIR)/sun/awt/X11/generator 242 WRAPPER_GENERATOR_TEMPDIR=$(TEMPDIR)/sun/awt/X11/generator 243 WRAPPER_GENERATOR_CLASS=$(WRAPPER_GENERATOR_TEMPDIR)/WrapperGenerator.class 244 XLIBTYPES=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/xlibtypes.txt 245 246 $(SIZERS): $(SIZERS_C) 247 $(prep-target) 248 $(CC) $(CFLAGS_$(subst .,,$(suffix $@))) $(CPPFLAGS) -o $@ $(SIZER)$(suffix $@).c 249 250 $(WRAPPER_GENERATOR_CLASS): $(WRAPPER_GENERATOR_JAVA) 251 $(prep-target) 252 $(BOOT_JAVAC_CMD) -d $(WRAPPER_GENERATOR_TEMPDIR) $(WRAPPER_GENERATOR_JAVA) 253 254 $(SIZERS_C): $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES) 255 $(prep-target) 256 $(MKDIR) -p $(WRAPPER_GENERATOR_TEMPDIR) 257 $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \ 258 $(SIZER_DIR) $(XLIBTYPES) "sizer" $(subst .,,$(suffix $(basename $@))) 259 260 $(SIZES): $(SIZERS) 261 @if [ "$(DOHACK)$@" = "true$(PREDEFINED_SIZES)" ]; then \ 262 $(ECHO) COPYING $(PREDEFINED_SIZES_TMPL) into $@; \ 263 $(CP) $(PREDEFINED_SIZES_TMPL) $@; \ 264 $(CHMOD) +w $@;\ 265 else \ 266 $(ECHO) GENERATING $@; \ 267 $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \ 268 fi 269 @if [ "$(DOCOMPARE)$(suffix $@)" = "true.64" ]; then \ 270 $(ECHO) COMPARING $@ and $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \ 271 $(DIFF) $@ $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \ 272 fi 273 274 $(TEMPDIR)/.gen.wrappers: $(SIZES) $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES) 275 $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \ 276 $(GEN_DIR) $(XLIBTYPES) "gen" $(WRAPPER_GENERATOR_DIR)/sizes 277 278 touch.wrappers: $(TEMPDIR)/.gen.wrappers 279 $(MKDIR) -p $(TEMPDIR) 280 $(TOUCH) $(TEMPDIR)/.gen.wrappers 281 282 generated.clean: 283 $(RM) -r $(WRAPPER_GENERATOR_TEMPDIR) 284 $(RM) -r $(WRAPPER_GENERATOR_DIR) 285 $(RM) -r $(GEN_DIR)/*.java 286 $(RM) -r $(TEMPDIR)/.gen_icons 287 288 ifdef OPENJDK 289 ICONS_PATH_PREFIX=$(PLATFORM_SRC) 290 else 291 ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris 292 endif 293 294 ICONS = \ 295 $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \ 296 $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \ 297 $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \ 298 $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png 299 300 301 ICONPATH=$(PLATFORM_SRC)/classes/sun/awt/X11 302 303 ICONS += \ 304 $(ICONPATH)/security-icon-bw16.png \ 305 $(ICONPATH)/security-icon-interim16.png \ 306 $(ICONPATH)/security-icon-yellow16.png \ 307 $(ICONPATH)/security-icon-bw24.png \ 308 $(ICONPATH)/security-icon-interim24.png \ 309 $(ICONPATH)/security-icon-yellow24.png \ 310 $(ICONPATH)/security-icon-bw32.png \ 311 $(ICONPATH)/security-icon-interim32.png \ 312 $(ICONPATH)/security-icon-yellow32.png \ 313 $(ICONPATH)/security-icon-bw48.png \ 314 $(ICONPATH)/security-icon-interim48.png \ 315 $(ICONPATH)/security-icon-yellow48.png 316 317 TEMPDIR_CLASSES = $(TEMPDIR)/classes 318 319 $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java 320 @$(prep-target) 321 $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $< 322 323 $(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS) 324 $(prep-target) 325 for i in $(ICONS); do \ 326 filename=`basename $$i`; \ 327 name=`$(ECHO) $$filename | $(TR) '\-.' '__'`; \ 328 classname=$(GEN_DIR)/XAWTIcon32_$$name.java; \ 329 $(RM) $$classname; \ 330 $(ECHO) "package sun.awt.X11;" >> $$classname ; \ 331 $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \ 332 $(ECHO) "public static int[] $$name = { " >> $$classname; \ 333 $(CAT) $$i | \ 334 $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ 335 -Djava.awt.headless=true \ 336 sun.awt.X11.ToBin >> $$classname; \ 337 $(ECHO) "}; }" >> $$classname; \ 338 classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \ 339 $(RM) $$classname; \ 340 $(ECHO) "package sun.awt.X11;" >> $$classname ; \ 341 $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \ 342 $(ECHO) "public static long[] $$name = { " >> $$classname; \ 343 $(CAT) $$i | \ 344 $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ 345 -Djava.awt.headless=true \ 346 sun.awt.X11.ToBin >> $$classname; \ 347 $(ECHO) "}; }" >> $$classname; \ 348 done 349 $(TOUCH) $@ 350 351 clean clobber:: generated.clean 352 353 .PHONY: generated.clean robot_child 354