aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--configure.ac49
-rw-r--r--m4/gecko.m436
3 files changed, 59 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index 64120c77b..aeea48a0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,18 @@
* m4/gecko.m4:
+ Added GECKO_CHECK_CONTRACTIDS. Fix variable name quoting in
+ GECKO_GECKO_CONTRACTID.
+
+ * configure.ac:
+
+ Check with GECKO_CHECK_CONTRACTIDS.
+ Remove redundant check for typeaheadfind.
+
+2006-02-23 Christian Persch <chpe@cvs.gnome.org>
+
+ * m4/gecko.m4:
+
Refactored. Added GECKO_XPCOM_PROGRAM modelled after AC_LANG_PROGRAM
but which produces a program which uses XPCOM; and made
GECKO_CHECK_CONTRACTID use this.
diff --git a/configure.ac b/configure.ac
index 7ded1d15d..99c636f50 100644
--- a/configure.ac
+++ b/configure.ac
@@ -261,24 +261,13 @@ AC_MSG_RESULT([$have_psm])
# This is only present on toolkit
-AC_MSG_CHECKING([for toolkit's nsITypeAheadFind])
+if test "$gecko_cv_gecko_flavour" = "toolkit"; then
-GECKO_COMPILE_IFELSE([fastfind],
- [AC_LANG_PROGRAM(
- [[#include <nsITypeAheadFind.h>]],
- [[nsITypeAheadFind *p;
- p->SetDocShell(nsnull);]]
- )],
- [AC_DEFINE([HAVE_TYPEAHEADFIND],[1],[Define if we have tookit's typeaheadfind]) have_typeaheadfind=yes],
- [have_typeaheadfind=no])
-
-AC_MSG_RESULT([$have_typeaheadfind])
+AC_DEFINE([HAVE_TYPEAHEADFIND],[1],[Define if we have tookit's typeaheadfind])
# Make sure we DON'T have the typeaheadfind extension
-if test "$have_typeaheadfind" = "yes"; then
-
-AC_MSG_CHECKING([whether the typeaheadfind extension was enabled])
+AC_MSG_CHECKING([whether typeaheadfind is broken])
GECKO_RUN_IFELSE([],
[GECKO_XPCOM_PROGRAM(
@@ -295,20 +284,20 @@ if (NS_FAILED (rv) || !classID) break;
nsCID badClassID = { 0x46590685, 0xbc00, 0x4aac,
{ 0xab, 0xed, 0x2c, 0x10, 0xa5, 0xb9, 0x45, 0xa4 } };
-retval = ! classID->Equals(badClassID);
+retval = ! classID->Equals (badClassID);
]]
)],
-[have_typeaheadfind_ext=no],
-[have_typeaheadfind_ext=yes],
-[have_typeaheadfind_ext=maybe])
+[have_broken_typeaheadfind=no],
+[have_broken_typeaheadfind=yes],
+[have_broken_typeaheadfind=maybe])
-AC_MSG_RESULT([$have_typeaheadfind_ext])
+AC_MSG_RESULT([$have_broken_typeaheadfind])
-if test "$have_typeaheadfind_ext" = "yes"; then
- AC_MSG_ERROR([You must not compile gecko with the "typeaheadfind" extension enabled!])
+if test "$have_broken_typeaheadfind" = "yes"; then
+ AC_MSG_ERROR([You must not compile $gecko_cv_gecko with the "typeaheadfind" extension enabled!])
fi
-fi # have_typeaheadfind = yes
+fi # gecko_cv_gecko_flavour = toolkit
# Make sure we don't accidentally build without PSM support
@@ -361,22 +350,16 @@ GECKO_CHECK_HEADERS([windowwatcher],[nsINonBlockingAlertService.h])
# Check for some contractIDs that we need but are provided by extensions
# which may or may not have been built.
+REQUIRED_CONTRACTS="@mozilla.org/permissionmanager;1 @mozilla.org/PopupWindowManager;1 @mozilla.org/cookie/permission;1"
REQUIRED_EXTENSIONS="cookie"
+
if test "$gecko_cv_gecko_version_major" = 1 -a "$gecko_cv_gecko_version_minor" -ge "8"; then
+ REQUIRED_CONTRACTS="$REQUIRED_CONTRACTS @mozilla.org/permissions/contentblocker;1"
REQUIRED_EXTENSIONS="$REQUIRED_EXTENSIONS,permissions"
fi
-GECKO_CHECK_CONTRACTID([@mozilla.org/permissionmanager;1],
- [],[AC_MSG_ERROR([Gecko needs to be compiled with at least --enable-extensions=default,$REQUIRED_EXTENSIONS])])
-GECKO_CHECK_CONTRACTID([@mozilla.org/PopupWindowManager;1],
- [],[AC_MSG_ERROR([Gecko needs to be compiled with at least --enable-extensions=default,$REQUIRED_EXTENSIONS])])
-GECKO_CHECK_CONTRACTID([@mozilla.org/cookie/permission;1],
- [],[AC_MSG_ERROR([Gecko needs to be compiled with at least --enable-extensions=default,$REQUIRED_EXTENSIONS])])
-
-if test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "8"; then
- GECKO_CHECK_CONTRACTID([@mozilla.org/permissions/contentblocker;1],
- [],[AC_MSG_ERROR([Gecko needs to be compiled with at least --enable-extensions=default,$REQUIRED_EXTENSIONS])])
-fi
+GECKO_CHECK_CONTRACTIDS([$REQUIRED_CONTRACTS],
+ [],[AC_MSG_ERROR([$gecko_cv_gecko needs to be compiled with at least --enable-extensions=default,$REQUIRED_EXTENSIONS])])
# Needed since 1.8b2
# Define this down here so it doesn't affect the API checks above
diff --git a/m4/gecko.m4 b/m4/gecko.m4
index 80125084e..cf5ef77f3 100644
--- a/m4/gecko.m4
+++ b/m4/gecko.m4
@@ -365,9 +365,9 @@ AC_DEFUN([GECKO_RUN_IFELSE],[_GECKO_DISPATCH([AC_RUN_IFELSE],$@)])
# ***************************************************************************
# ***************************************************************************
-# GECKO_PROGRAM([PROLOGUE], [BODY])
+# GECKO_XPCOMPROGRAM([PROLOGUE], [BODY])
#
-# Produce a template program which starts XPCOM up and shuts it down after
+# Produce a template C++ program which starts XPCOM up and shuts it down after
# the BODY part has run. In BODY, the the following variables are predeclared:
#
# nsresult rv
@@ -425,7 +425,7 @@ m4_shiftn(1,$@)
NS_ShutdownXPCOM (nsnull);
exit (retval ? EXIT_SUCCESS : EXIT_FAILURE);
]])
-]) # GECKO_PROGRAM
+]) # GECKO_XPCOM_PROGRAM
# ***************************************************************************
# ***************************************************************************
@@ -441,7 +441,7 @@ AC_DEFUN([GECKO_CHECK_CONTRACTID],
AS_VAR_PUSHDEF([gecko_cv_have_CID],[gecko_cv_have_$1])
AC_CACHE_CHECK([for the $1 XPCOM component],
-[gecko_cv_have_CID],
+gecko_cv_have_CID,
[
AS_VAR_SET(gecko_cv_have_CID,[no])
@@ -474,7 +474,33 @@ fi
AS_VAR_POPDEF([gecko_cv_have_CID])
-])
+]) # GECKO_CHECK_CONTRACTID
+
+# GECKO_CHECK_CONTRACTIDS(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Checks wheter CONTRACTIDs are registered contract IDs.
+# If ACTION-IF-NOT-FOUND is given, it is executed when one of the contract IDs
+# is not found and the missing contract ID is in the |as_contractid| variable.
+
+AC_DEFUN([GECKO_CHECK_CONTRACTIDS],
+[AC_REQUIRE([GECKO_INIT])dnl
+
+result=yes
+as_contractid=
+for as_contractid in $1
+do
+ GECKO_CHECK_CONTRACTID([$as_contractid],[],[result=no; break;])
+done
+
+if test "$result" = "yes"; then
+ ifelse([$2],,[:],[$2])
+else
+ ifelse([$3],,[AC_MSG_FAILURE([dnl
+Contract ID "$as_contractid" is not registered, but $PACKAGE_NAME depends on it.])],
+ [$3])
+fi
+
+]) # GECKO_CHECK_CONTRACTIDS
# ***************************************************************************
# ***************************************************************************