jdk-24/jdk/make/javax/swing/beaninfo/SwingBeans.gmk
Andrew John Hughes 2d314b47cd 6917466: Should set bootclasspath for javadoc in jdk build
Javadoc needs to reference the newly built classes so as not to hit APIs which differ between the boot JDK and the source files of the JDK being built.

Reviewed-by: ohair
2010-01-29 02:38:22 +00:00

206 lines
6.9 KiB
Plaintext

#
# Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
#
# Makefile to build the BeanInfo generation tool (ie, a doclet), and
# then the beaninfo itself. Swing versions prior to 1.2 are no longer
# built.
#
# This makefile could be a lot simpler if we made it more regular.
#
# identify this as a swingbeans product - used only to identify a
# unique name for OBJDIR
PRODUCT = swing-beans
#
# Main targets provided by this makefile.
#
swing-1.2-beans:
$(MAKE) DEBUG_FLAG=false make-swing-beans
swing-1.2-beans-debug:
$(MAKE) DEBUG_FLAG=true make-swing-beans
# get the absolute path to the jar command.
PREFIX = 1.2
JAVADOCFLAGS += $(NO_PROPRIETARY_API_WARNINGS) $(LANGUAGE_VERSION)
SWINGPKG = javax/swing
LOCAL_JAVAC_FLAGS = $(OTHER_JAVACFLAGS)
# since JAVADOC_CMD runs on ALT_BOOTDIR, the doclet and all its classes must be compiled to match
DOCLET_JAVAC_FLAGS = -source 6 -target 6
include FILES.gmk
include $(BUILDDIR)/common/Release.gmk
DOCLETSRC = $(BUILDDIR)/tools/swing-beans
DOCLETDST = $(TEMPDIR)
FILES_java = GenSwingBeanInfo.java GenDocletBeanInfo.java DocBeanInfo.java
FILES_class = $(FILES_java:%.java=$(DOCLETDST)/%.class)
FAKESRC = $(TOPDIR)/src/share/classes
BEANSRCDIR = $(TEMPDIR)/$(PREFIX)src
BEANCLASSDIR = $(TEMPDIR)/$(PREFIX)classes
FILES_beans = $(BEANS:%=$(BEANSRCDIR)/%BeanInfo.java) \
$(BEANS_TEXT:%=$(BEANSRCDIR)/text/%BeanInfo.java) \
$(BEANSRCDIR)/SwingBeanInfoBase.java \
$(BEANSRCDIR)/BeanInfoUtils.java
FILES_bclass = $(FILES_beans:$(BEANSRCDIR)/%.java=$(BEANCLASSDIR)/$(SWINGPKG)/%.class)
DOCLETFLAGS = -doclet GenDocletBeanInfo
LOCAL_CLASSPATH = "$(CLASSBINDIR)$(CLASSPATH_SEPARATOR)$(BEANCLASSDIR)$(CLASSPATH_SEPARATOR)."
#
# Main target.
#
make-swing-beans: mkdoclet mkbeaninfo mkclasses mkpackaging
#
# Make the doclet.
#
mkdoclet: $(DOCLETDST) $(FILES_class) .SwingBeanInfo
$(OBJDIR) $(BEANCLASSDIR) $(BEANSRCDIR) $(DOCLETDST)::
@$(ECHO) "Making directory..." $@
@$(MKDIR) -p $@
$(DOCLETDST)/%.class: $(DOCLETSRC)/%.java
$(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) $(DOCLET_JAVAC_FLAGS) -classpath "$(CLASSBINDIR)$(CLASSPATH_SEPARATOR)$(DOCLETSRC)" -d $(DOCLETDST) $?
@$(java-vm-cleanup)
# To run, the doclet needs SwingBeanInfoBase class. Also Notice the lie
# here, SwingBeanInfoBase.class goes elswhere.
.SwingBeanInfo: $(OBJDIR) $(BEANCLASSDIR) $(BEANSRCDIR) $(SWINGPKG)/BeanInfoUtils.class $(SWINGPKG)/SwingBeanInfoBase.class
$(SWINGPKG)/BeanInfoUtils.class: $(BEANSRCDIR)/BeanInfoUtils.java
$(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) $(DOCLET_JAVAC_FLAGS) -d $(BEANCLASSDIR) $<
@$(java-vm-cleanup)
$(SWINGPKG)/SwingBeanInfoBase.class: $(BEANSRCDIR)/SwingBeanInfoBase.java $(BEANSRCDIR)/BeanInfoUtils.java
$(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) $(DOCLET_JAVAC_FLAGS) -classpath $(BEANCLASSDIR) -d $(BEANCLASSDIR) $<
@$(java-vm-cleanup)
#
# Stage 1: Generate *BeanInfo.java files.
#
mkbeaninfo: $(BEANSRCDIR) .delete.beanlist $(FILES_beans) .javadoc.beanlist
.delete.beanlist:
@$(RM) $(TEMPDIR)/.beans.list
.javadoc.beanlist:
if [ -s $(TEMPDIR)/.beans.list ]; \
then $(JAVADOC_CMD) $(DOCLETFLAGS) -x $(DEBUG_FLAG) -d $(BEANSRCDIR) -t $(DOCLETSRC)/SwingBeanInfo.template -docletpath $(DOCLETDST) \
$(shell if [ -s $(TEMPDIR)/.beans.list ]; then $(CAT) $(TEMPDIR)/.beans.list; fi); \
fi
@$(java-vm-cleanup)
$(BEANSRCDIR)/text/%BeanInfo.java: $(FAKESRC)/$(SWINGPKG)/text/%.java
@$(ECHO) $< >> $(TEMPDIR)/.beans.list
$(BEANSRCDIR)/%BeanInfo.java: $(FAKESRC)/$(SWINGPKG)/%.java
@$(ECHO) $< >> $(TEMPDIR)/.beans.list
$(BEANSRCDIR)/SwingBeanInfoBase.java: $(DOCLETSRC)/beaninfo/SwingBeanInfoBase.java
$(CP) $< $@
$(BEANSRCDIR)/BeanInfoUtils.java: $(DOCLETSRC)/beaninfo/BeanInfoUtils.java
$(CP) $< $@
#
# Compile the generated *BeanInfo.java files.
#
mkclasses: .delete.classlist $(BEANCLASSDIR)/$(SWINGPKG)/SwingBeanInfoBase.class \
$(BEANCLASSDIR)/$(SWINGPKG)/text/JTextComponentBeanInfo.class \
.create.classlist $(FILES_bclass) .compile.classlist
$(BEANCLASSDIR)/$(SWINGPKG)/SwingBeanInfoBase.class:: \
$(BEANSRCDIR)/SwingBeanInfoBase.java
$(BEANCLASSDIR)/$(SWINGPKG)/text/JTextComponentBeanInfo.class:: \
$(BEANSRCDIR)/JTextComponentBeanInfo.java
$(FILES_bclass):: $(FILES_beans)
# all the sources are in one directory, so make sure that the list does
# not have the /text direcotry in it. Kludgy, this is...
.create.classlist:
@$(ECHO) $(subst /text/,/,$(FILES_beans)) >> $(TEMPDIR)/.classes.list
.delete.classlist:
@$(ECHO) "Deleting classes.list..."
@$(RM) $(TEMPDIR)/.classes.list
.compile.classlist:
if [ -s $(TEMPDIR)/.classes.list ] ; then \
$(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) -classpath $(LOCAL_CLASSPATH) -d $(BEANCLASSDIR) \
$(shell if [ -s $(TEMPDIR)/.classes.list ] ; then $(CAT) $(TEMPDIR)/.classes.list; fi ) ; \
fi
@$(java-vm-cleanup)
#
# Packaging
#
mkpackaging:
$(RM) -r $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
$(MKDIR) -p $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
$(CP) $(DOCLETSRC)/beaninfo/images/*.gif $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
$(BOOT_JAR_CMD) cf $(TEMPDIR)/tmp.jar \
-C $(BEANCLASSDIR) javax \
-C $(BEANCLASSDIR) sun \
$(BOOT_JAR_JFLAGS)
$(MV) $(TEMPDIR)/tmp.jar $(JDK_IMAGE_DIR)/lib/dt.jar
@$(java-vm-cleanup)
#
# Cleanliness.
#
swingbeans.clean swingbeans.clobber::
$(RM) -r 1.2src 1.2classes
$(RM) -r java javax
$(RM) *.class
$(RM) $(TEMPDIR)/.beans.list $(TEMPDIR)/.classes.list beaninfo.jar
#
# Utility.
#
#
# Debugging targets for looking at variables.
#
show-vars:
@$(ECHO) FILES_beans = $(FILES_beans)
@$(ECHO) FILES_bclass = $(FILES_bclass)
.PRECIOUS: $(FILES_beans)
.PHONY: swing-1.2-beans swing-1.2-beans-debug \
make-swing-beans mkdoclet .SwingBeanInfo mkbeaninfo .delete.beanlist \
.javadoc.beanlist mkclasses .create.classlist .delete.classlist \
.compile.classlist mkpackaging mkpackaging swingbeans.clean \
swingbeans.clobber show-vars