Firefox 9 DevMode Plugin

Review at http://gwt-code-reviews.appspot.com/1620803

Review by: conroy@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10837 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/plugins/xpcom/Makefile b/plugins/xpcom/Makefile
index 28f8bf4..dd4624e 100644
--- a/plugins/xpcom/Makefile
+++ b/plugins/xpcom/Makefile
@@ -77,7 +77,11 @@
 #default ALLARCHFLAGS for post-FF4
 ALLARCHCFLAGS = -arch i386 -arch x86_64 -Xarch_i386 -DFLAG32BIT=32 -Xarch_x86_64 -DFLAG32BIT=64
 
+# Python xpidl tool is the new hotness post-FF9
+XPIDL_TOOL = python
+
 ifeq ($(BROWSER),ff3)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.0
 CFLAGS += -DGECKO_VERSION=1900
@@ -87,6 +91,7 @@
 endif
 else
 ifeq ($(BROWSER),ff3+)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.0
 CFLAGS += -DGECKO_VERSION=1901
@@ -97,6 +102,7 @@
 endif
 else
 ifeq ($(BROWSER),ff35)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.1
 CFLAGS += -DGECKO_VERSION=1910
@@ -106,6 +112,7 @@
 endif
 else
 ifeq ($(BROWSER),ff36)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.2
 CFLAGS += -DGECKO_VERSION=1920
@@ -115,26 +122,36 @@
 endif
 else
 ifeq ($(BROWSER),ff40)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 2.0.0
 CFLAGS += -DGECKO_VERSION=2000
 else
 ifeq ($(BROWSER),ff50)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 5.0.0
 CFLAGS += -DGECKO_VERSION=5000
 else
 ifeq ($(BROWSER),ff60)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 6.0.0
 CFLAGS += -DGECKO_VERSION=6000
 else
 ifeq ($(BROWSER),ff70)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 7.0.0
 CFLAGS += -DGECKO_VERSION=7000
 else
 ifeq ($(BROWSER),ff80)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 8.0.0
 CFLAGS += -DGECKO_VERSION=8000
 else
-$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, f80)
+ifeq ($(BROWSER),ff90)
+GECKO_VERSION   = 9.0.0
+CFLAGS += -DGECKO_VERSION=9000
+else
+$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90)
+endif
 endif
 endif
 endif
@@ -171,7 +188,17 @@
 GECKO_SDK         = $(SDK_PATH)/gecko-$(GECKO_VERSION)
 GECKO_PLAT_INC    = $(GECKO_SDK)/$(GECKO_PLATFORM)/include
 GECKO_LIBS        = $(GECKO_SDK)/$(GECKO_PLATFORM)/lib$(GECKO_MINOR_VERSION)
+
+ifeq ($(XPIDL_TOOL),python)
+XPIDL             = $(GECKO_SDK)/bin/xpidl.py
+XPIDL_HEADER      = $(GECKO_SDK)/bin/header.py
+XPIDL_TYPELIBS    = $(GECKO_SDK)/bin/typelib.py
+else
 XPIDL             = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl
+XPIDL_HEADER      = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m header 
+XPIDL_TYPELIBS    = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m typelib
+endif
+
 XPIDL_FLAGS       = -I$(GECKO_SDK)/idl
 
 DLLFLAGS += \
@@ -225,6 +252,8 @@
 	$(MAKE) lib BROWSER=ff60 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff70 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff80 ARCH=x86_64
+	$(MAKE) lib BROWSER=ff90 ARCH=x86
+	$(MAKE) lib BROWSER=ff90 ARCH=x86_64
 
 macplatforms:
 	$(MAKE) lib BROWSER=ff3
@@ -235,6 +264,7 @@
 	$(MAKE) lib BROWSER=ff60
 	$(MAKE) lib BROWSER=ff70
 	$(MAKE) lib BROWSER=ff80
+	$(MAKE) lib BROWSER=ff90
 
 SRCS =	\
 		ExternalWrapper.cpp \
@@ -259,10 +289,10 @@
 	(cd $(EXTENSION_OUTDIR) && zip -r -D -9 $(DIR)/$(INSTALLER_XPI) * -x '*/.svn/*' -x 'META-INF/*')
 
 $(FF_TYPELIB): IOOPHM.idl
-	[ ! -x $(XPIDL) -o \( -e $(FF_TYPELIB) -a ! -w $(FF_TYPELIB) \) ] || $(XPIDL) $(XPIDL_FLAGS) -m typelib -e $@ $<
+	[ ! -x $(XPIDL) -o \( -e $(FF_TYPELIB) -a ! -w $(FF_TYPELIB) \) ] || $(XPIDL_TYPELIBS) $(XPIDL_FLAGS) -o $@ $<
 
 $(FF_HEADER): IOOPHM.idl $(OBJ_OUTDIR)
-	[ ! -x $(XPIDL) -o \( -e $(FF_HEADER) -a ! -w $(FF_HEADER) \) ] || $(XPIDL) $(XPIDL_FLAGS) -m header -e $@ $<
+	[ ! -x $(XPIDL) -o \( -e $(FF_HEADER) -a ! -w $(FF_HEADER) \) ] || $(XPIDL_HEADER) $(XPIDL_FLAGS) -o $@ $<
 
 $(FF_DLL): $(FF_OBJS) $(COMMON)
 	$(CXX) -o $@ $(FF_OBJS) $(COMMON) $(DLLFLAGS)