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