From 8fa636f36bf250aa729409de2d77c562f809eebc Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Thu, 10 Nov 2005 10:45:26 +0000 Subject: Rewrite the contractid check. Now works with builds without 2005-11-09 Christian Persch * configure.ac: * m4/gecko.m4: Rewrite the contractid check. Now works with builds without --with-default-mozilla-five-home. Balance AC_LANG_POP/PUSH. --- m4/gecko.m4 | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'm4') diff --git a/m4/gecko.m4 b/m4/gecko.m4 index 71468232f..091facf10 100644 --- a/m4/gecko.m4 +++ b/m4/gecko.m4 @@ -25,6 +25,9 @@ dnl dnl Checks whether RTTI is enabled, and adds -fno-rtti to dnl CXXFLAGS and AM_CXXFLAGS otherwise dnl +dnl Checks whether the gecko build is a debug build, and adds +dnl debug flags to CXXFLAGS and AM_CXXFLAGS if it is. +dnl dnl Expanded variables: dnl VARIABLE: Which gecko was found (e.g. "xulrunnner", "seamonkey", ...) dnl VARIABLE_FLAVOUR: The flavour of the gecko that was found @@ -38,7 +41,7 @@ AC_DEFUN([GECKO_INIT], AC_MSG_CHECKING([which gecko to use]) AC_ARG_WITH([gecko], - AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|xulrunner@:>@], + AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner@:>@], [Which gecko engine to use (default: autodetect)])) dnl Backward compat @@ -108,6 +111,8 @@ AC_CACHE_CHECK([for compiler -fshort-wchar option], CXXFLAGS="$_SAVE_CXXFLAGS" +AC_LANG_POP([C++]) + if test "$_GECKO_cv_have_usable_wchar_option" = "yes"; then CXXFLAGS="$CXXFLAGS -fshort-wchar" AM_CXXFLAGS="$AM_CXXFLAGS -fshort-wchar" @@ -133,6 +138,7 @@ dnl Various tests dnl ************* AC_LANG_PUSH([C++]) + _SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT" @@ -163,6 +169,7 @@ AC_PREPROC_IFELSE( AC_MSG_RESULT([$gecko_cv_have_debug]) CPPFLAGS="$_SAVE_CPPFLAGS" + AC_LANG_POP([C++]) if test "$gecko_cv_have_debug" = "xyes"; then @@ -197,26 +204,44 @@ LDFLAGS="$LDFLAGS $($PKG_CONFIG --libs $_GECKO-xpcom) -Wl,--rpath=$_GECKO_HOME" AC_RUN_IFELSE([AC_LANG_PROGRAM([ #include +#include #include #include -#include +#include #include +#include +#include ],[ -nsCOMPtr serviceManager; -nsresult rv = NS_InitXPCOM2 (getter_AddRefs (serviceManager), nsnull, nsnull); -if (NS_FAILED (rv) || !serviceManager) { +// redirect unwanted mozilla debug output +freopen ("/dev/null", "w", stdout); +freopen ("/dev/null", "w", stderr); + +nsresult rv; +nsCOMPtr directory; +rv = NS_NewNativeLocalFile (NS_LITERAL_CSTRING("$_GECKO_HOME"), PR_FALSE, getter_AddRefs (directory)); +if (NS_FAILED (rv) || !directory) { + exit (EXIT_FAILURE); +} + +nsCOMPtr sm; +rv = NS_InitXPCOM2 (getter_AddRefs (sm), directory, nsnull); +if (NS_FAILED (rv)) { exit (EXIT_FAILURE); } -nsCOMPtr service; -rv = serviceManager->GetServiceByContractID ("$2", NS_GET_IID (nsISupports), getter_AddRefs (service)); -if (NS_FAILED (rv) || !service) { +nsCOMPtr registar (do_QueryInterface (sm, &rv)); +sm = nsnull; // release service manager +if (NS_FAILED (rv)) { NS_ShutdownXPCOM (nsnull); exit (EXIT_FAILURE); } +PRBool isRegistered = PR_FALSE; +rv = registar->IsContractIDRegistered ("$2", &isRegistered); +registar = nsnull; // release registar before shutdown + NS_ShutdownXPCOM (nsnull); -exit (EXIT_SUCCESS); +exit (isRegistered ? EXIT_SUCCESS : EXIT_FAILURE); ]) ], [gecko_cv_xpcom_contractid_[]$1[]=present], -- cgit v1.2.1