From b317db689e5be31b51156f0396876d087f925b24 Mon Sep 17 00:00:00 2001 From: "pedemont%us.ibm.com" Date: Wed, 27 Sep 2006 15:23:31 +0000 Subject: [PATCH] Bug 328901 - Rework file organization. Add rules for JAR creation. Split MozillaInterfaces.jar. r=bsmedberg. XULRunner only. git-svn-id: svn://10.0.0.236/trunk@212712 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/config/rules.mk | 69 +++++++++++++- .../java/xpcom/interfaces/Makefile.in | 95 +++++++++++-------- mozilla/extensions/java/xpcom/src/Makefile.in | 73 ++++---------- 3 files changed, 145 insertions(+), 92 deletions(-) diff --git a/mozilla/config/rules.mk b/mozilla/config/rules.mk index 00e226c5a01..5e1d487770b 100644 --- a/mozilla/config/rules.mk +++ b/mozilla/config/rules.mk @@ -186,6 +186,10 @@ LIBRARY := $(NULL) endif endif +ifdef JAVA_LIBRARY_NAME +JAVA_LIBRARY := $(JAVA_LIBRARY_NAME).jar +endif + ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) ifndef GNU_CC @@ -244,7 +248,7 @@ HOST_PDBFILE=$(basename $(@F)).pdb endif ifndef TARGETS -TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) +TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(JAVA_LIBRARY) endif ifndef OBJS @@ -682,7 +686,7 @@ HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(HOST_LIBS)) DSO_LDOPTS_DEPS = $(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS)) ############################################## -libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(MAPS) +libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(MAPS) $(JAVA_LIBRARY) ifndef NO_DIST_INSTALL ifneq (,$(BUILD_STATIC_LIBS)$(FORCE_STATIC_LIB)) ifdef LIBRARY @@ -730,6 +734,13 @@ endif ifdef HOST_LIBRARY $(INSTALL) $(IFLAGS1) $(HOST_LIBRARY) $(DIST)/host/lib endif +ifdef JAVA_LIBRARY +ifdef IS_COMPONENT + $(INSTALL) $(IFLAGS1) $(JAVA_LIBRARY) $(FINAL_TARGET)/components +else + $(INSTALL) $(IFLAGS1) $(JAVA_LIBRARY) $(FINAL_TARGET) +endif +endif # JAVA_LIBRARY endif # !NO_DIST_INSTALL +$(LOOP_OVER_DIRS) @@ -790,6 +801,21 @@ else $(SYSINSTALL) $(IFLAGS2) $(SIMPLE_PROGRAMS) $(DESTDIR)$(mozappdir) endif endif # SIMPLE_PROGRAMS +ifdef JAVA_LIBRARY +ifdef IS_COMPONENT +ifdef MRE_DIST + $(SYSINSTALL) $(IFLAGS2) $(JAVA_LIBRARY) $(DESTDIR)$(mredir)/components +else + $(SYSINSTALL) $(IFLAGS2) $(JAVA_LIBRARY) $(DESTDIR)$(mozappdir)/components +endif +else +ifdef MRE_DIST + $(SYSINSTALL) $(IFLAGS2) $(JAVA_LIBRARY) $(DESTDIR)$(mredir) +else + $(SYSINSTALL) $(IFLAGS2) $(JAVA_LIBRARY) $(DESTDIR)$(mozappdir) +endif +endif +endif # JAVA_LIBRARY endif # NO_INSTALL checkout: @@ -1246,6 +1272,45 @@ endif %: SCCS/s.% +############################################################################### +# Java rules +############################################################################### +ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH))) +SEP := ; +else +SEP := : +endif + +EMPTY := +SPACE := $(EMPTY) $(EMPTY) + +ifdef JAVA_SOURCEPATH +SP = $(subst $(SPACE),$(SEP),$(strip $(JAVA_SOURCEPATH))) +_JAVA_SOURCEPATH = ".$(SEP)$(srcdir)$(SEP)$(SP)" +else +_JAVA_SOURCEPATH = ".$(SEP)$(srcdir)" +endif + +ifdef JAVA_CLASSPATH +CP = $(subst $(SPACE),$(SEP),$(strip $(JAVA_CLASSPATH))) +_JAVA_CLASSPATH = ".$(SEP)$(CP)" +else +_JAVA_CLASSPATH = . +endif + +_JAVA_DIR = _java +$(_JAVA_DIR):: + $(NSINSTALL) -D $@ + +$(_JAVA_DIR)/%.class: %.java Makefile Makefile.in $(_JAVA_DIR) + $(CYGWIN_WRAPPER) $(JAVAC) $(JAVAC_FLAGS) -cp $(_JAVA_CLASSPATH) \ + -sourcepath $(_JAVA_SOURCEPATH) -d $(_JAVA_DIR) $(_VPATH_SRCS) + +$(JAVA_LIBRARY): $(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)) Makefile Makefile.in + $(JAR) cf $@ -C $(_JAVA_DIR) . + +GARBAGE_DIRS += $(_JAVA_DIR) + ############################################################################### # Update Makefiles ############################################################################### diff --git a/mozilla/extensions/java/xpcom/interfaces/Makefile.in b/mozilla/extensions/java/xpcom/interfaces/Makefile.in index 3ddf3ea4b2c..a6637ab9cc5 100644 --- a/mozilla/extensions/java/xpcom/interfaces/Makefile.in +++ b/mozilla/extensions/java/xpcom/interfaces/Makefile.in @@ -13,9 +13,8 @@ # # The Original Code is Java XPCOM Bindings. # -# The Initial Developer of the Original Code is -# IBM Corporation. -# Portions created by the Initial Developer are Copyright (C) 2004 +# The Initial Developer of the Original Code is IBM Corporation. +# Portions created by the Initial Developer are Copyright (C) 2006 # IBM Corporation. All Rights Reserved. # # Contributor(s): @@ -38,47 +37,65 @@ DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ -VPATH = @srcdir@ ; @srcdir@/.. +VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -JARFILE = MozillaInterfaces.jar -JARFILE_SRC = $(patsubst %.jar,%-src.jar,$(JARFILE)) +JAVA_LIBRARY_NAME = MozillaGlue +NO_DIST_INSTALL=1 + +PACKAGE_DIR = org/mozilla/xpcom JAVA_SRCS = \ - $(srcdir)/Mozilla.java \ - $(srcdir)/GREVersionRange.java \ - $(srcdir)/IGRE.java \ - $(srcdir)/IXPCOM.java \ - $(srcdir)/../XPCOMException.java \ - $(srcdir)/IAppFileLocProvider.java \ - $(srcdir)/INIParser.java \ - $(srcdir)/VersionComparator.java \ + $(PACKAGE_DIR)/Mozilla.java \ + $(PACKAGE_DIR)/GREVersionRange.java \ + $(PACKAGE_DIR)/IGRE.java \ + $(PACKAGE_DIR)/IXPCOM.java \ + $(PACKAGE_DIR)/XPCOMException.java \ + $(PACKAGE_DIR)/IAppFileLocProvider.java \ + $(PACKAGE_DIR)/INIParser.java \ + $(PACKAGE_DIR)/VersionComparator.java \ + $(PACKAGE_DIR)/IXPCOMError.java \ $(NULL) -# install jars into SDK -SDK_LIBRARY = $(JARFILE) $(JARFILE_SRC) +IFACES_JAR = MozillaInterfaces.jar +IFACES_JAR_SRC = $(patsubst %.jar,%-src.jar,$(IFACES_JAR)) -GARBAGE += $(JARFILE) $(JARFILE_SRC) java.files +JAVA_CLASSPATH += $(IFACES_JAR) + +# install jars into SDK +SDK_LIBRARY = $(JAVA_LIBRARY_NAME).jar $(IFACES_JAR) $(IFACES_JAR_SRC) + +GARBAGE += $(IFACES_JAR) $(IFACES_JAR_SRC) IXPCOMError.java java.files GARBAGE_DIRS += org include $(topsrcdir)/config/rules.mk -# XXX Need to copy Java source files to correct directory structure, until -# bug 328901 is fixed. +# MozillaGlue.jar depends on MozillaInterfaces.jar, so make sure to generate +# the Mozilla Java interfaces first. +$(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)): $(IFACES_JAR) -JAVA_SRCS_DIR = _java/org/mozilla/xpcom -GARBAGE_DIRS += _java +## +# Generate IXPCOMError.java +## -$(JAVA_SRCS_DIR):: +$(_JAVA_DIR)/$(PACKAGE_DIR)/Mozilla.class: $(PACKAGE_DIR)/IXPCOMError.java + +$(PACKAGE_DIR):: $(NSINSTALL) -D $@ -$(JAVA_SRCS_DIR)/Mozilla.java: $(JAVA_SRCS_DIR) - @echo Copying Java source files - $(INSTALL) -m 644 $(JAVA_SRCS) $< +$(PACKAGE_DIR)/IXPCOMError.java: $(topsrcdir)/xpcom/base/nsError.h gen-nsError.pl $(PACKAGE_DIR) Makefile Makefile.in + $(PERL) $(srcdir)/gen-nsError.pl < $< > $@ -$(JAVA_SRCS_DIR)/IXPCOMError.java: $(topsrcdir)/xpcom/base/nsError.h gen-nsError.pl Makefile Makefile.in $(JAVA_SRCS_DIR) - $(PERL) $(srcdir)/../gen-nsError.pl < $< > $@ +## +# Compile generated Java interfaces +## + +IFACES_DIR = _ifaces +$(IFACES_DIR):: + $(NSINSTALL) -D $@ + +GARBAGE_DIRS += $(IFACES_DIR) # Don't include the interface nsIPref, since it depends on the obsolete # interface nsIFileSpec. @@ -89,20 +106,22 @@ endif # Using the temporary "java.files" avoids an "argument list too long" # error on Windows when using *.java -org/mozilla/xpcom/Mozilla.class: $(JAVA_SRCS_DIR)/IXPCOMError.java $(JAVA_SRCS_DIR)/Mozilla.java - @echo Compiling Java classes - find _java -name "*.java" > java.files - find $(JAVA_DIST_DIR)/default -name "*.java" $(IGNORE_IFACES) >> java.files - $(JAVAC) $(JAVAC_FLAGS) -classpath . -d . -sourcepath _java -sourcepath $(JAVA_DIST_DIR)/default @java.files +$(IFACES_DIR)/$(JAVA_IFACES_PKG_NAME)/nsISupports.class: $(IFACES_DIR) Makefile Makefile.in + @echo Compiling Java interfaces + find $(JAVA_DIST_DIR)/default -name "*.java" $(IGNORE_IFACES) > java.files + $(CYGWIN_WRAPPER) $(JAVAC) $(JAVAC_FLAGS) -classpath $(IFACES_DIR) \ + -d $(IFACES_DIR) -sourcepath $(JAVA_DIST_DIR) \ + -sourcepath $(JAVA_DIST_DIR)/default @java.files -$(JARFILE): org/mozilla/xpcom/Mozilla.class Makefile - $(JAR) cf $@ org +$(IFACES_JAR): $(IFACES_DIR)/$(JAVA_IFACES_PKG_NAME)/nsISupports.class Makefile + $(JAR) cf $@ -C $(IFACES_DIR) org -$(JARFILE_SRC): $(JARFILE) - $(JAR) cf $@ -C _java org - $(JAR) uf $@ -C $(JAVA_DIST_DIR)/default org +$(IFACES_JAR_SRC): $(IFACES_JAR) + $(JAR) cf $@ -C $(JAVA_DIST_DIR)/default org $(ZIP) -d $@ $(patsubst %, $(JAVA_IFACES_PKG_NAME)/%.java, $(IGNORE_IFACES_NAMES)) +## # Build the implementation Java classes, which depend on these interfaces -export:: $(JARFILE) $(JARFILE_SRC) +## +export:: $(IFACES_JAR) $(IFACES_JAR_SRC) $(JAVA_LIBRARY) $(MAKE) -C ../src jarfile diff --git a/mozilla/extensions/java/xpcom/src/Makefile.in b/mozilla/extensions/java/xpcom/src/Makefile.in index c2e52313666..a338d598cc7 100755 --- a/mozilla/extensions/java/xpcom/src/Makefile.in +++ b/mozilla/extensions/java/xpcom/src/Makefile.in @@ -37,7 +37,7 @@ DEPTH = ../../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ -VPATH = @srcdir@ ; @srcdir@/.. +VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk @@ -64,17 +64,6 @@ CPPSRCS = \ nsJavaXPCOMBindingUtils.cpp \ $(NULL) -JARFILE = javaxpcom.jar -JARFILE_SRC = $(patsubst %.jar,%-src.jar,$(JARFILE)) - -JAVA_SRCS = \ - $(srcdir)/../XPCOMJavaProxy.java \ - $(srcdir)/../XPCOMJavaProxyBase.java \ - $(srcdir)/GREImpl.java \ - $(srcdir)/XPCOMImpl.java \ - $(srcdir)/JavaXPCOMMethods.java \ - $(NULL) - LOCAL_INCLUDES = -I$(JAVA_INCLUDE_PATH) ifeq ($(OS_ARCH),WINNT) @@ -83,50 +72,30 @@ else LOCAL_INCLUDES += -I$(JAVA_INCLUDE_PATH)/linux endif -# necessary until we do 'cvs move' to put files in correct directories -LOCAL_INCLUDES += -I$(srcdir) +# Don't set JAVA_LIBRARY_NAME, since we don't want to build during 'libs' +# stage, but rather when explicitly called. +#JAVA_LIBRARY_NAME = javaxpcom +JARFILE = javaxpcom.jar -GARBAGE += $(JARFILE) $(JARFILE_SRC) java.files .done -GARBAGE_DIRS += _javagen org +JAVA_SRCS = \ + org/mozilla/xpcom/internal/XPCOMJavaProxy.java \ + org/mozilla/xpcom/internal/XPCOMJavaProxyBase.java \ + org/mozilla/xpcom/internal/GREImpl.java \ + org/mozilla/xpcom/internal/XPCOMImpl.java \ + org/mozilla/xpcom/internal/JavaXPCOMMethods.java \ + $(NULL) + +JAVA_CLASSPATH = \ + ../interfaces/MozillaInterfaces.jar \ + ../interfaces/MozillaGlue.jar \ + $(NULL) + +GARBAGE += $(JARFILE) include $(topsrcdir)/config/rules.mk -ifeq ($(OS_ARCH),WINNT) -RUN = -SEP = ; -else -RUN = $(DIST)/bin/run-mozilla.sh -SEP = : -endif +$(JARFILE): $(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)) Makefile Makefile.in + $(JAR) cf $@ -C $(_JAVA_DIR) . -_javagen/org/mozilla/xpcom/internal/.iface_done: $(JAVA_SRCS) - @if test ! -d _javagen/org/mozilla/xpcom/internal; then \ - touch .done; \ - $(INSTALL) -m 644 .done _javagen/org/mozilla/xpcom/internal; \ - fi - @echo Copying Java source files - @$(INSTALL) -m 644 $(JAVA_SRCS) \ - _javagen/org/mozilla/xpcom/internal - @touch $@ - -# Using the temporary "java.files" avoids an "argument list too long" -# error on Windows when using *.java -org/mozilla/xpcom/internal/.class_done: _javagen/org/mozilla/xpcom/internal/.iface_done ../interfaces/MozillaInterfaces.jar - @echo Compiling Java implementation classes - find _javagen -name "*.java" > java.files - $(JAVAC) $(JAVAC_FLAGS) \ - -classpath ".$(SEP)../interfaces/MozillaInterfaces.jar" \ - -d . -sourcepath _javagen @java.files - @touch $@ - -$(JARFILE): org/mozilla/xpcom/internal/.class_done Makefile - $(JAR) cf $@ org - -$(JARFILE_SRC): $(JARFILE) - $(JAR) cf $@ -C _javagen org - -#libs:: $(JARFILE) -# $(INSTALL) $(IFLAGS1) $^ $(DIST)/bin jarfile:: $(JARFILE) $(JARFILE_SRC) $(INSTALL) $(IFLAGS1) $^ $(DIST)/bin -