From 626f0e0845483f950814a14ced17600aa18472ac Mon Sep 17 00:00:00 2001 From: "shaver%mozilla.org" Date: Fri, 18 Feb 2005 22:17:37 +0000 Subject: [PATCH] Bug 282768: infrastructure for XPI_PKGNAME/XPI_PACKAGE-driven XPI automation. r=bsmedberg git-svn-id: svn://10.0.0.236/trunk@169437 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/config/config.mk | 11 ++++++ mozilla/config/rules.mk | 75 +++++++++++++++++++++++++--------------- 2 files changed, 58 insertions(+), 28 deletions(-) diff --git a/mozilla/config/config.mk b/mozilla/config/config.mk index 0c25e4679e5..c8eca580d52 100644 --- a/mozilla/config/config.mk +++ b/mozilla/config/config.mk @@ -61,6 +61,17 @@ endif GRE_DIST = $(DIST)/gre +# FINAL_TARGET specifies the location into which we copy end-user-shipped +# build products (typelibs, components, chrome). +# +# It will usually be the well-loved $(DIST)/bin, today, but can also be an +# XPI-contents staging directory for ambitious and right-thinking extensions. +ifdef XPI_NAME +FINAL_TARGET = $(DIST)/xpi-stage/$(XPI_NAME) +else +FINAL_TARGET = $(DIST)/bin +endif + # # The VERSION_NUMBER is suffixed onto the end of the DLLs we ship. # Since the longest of these is 5 characters without the suffix, diff --git a/mozilla/config/rules.mk b/mozilla/config/rules.mk index f762dbe0132..49d3b5c0cd7 100644 --- a/mozilla/config/rules.mk +++ b/mozilla/config/rules.mk @@ -685,7 +685,7 @@ endif endif # LIBRARY endif # BUILD_STATIC_LIBS || FORCE_STATIC_LIB ifdef MAPS - $(INSTALL) $(IFLAGS1) $(MAPS) $(DIST)/bin + $(INSTALL) $(IFLAGS1) $(MAPS) $(FINAL_TARGET) endif ifdef SHARED_LIBRARY ifdef IS_COMPONENT @@ -705,10 +705,10 @@ else $(ELF_DYNSTR_GC) $(DIST)/lib/components/$(SHARED_LIBRARY) endif ifndef _SKIP_OLD_GRE_INSTALL - $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/bin/components - $(ELF_DYNSTR_GC) $(DIST)/bin/components/$(SHARED_LIBRARY) + $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components + $(ELF_DYNSTR_GC) $(FINAL_TARGET)/components/$(SHARED_LIBRARY) ifdef BEOS_ADDON_WORKAROUND - ( cd $(DIST)/bin/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) + ( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) endif endif # ! _SKIP_OLD_GRE_INSTALL else # ! IS_COMPONENT @@ -726,9 +726,9 @@ else $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/lib endif ifndef _SKIP_OLD_GRE_INSTALL - $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/bin + $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET) ifdef BEOS_ADDON_WORKAROUND - ( cd $(DIST)/bin && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) + ( cd $(FINAL_TARGET) && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) endif endif # ! _SKIP_OLD_GRE_INSTALL endif # IS_COMPONENT @@ -740,11 +740,11 @@ ifndef DISABLE_DIST_GRE endif endif ifndef _SKIP_OLD_GRE_INSTALL - $(INSTALL) $(IFLAGS2) $(PROGRAM) $(DIST)/bin + $(INSTALL) $(IFLAGS2) $(PROGRAM) $(FINAL_TARGET) endif endif ifdef SIMPLE_PROGRAMS - $(INSTALL) $(IFLAGS2) $(SIMPLE_PROGRAMS) $(DIST)/bin + $(INSTALL) $(IFLAGS2) $(SIMPLE_PROGRAMS) $(FINAL_TARGET) endif ifdef HOST_PROGRAM $(INSTALL) $(IFLAGS2) $(HOST_PROGRAM) $(DIST)/host/bin @@ -825,8 +825,8 @@ endif # NO_INSTALL checkout: $(MAKE) -C $(topsrcdir) -f client.mk checkout -run_viewer: $(DIST)/bin/viewer - cd $(DIST)/bin; \ +run_viewer: $(FINAL_TARGET)/viewer + cd $(FINAL_TARGET); \ MOZILLA_FIVE_HOME=`pwd` \ LD_LIBRARY_PATH=".:$(LIBS_PATH):$$LD_LIBRARY_PATH" \ viewer @@ -940,7 +940,7 @@ else $(PURIFY) $(CC) -o $^.pure $(CFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) endif ifndef NO_DIST_INSTALL - $(INSTALL) $(IFLAGS2) $^.pure $(DIST)/bin + $(INSTALL) $(IFLAGS2) $^.pure $(FINAL_TARGET) endif quantify: $(PROGRAM) @@ -950,7 +950,7 @@ else $(QUANTIFY) $(CC) -o $^.quantify $(CFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) endif ifndef NO_DIST_INSTALL - $(INSTALL) $(IFLAGS2) $^.quantify $(DIST)/bin + $(INSTALL) $(IFLAGS2) $^.quantify $(FINAL_TARGET) endif # @@ -1252,6 +1252,11 @@ $(JAVA_DIST_DIR):: @if test ! -d $@; then echo Creating $@; rm -rf $@; $(NSINSTALL) -D $@; else true; fi endif +ifneq ($(XPI_NAME),) +export:: + @if test ! -d $(FINAL_TARGET); then echo Creating $(FINAL_TARGET); rm -fr $(FINAL_TARGET); $(NSINSTALL) -D $(FINAL_TARGET); else true; fi +endif + ifneq ($(EXPORTS),) ifndef NO_DIST_INSTALL export:: $(EXPORTS) $(PUBLIC) @@ -1279,11 +1284,11 @@ ifdef GRE_MODULE PREF_DIST_DIR = $(GRE_DIST) PREF_DIR = greprefs else -PREF_DIST_DIR = $(DIST)/bin +PREF_DIST_DIR = $(FINAL_TARGET) PREF_DIR = defaults/pref endif -$(DIST)/bin/$(PREF_DIR) $(GRE_DIST)/$(PREF_DIR) $(DESTDIR)$(mozappdir)/$(PREF_DIR): +$(FINAL_TARGET)/$(PREF_DIR) $(GRE_DIST)/$(PREF_DIR) $(DESTDIR)$(mozappdir)/$(PREF_DIR): @if test ! -d $@; then echo Creating $@; rm -rf $@; $(NSINSTALL) -D $@; else true; fi # on win32, pref files need CRLF line endings... see bug 206029 @@ -1300,10 +1305,10 @@ export:: $(PREF_JS_EXPORTS) $(PREF_DIST_DIR)/$(PREF_DIR) ifdef GRE_MODULE ifndef _SKIP_OLD_GRE_INSTALL -export:: $(PREF_JS_EXPORTS) $(DIST)/bin/$(PREF_DIR) +export:: $(PREF_JS_EXPORTS) $(FINAL_TARGET)/$(PREF_DIR) $(EXIT_ON_ERROR) \ for i in $(PREF_JS_EXPORTS); \ - do $(PERL) $(topsrcdir)/config/preprocessor.pl $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $$i > $(DIST)/bin/$(PREF_DIR)/`basename $$i`; \ + do $(PERL) $(topsrcdir)/config/preprocessor.pl $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $$i > $(FINAL_TARGET)/$(PREF_DIR)/`basename $$i`; \ done endif endif @@ -1319,14 +1324,14 @@ endif endif ################################################################################ -# Copy each element of AUTOCFG_JS_EXPORTS to $(DIST)/bin/defaults/autoconfig +# Copy each element of AUTOCFG_JS_EXPORTS to $(FINAL_TARGET)/defaults/autoconfig ifneq ($(AUTOCFG_JS_EXPORTS),) -$(DIST)/bin/defaults/autoconfig:: +$(FINAL_TARGET)/defaults/autoconfig:: @if test ! -d $@; then echo Creating $@; rm -rf $@; $(NSINSTALL) -D $@; else true; fi ifndef NO_DIST_INSTALL -export:: $(AUTOCFG_JS_EXPORTS) $(DIST)/bin/defaults/autoconfig +export:: $(AUTOCFG_JS_EXPORTS) $(FINAL_TARGET)/defaults/autoconfig $(INSTALL) $(IFLAGS1) $^ endif @@ -1374,7 +1379,7 @@ $(XPIDL_GEN_DIR)/%.h: %.idl $(XPIDL_COMPILE) $(XPIDL_GEN_DIR)/.done ifndef NO_GEN_XPT # generate intermediate .xpt files into $(XPIDL_GEN_DIR), then link -# into $(XPIDL_MODULE).xpt and export it to $(DIST)/bin/components. +# into $(XPIDL_MODULE).xpt and export it to $(FINAL_TARGET)/components. $(XPIDL_GEN_DIR)/%.xpt: %.idl $(XPIDL_COMPILE) $(XPIDL_GEN_DIR)/.done $(REPORT_BUILD) $(ELOG) $(XPIDL_COMPILE) -m typelib -w -I $(IDL_DIR) -I$(srcdir) -o $(XPIDL_GEN_DIR)/$* $(_VPATH_SRCS) @@ -1393,7 +1398,7 @@ ifndef DISABLE_DIST_GRE endif endif ifndef _SKIP_OLD_GRE_INSTALL - $(INSTALL) $(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(DIST)/bin/components + $(INSTALL) $(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components endif endif @@ -1533,11 +1538,11 @@ endif endif # JAVA_XPIDLSRCS ################################################################################ -# Copy each element of EXTRA_COMPONENTS to $(DIST)/bin/components +# Copy each element of EXTRA_COMPONENTS to $(FINAL_TARGET)/components ifdef EXTRA_COMPONENTS libs:: $(EXTRA_COMPONENTS) ifndef NO_DIST_INSTALL - $(INSTALL) $(IFLAGS2) $^ $(DIST)/bin/components + $(INSTALL) $(IFLAGS2) $^ $(FINAL_TARGET)/components endif install:: $(EXTRA_COMPONENTS) @@ -1551,7 +1556,7 @@ libs:: $(EXTRA_PP_COMPONENTS) ifndef NO_DIST_INSTALL $(EXIT_ON_ERROR) \ for i in $^; \ - do $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $$i > $(DIST)/bin/components/`basename $$i`; \ + do $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $$i > $(FINAL_TARGET)/components/`basename $$i`; \ done endif @@ -1621,18 +1626,18 @@ libs realchrome:: $(CHROME_DEPS) ifndef NO_DIST_INSTALL @$(EXIT_ON_ERROR) \ if test -f $(JAR_MANIFEST); then \ - if test ! -d $(DIST)/bin/chrome; then mkdir $(DIST)/bin/chrome; fi; \ + if test ! -d $(FINAL_TARGET)/chrome; then mkdir $(FINAL_TARGET)/chrome; fi; \ $(PERL) $(MOZILLA_DIR)/config/preprocessor.pl $(XULPPFLAGS) $(DEFINES) $(ACDEFINES) \ $(JAR_MANIFEST) | \ $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/make-jars.pl \ $(if $(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)),-x) \ $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(_NO_FLOCK) $(_JAR_AUTO_REG) \ - -f $(MOZ_CHROME_FILE_FORMAT) -d $(DIST)/bin/chrome \ + -f $(MOZ_CHROME_FILE_FORMAT) -d $(FINAL_TARGET)/chrome \ $(_JAR_LOCALE_SOURCE) \ -s $(srcdir) -t $(topsrcdir) -z $(ZIP) -p $(MOZILLA_DIR)/config/preprocessor.pl -- \ "$(XULPPFLAGS) $(DEFINES) $(ACDEFINES)"; \ $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/make-chromelist.pl \ - $(DIST)/bin/chrome $(JAR_MANIFEST) $(_NO_FLOCK); \ + $(FINAL_TARGET)/chrome $(JAR_MANIFEST) $(_NO_FLOCK); \ fi endif @@ -1655,9 +1660,23 @@ ifndef NO_INSTALL fi endif +ifneq ($(XPI_PKGNAME),) +INSTALL_RDF ?= $(srcdir)/install.rdf + +libs realchrome:: + @if test -f $(INSTALL_RDF); then \ + echo "Packaging $(XPI_PKGNAME).xpi..."; \ + $(INSTALL) $(IFLAGS1) $(INSTALL_RDF) $(FINAL_TARGET); \ + cd $(FINAL_TARGET); \ + $(ZIP) -qr ../$(XPI_PKGNAME).xpi *; \ + else \ + echo "$(INSTALL_RDF) not found; not packaging $(XPI_PKGNAME).xpi"; \ + fi +endif + REGCHROME = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \ $(if $(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)),-x) \ - $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(DIST)/bin/chrome/installed-chrome.txt \ + $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(FINAL_TARGET)/chrome/installed-chrome.txt \ $(_JAR_REGCHROME_DISABLE_JAR) REGCHROME_INSTALL = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \