# # Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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. Oracle designates this # particular file as subject to the "Classpath" exception as provided # by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA # or visit www.oracle.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)/../make/tools/swing-beans DOCLETDST = $(TEMPDIR) FILES_java = GenSwingBeanInfo.java GenDocletBeanInfo.java DocBeanInfo.java FILES_class = $(FILES_java:%.java=$(DOCLETDST)/%.class) FAKESRC = $(JDK_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