|
1 diff --git a/xpcom/build/Makefile.in b/xpcom/build/Makefile.in |
|
2 --- a/xpcom/build/Makefile.in |
|
3 +++ b/xpcom/build/Makefile.in |
|
4 @@ -161,17 +161,18 @@ OS_LIBS += $(LIBICONV) |
|
5 GARBAGE += $(XPCOM_GLUE_SRC_LCSRCS) $(XPCOM_GLUE_SRC_LCPPSRCS) $(XPCOM_GLUENS_SRC_LCPPSRCS) $(wildcard *.$(OBJ_SUFFIX)) |
|
6 |
|
7 include $(topsrcdir)/config/rules.mk |
|
8 |
|
9 DEFINES += \ |
|
10 -D_IMPL_NS_COM \ |
|
11 -D_IMPL_NS_STRINGAPI \ |
|
12 -DEXPORT_XPT_API \ |
|
13 - -DEXPORT_XPTC_API |
|
14 + -DEXPORT_XPTC_API \ |
|
15 + -DMOZ_WIDGET_TOOLKIT=\"$(MOZ_WIDGET_TOOLKIT)\" |
|
16 |
|
17 EXTRA_DSO_LDOPTS += $(NSPR_LIBS) |
|
18 |
|
19 ifdef GC_LEAK_DETECTOR |
|
20 DEFINES += -DGC_LEAK_DETECTOR |
|
21 endif |
|
22 |
|
23 ifdef TARGET_XPCOM_ABI |
|
24 diff --git a/xpcom/glue/Makefile.in b/xpcom/glue/Makefile.in |
|
25 --- a/xpcom/glue/Makefile.in |
|
26 +++ b/xpcom/glue/Makefile.in |
|
27 @@ -157,11 +157,13 @@ include $(topsrcdir)/config/rules.mk |
|
28 |
|
29 ifdef _MSC_VER |
|
30 # Don't include directives about which CRT to use |
|
31 OS_COMPILE_CXXFLAGS += -Zl |
|
32 OS_COMPILE_CFLAGS += -Zl |
|
33 DEFINES += -D_USE_ANSI_CPP |
|
34 endif |
|
35 |
|
36 +DEFINES += -DMOZ_WIDGET_TOOLKIT=\"$(MOZ_WIDGET_TOOLKIT)\" |
|
37 + |
|
38 ifdef TARGET_XPCOM_ABI |
|
39 DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\" |
|
40 endif |
|
41 diff --git a/xpcom/glue/nsGREGlue.cpp b/xpcom/glue/nsGREGlue.cpp |
|
42 --- a/xpcom/glue/nsGREGlue.cpp |
|
43 +++ b/xpcom/glue/nsGREGlue.cpp |
|
44 @@ -157,36 +157,46 @@ GRE_GetPathFromRegKey(HKEY aRegKey, |
|
45 |
|
46 nsresult |
|
47 GRE_GetGREPathWithProperties(const GREVersionRange *versions, |
|
48 PRUint32 versionsLength, |
|
49 const GREProperty *properties, |
|
50 PRUint32 propertiesLength, |
|
51 char *aBuffer, PRUint32 aBufLen) |
|
52 { |
|
53 + // append the widget information to be able to have multiple xulrunners |
|
54 + // based on different widget toolkits installed |
|
55 + static const GREProperty kWidgetProperty = |
|
56 + { "widget", MOZ_WIDGET_TOOLKIT }; |
|
57 + |
|
58 #ifdef TARGET_XPCOM_ABI |
|
59 - // append the ABI to the properties to match only binary |
|
60 + // append the ABI to the properties to match only binary |
|
61 // compatible GREs |
|
62 - static const GREProperty kExtraProperty = |
|
63 - { "abi", TARGET_XPCOM_ABI }; |
|
64 + static const GREProperty kAbiProperty = |
|
65 + { "abi", TARGET_XPCOM_ABI }; |
|
66 |
|
67 + GREProperty *allProperties = new GREProperty[propertiesLength + 2]; |
|
68 +#else |
|
69 GREProperty *allProperties = new GREProperty[propertiesLength + 1]; |
|
70 +#endif |
|
71 if (!allProperties) |
|
72 return NS_ERROR_OUT_OF_MEMORY; |
|
73 |
|
74 for (PRUint32 i=0; i<propertiesLength; i++) { |
|
75 allProperties[i].property = properties[i].property; |
|
76 allProperties[i].value = properties[i].value; |
|
77 } |
|
78 - allProperties[propertiesLength].property = kExtraProperty.property; |
|
79 - allProperties[propertiesLength].value = kExtraProperty.value; |
|
80 + allProperties[propertiesLength].property = kWidgetProperty.property; |
|
81 + allProperties[propertiesLength].value = kWidgetProperty.value; |
|
82 +#ifdef TARGET_XPCOM_ABI |
|
83 + allProperties[propertiesLength+1].property = kAbiProperty.property; |
|
84 + allProperties[propertiesLength+1].value = kAbiProperty.value; |
|
85 + PRUint32 allPropertiesLength = propertiesLength + 2; |
|
86 +#else |
|
87 PRUint32 allPropertiesLength = propertiesLength + 1; |
|
88 -#else |
|
89 - const GREProperty *allProperties = properties; |
|
90 - PRUint32 allPropertiesLength = propertiesLength; |
|
91 #endif |
|
92 |
|
93 // if GRE_HOME is in the environment, use that GRE |
|
94 const char* env = getenv("GRE_HOME"); |
|
95 if (env && *env) { |
|
96 char p[MAXPATHLEN]; |
|
97 snprintf(p, sizeof(p), "%s" XPCOM_FILE_PATH_SEPARATOR XPCOM_DLL, env); |
|
98 p[sizeof(p) - 1] = '\0'; |
|
99 diff --git a/xpcom/glue/standalone/Makefile.in b/xpcom/glue/standalone/Makefile.in |
|
100 --- a/xpcom/glue/standalone/Makefile.in |
|
101 +++ b/xpcom/glue/standalone/Makefile.in |
|
102 @@ -120,14 +120,15 @@ OS_COMPILE_CFLAGS += -Zl |
|
103 DEFINES += -D_USE_ANSI_CPP |
|
104 endif |
|
105 |
|
106 export:: $(XPCOM_GLUE_SRC_CSRCS) $(XPCOM_GLUE_SRC_CPPSRCS) $(topsrcdir)/xpcom/glue/nsStringAPI.cpp |
|
107 $(INSTALL) $^ . |
|
108 |
|
109 GARBAGE += nsStringAPI.cpp |
|
110 |
|
111 -DEFINES += -DXPCOM_GLUE |
|
112 +DEFINES += -DXPCOM_GLUE \ |
|
113 + -DMOZ_WIDGET_TOOLKIT=\"$(MOZ_WIDGET_TOOLKIT)\" |
|
114 |
|
115 ifdef TARGET_XPCOM_ABI |
|
116 DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\" |
|
117 endif |
|
118 |
|
119 diff --git a/xulrunner/app/Makefile.in b/xulrunner/app/Makefile.in |
|
120 --- a/xulrunner/app/Makefile.in |
|
121 +++ b/xulrunner/app/Makefile.in |
|
122 @@ -59,17 +59,18 @@ PROGRAM = xulrunner$(BIN_SUFFIX) |
|
123 else |
|
124 ifeq ($(OS_ARCH), BeOS) |
|
125 PROGRAM = xulrunner$(BIN_SUFFIX) |
|
126 else |
|
127 PROGRAM = xulrunner-bin$(BIN_SUFFIX) |
|
128 endif |
|
129 endif |
|
130 |
|
131 -DEFINES += -DXULRUNNER_PROGNAME=\"xulrunner\" |
|
132 +DEFINES += -DXULRUNNER_PROGNAME=\"xulrunner\" \ |
|
133 + -DMOZ_WIDGET_TOOLKIT=\"$(MOZ_WIDGET_TOOLKIT)\" |
|
134 |
|
135 ifdef MOZ_JAVAXPCOM |
|
136 DEFINES += -DMOZ_JAVAXPCOM |
|
137 endif |
|
138 |
|
139 ifdef TARGET_XPCOM_ABI |
|
140 DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\" |
|
141 endif |
|
142 diff --git a/xulrunner/app/nsXULRunnerApp.cpp b/xulrunner/app/nsXULRunnerApp.cpp |
|
143 --- a/xulrunner/app/nsXULRunnerApp.cpp |
|
144 +++ b/xulrunner/app/nsXULRunnerApp.cpp |
|
145 @@ -257,17 +257,18 @@ InstallXULApp(nsIFile* aXULRunnerDir, |
|
146 |
|
147 if (NS_FAILED(rv)) |
|
148 return 3; |
|
149 |
|
150 return 0; |
|
151 } |
|
152 |
|
153 static const GREProperty kGREProperties[] = { |
|
154 - { "xulrunner", "true" } |
|
155 + { "xulrunner", "true" }, |
|
156 + { "widget", MOZ_WIDGET_TOOLKIT } |
|
157 #ifdef TARGET_XPCOM_ABI |
|
158 , { "abi", TARGET_XPCOM_ABI } |
|
159 #endif |
|
160 #ifdef MOZ_JAVAXPCOM |
|
161 , { "javaxpcom", "1" } |
|
162 #endif |
|
163 }; |
|
164 |
|
165 diff --git a/xulrunner/installer/Makefile.in b/xulrunner/installer/Makefile.in |
|
166 --- a/xulrunner/installer/Makefile.in |
|
167 +++ b/xulrunner/installer/Makefile.in |
|
168 @@ -63,18 +63,18 @@ endif |
|
169 |
|
170 include $(topsrcdir)/config/rules.mk |
|
171 |
|
172 INSTALL_SDK = 1 |
|
173 |
|
174 include $(topsrcdir)/toolkit/mozapps/installer/packager.mk |
|
175 |
|
176 $(MOZILLA_VERSION).system.conf: $(topsrcdir)/config/milestone.txt Makefile |
|
177 - printf "[%s]\nGRE_PATH=%s\nxulrunner=true\nabi=%s" \ |
|
178 - $(MOZILLA_VERSION) $(installdir) $(TARGET_XPCOM_ABI)> $@ |
|
179 + printf "[%s]\nGRE_PATH=%s\nxulrunner=true\nwidget=%s\nabi=%s" \ |
|
180 + $(MOZILLA_VERSION) $(installdir) $(MOZ_WIDGET_TOOLKIT) $(TARGET_XPCOM_ABI)> $@ |
|
181 |
|
182 ifndef SKIP_GRE_REGISTRATION |
|
183 # to register xulrunner per-user, override this with $HOME/.gre.d |
|
184 regdir = /etc/gre.d |
|
185 |
|
186 install:: $(MOZILLA_VERSION).system.conf |
|
187 $(NSINSTALL) -D $(DESTDIR)$(regdir) |
|
188 $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(regdir) |