1
# Copyright © 2000-2004 Marco Pesenti Gritti
2
# Copyright © 2003, 2004, 2005, 2006 Christian Persch
4
# This program is free software; you can redistribute it and/or modify it
5
# under the terms of the GNU General Public License as published by the
6
# Free Software Foundation; either version 2 of the License, or (at your
7
# option) any later version.
9
# This program is distributed in the hope that it will be useful, but
10
# WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
# General Public License for more details.
14
# You should have received a copy of the GNU General Public License along
15
# with this program; if not, write to the Free Software Foundation, Inc.,
16
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
# GECKO_INIT(VARIABLE,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
20
# Checks for gecko, and aborts if it's not found
22
# Checks for -fshort-wchar compiler variable, and adds it to
23
# AM_CXXFLAGS if found
25
# Checks whether RTTI is enabled, and adds -fno-rtti to
26
# AM_CXXFLAGS otherwise
28
# Checks whether the gecko build is a debug build, and adds
29
# debug flags to AM_CXXFLAGS if it is.
32
# VARIABLE: Which gecko was found (e.g. "xulrunnner", "seamonkey", ...)
33
# VARIABLE_FLAVOUR: The flavour of the gecko that was found
35
# VARIABLE_NSPR: set if nspr is provided by gecko flags
37
# VARIABLE_INCLUDE_ROOT:
38
# VARIABLE_VERSION: The version of the gecko that was found
40
# VARIABLE_VERSION_INT:
42
AC_DEFUN([GECKO_INIT],
43
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
44
AC_REQUIRE([AC_PROG_AWK])dnl
48
# ************************
49
# Check which gecko to use
50
# ************************
52
AC_MSG_CHECKING([which gecko to use])
55
AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner|libxul-embedding|libxul@:>@],
56
[Which gecko engine to use (autodetected by default)]))
59
AC_ARG_WITH([mozilla],[],[with_gecko=$withval],[])
61
gecko_cv_gecko=$with_gecko
64
_geckos="xulrunner firefox mozilla-firefox seamonkey mozilla libxul-embedding libxul"
65
if test -z "$gecko_cv_gecko"; then
66
for lizard in $_geckos; do
67
if $PKG_CONFIG --exists $lizard-xpcom; then
68
gecko_cv_gecko=$lizard
70
elif $PKG_CONFIG --exists $lizard; then
71
gecko_cv_gecko=$lizard
73
elif $PKG_CONFIG --exists $lizard-unstable; then
74
gecko_cv_gecko=$lizard
80
AC_MSG_RESULT([$gecko_cv_gecko])
82
if test "x$gecko_cv_gecko" = "x"; then
83
ifelse([$3],,[AC_MSG_ERROR([No gecko found; you may need to adjust PKG_CONFIG_PATH or install a mozilla/firefox/xulrunner -devel package])],[$3])
84
gecko_cv_have_gecko=no
85
elif ! ( echo "$_geckos" | egrep "(^| )$gecko_cv_gecko(\$| )" > /dev/null); then
86
AC_MSG_ERROR([Unknown gecko "$gecko_cv_gecko" specified])
89
gecko_cv_have_gecko=yes
92
AC_MSG_CHECKING([manual gecko home set])
94
AC_ARG_WITH([gecko-home],
95
AS_HELP_STRING([--with-gecko-home@<:@=[path]@:>@],
96
[Manually set MOZILLA_FIVE_HOME]))
98
gecko_cv_gecko_home=$with_gecko_home
100
AC_MSG_RESULT([$with_gecko_home])
106
if test "$gecko_cv_have_gecko" = "yes"; then
108
case "$gecko_cv_gecko" in
109
mozilla) gecko_cv_gecko_flavour=mozilla ;;
110
seamonkey) gecko_cv_gecko_flavour=mozilla ;;
111
*firefox) gecko_cv_gecko_flavour=toolkit ;;
112
xulrunner) gecko_cv_gecko_flavour=toolkit ;;
113
libxul*) gecko_cv_gecko_flavour=toolkit ;;
116
if $PKG_CONFIG --exists ${gecko_cv_gecko}-xpcom; then
117
_GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}-xpcom`"
118
_GECKO_CFLAGS="-I$_GECKO_INCLUDE_ROOT"
119
_GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
120
_GECKO_HOME="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
121
_GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}-xpcom`"
122
_GECKO_NSPR=no # XXX asac: this is currently a blind guess and should be a AC test
124
_GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}`/unstable"
125
_GECKO_CFLAGS="`$PKG_CONFIG --cflags ${gecko_cv_gecko}` `$PKG_CONFIG --cflags ${gecko_cv_gecko}-unstable`"
126
_GECKO_LIBDIR="`$PKG_CONFIG --variable=sdkdir ${gecko_cv_gecko}`/bin"
127
_GECKO_HOME=$with_gecko_home
128
_GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}`"
129
_GECKO_NSPR=no # XXX asac: this is currently a blind guess and should be a AC test
131
fi # if gecko_cv_have_gecko
133
if test "$gecko_cv_gecko_flavour" = "toolkit"; then
134
AC_DEFINE([HAVE_MOZILLA_TOOLKIT],[1],[Define if mozilla is of the toolkit flavour])
138
$1[]_FLAVOUR=$gecko_cv_gecko_flavour
139
$1[]_INCLUDE_ROOT=$_GECKO_INCLUDE_ROOT
140
$1[]_CFLAGS=$_GECKO_CFLAGS
141
$1[]_LIBDIR=$_GECKO_LIBDIR
142
$1[]_HOME=$_GECKO_HOME
143
$1[]_PREFIX=$_GECKO_PREFIX
144
$1[]_NSPR=$_GECKO_NSPR
146
# **************************************************************
147
# This is really gcc-only
148
# Do this test using CXX only since some versions of gcc
149
# 2.95-2.97 have a signed wchar_t in c++ only and some versions
150
# only have short-wchar support for c++.
151
# **************************************************************
153
_GECKO_EXTRA_CPPFLAGS=
155
_GECKO_EXTRA_CXXFLAGS=
156
_GECKO_EXTRA_LDFLAGS=
158
if test "$gecko_cv_have_gecko" = "yes"; then
162
_SAVE_CXXFLAGS=$CXXFLAGS
163
CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS -fshort-wchar"
165
AC_CACHE_CHECK([for compiler -fshort-wchar option],
166
gecko_cv_have_usable_wchar_option,
167
[AC_RUN_IFELSE([AC_LANG_SOURCE(
168
[[#include <stddef.h>
170
return (sizeof(wchar_t) != 2) || (wchar_t)-1 < (wchar_t) 0 ;
172
[gecko_cv_have_usable_wchar_option="yes"],
173
[gecko_cv_have_usable_wchar_option="no"],
174
[gecko_cv_have_usable_wchar_option="maybe (cross-compiling)"])])
176
CXXFLAGS="$_SAVE_CXXFLAGS"
180
if test "$gecko_cv_have_usable_wchar_option" = "yes"; then
181
_GECKO_EXTRA_CXXFLAGS="-fshort-wchar"
182
AM_CXXFLAGS="$AM_CXXFLAGS -fshort-wchar"
185
fi # if gecko_cv_have_gecko
191
if test "$gecko_cv_have_gecko" = "yes"; then
193
AC_MSG_CHECKING([whether to enable C++ RTTI])
194
AC_ARG_ENABLE([cpp-rtti],
195
AS_HELP_STRING([--enable-cpp-rtti],[Enable C++ RTTI]),
196
[],[enable_cpp_rtti=no])
197
AC_MSG_RESULT([$enable_cpp_rtti])
199
if test "$enable_cpp_rtti" = "no"; then
200
_GECKO_EXTRA_CXXFLAGS="-fno-rtti $_GECKO_EXTRA_CXXFLAGS"
201
AM_CXXFLAGS="-fno-rtti $AM_CXXFLAGS"
204
fi # if gecko_cv_have_gecko
210
if test "$gecko_cv_have_gecko" = "yes"; then
214
_SAVE_CPPFLAGS="$CPPFLAGS"
215
CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS"
217
AC_MSG_CHECKING([[whether we have a gtk 2 gecko build]])
220
[[#include <mozilla-config.h>
224
if (strcmp (MOZ_DEFAULT_TOOLKIT, "gtk2") == 0 ||
225
strcmp (MOZ_DEFAULT_TOOLKIT, "cairo-gtk2") == 0)
232
[AC_MSG_ERROR([[This program needs a gtk 2 gecko build]])],
234
AC_MSG_RESULT([$result])
236
AC_MSG_CHECKING([[whether we have a gecko debug build]])
239
[[#include <mozilla-config.h>
240
#if !defined(MOZ_REFLOW_PERF) || !defined(MOZ_REFLOW_PERF_DSP)
244
[gecko_cv_have_debug=yes],
245
[gecko_cv_have_debug=no])
246
AC_MSG_RESULT([$gecko_cv_have_debug])
248
AC_MSG_CHECKING([[whether we have a xpcom glue]])
253
#error "no xpcom glue found"
256
[gecko_cv_have_xpcom_glue=yes],
257
[gecko_cv_have_xpcom_glue=no])
258
AC_MSG_RESULT([$gecko_cv_have_xpcom_glue])
260
CPPFLAGS="$_SAVE_CPPFLAGS"
264
if test "$gecko_cv_have_debug" = "yes"; then
265
_GECKO_EXTRA_CXXFLAGS="$_GECKO_EXTRA_CXXFLAGS -DDEBUG -D_DEBUG"
266
AM_CXXFLAGS="-DDEBUG -D_DEBUG $AM_CXXFLAGS"
268
AC_DEFINE([HAVE_GECKO_DEBUG],[1],[Define if gecko is a debug build])
271
if test "$gecko_cv_have_xpcom_glue" = "yes"; then
272
AC_DEFINE([HAVE_GECKO_XPCOM_GLUE],[1],[Define if xpcom glue is used])
275
fi # if gecko_cv_have_gecko
277
# ***********************
278
# Check for gecko version
279
# ***********************
281
if test "$gecko_cv_have_gecko" = "yes"; then
285
_SAVE_CPPFLAGS="$CPPFLAGS"
286
CPPFLAGS="$CPPFLAGS $_GECKO_CFLAGS"
288
AC_CACHE_CHECK([for gecko version],
289
[gecko_cv_gecko_version],
292
#include <mozilla-config.h>
299
const char *version = "";
301
if (!setlocale (LC_ALL, "C")) return 127;
303
stream = fopen ("conftest.data", "w");
304
if (!stream) return 126;
306
#ifdef MOZILLA_1_8_BRANCH
309
if (strncmp (MOZILLA_VERSION, "1.9", strlen ("1.9")) == 0) {
311
} else if (strncmp (MOZILLA_VERSION, "1.8", strlen ("1.8")) == 0) {
317
fprintf (stream, "%s\n", version);
318
if (fclose (stream) != 0) return 125;
322
[gecko_cv_gecko_version="$(cat conftest.data)"],
323
[AC_MSG_FAILURE([could not determine gecko version])],
324
[gecko_cv_gecko_version="1.7"])
327
CPPFLAGS="$_SAVE_CPPFLAGS"
331
gecko_cv_gecko_version_int="$(echo "$gecko_cv_gecko_version" | $AWK -F . '{print [$]1 * 1000000 + [$]2 * 1000 + [$]3}')"
333
if test "$gecko_cv_gecko_version_int" -lt "1007000" -o "$gecko_cv_gecko_version_int" -gt "1009000"; then
334
AC_MSG_ERROR([Gecko version $gecko_cv_gecko_version is not supported!])
337
if test "$gecko_cv_gecko_version_int" -ge "1007000"; then
338
AC_DEFINE([HAVE_GECKO_1_7],[1],[Define if we have gecko 1.7])
339
gecko_cv_have_gecko_1_7=yes
341
if test "$gecko_cv_gecko_version_int" -ge "1008000"; then
342
AC_DEFINE([HAVE_GECKO_1_8],[1],[Define if we have gecko 1.8])
343
gecko_cv_have_gecko_1_8=yes
345
if test "$gecko_cv_gecko_version_int" -ge "1008001"; then
346
AC_DEFINE([HAVE_GECKO_1_8_1],[1],[Define if we have gecko 1.8.1])
347
gecko_cv_have_gecko_1_8_1=yes
349
if test "$gecko_cv_gecko_version_int" -ge "1009000"; then
350
AC_DEFINE([HAVE_GECKO_1_9],[1],[Define if we have gecko 1.9])
351
gecko_cv_have_gecko_1_9=yes
354
if test "${gecko_cv_gecko}" = "libxul-embedding" -o "${gecko_cv_gecko}" = "libxul"; then
355
PKG_CHECK_EXISTS([${gecko_cv_gecko} >= 1.9.1],[gecko_cv_have_gecko_1_9_1=yes gecko_cv_gecko_version="1.9.1" gecko_cv_gecko_version_int=1009001],[gecko_cv_have_gecko_1_9_1=no])
357
gecko_cv_have_gecko_1_9_1=no
360
if test "$gecko_cv_have_gecko_1_9_1" = "yes"; then
361
AC_DEFINE([HAVE_GECKO_1_9_1],[1],[Define if we have gecko 1.9.1])
364
fi # if gecko_cv_have_gecko
366
$1[]_VERSION=$gecko_cv_gecko_version
367
$1[]_VERSION_INT=$gecko_cv_gecko_version_int
369
# **************************************************
370
# Packages that we need to check for with pkg-config
371
# **************************************************
375
gecko_cv_extra_pkg_dependencies=
377
if test "$gecko_cv_gecko_version_int" -ge "1009000"; then
378
if ! test "$gecko_cv_have_xpcom_glue" = "yes"; then
379
gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul"
381
gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue"
384
gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed"
387
$1[]_EXTRA_PKG_DEPENDENCIES="$gecko_cv_extra_pkg_dependencies"
388
$1[]_EXTRA_LIBS="$gecko_cv_extra_libs"
389
$1[]_GLUE_LIBS="$gecko_cv_glue_libs"
395
# Defines the AM_CONDITIONALS for GECKO_INIT. This is a separate call
396
# so that you may call GECKO_INIT conditionally; but note that you must
397
# call GECKO_DEFINES _unconditionally_ !
399
AC_DEFUN([GECKO_DEFINES],
401
# Ensure we have an integer variable to compare with
402
if test -z "$gecko_cv_gecko_version_int"; then
403
gecko_cv_gecko_version_int=0
405
AM_CONDITIONAL([HAVE_MOZILLA_TOOLKIT],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_flavour" = "toolkit"])
406
AM_CONDITIONAL([HAVE_GECKO_DEBUG],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_have_debug" = "yes"])
407
AM_CONDITIONAL([HAVE_GECKO_1_7],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1007000"])
408
AM_CONDITIONAL([HAVE_GECKO_1_8],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1008000"])
409
AM_CONDITIONAL([HAVE_GECKO_1_8_1],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1008001"])
410
AM_CONDITIONAL([HAVE_GECKO_1_9],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1009000"])
411
AM_CONDITIONAL([HAVE_GECKO_1_9_1],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_have_gecko_1_9_1" = "yes"])
412
AM_CONDITIONAL([HAVE_GECKO_HOME],[test "x$_GECKO_HOME" != "x"])
413
AM_CONDITIONAL([HAVE_GECKO_DEBUG],[test "$gecko_cv_have_debug" = "yes"])
414
AM_CONDITIONAL([HAVE_GECKO_XPCOM_GLUE],[test "$gecko_cv_have_xpcom_glue" = "yes"])
417
# ***************************************************************************
418
# ***************************************************************************
419
# ***************************************************************************
421
# _GECKO_DISPATCH(MACRO, INCLUDEDIRS, ...)
423
m4_define([_GECKO_DISPATCH],
426
if test "$gecko_cv_have_gecko" != "yes"; then
427
AC_MSG_FAILURE([Gecko not present; can't run this test!])
432
_SAVE_CPPFLAGS="$CPPFLAGS"
433
_SAVE_CXXFLAGS="$CXXFLAGS"
434
_SAVE_LDFLAGS="$LDFLAGS"
436
if test "${gecko_cv_gecko}" = "libxul-embedding" -o "${gecko_cv_gecko}" = "libxul"; then
437
CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-unstable)"
438
CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-unstable)"
439
LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}) -ldl"
441
CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-xpcom)"
442
CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xpcom)"
443
LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom)"
445
if test -n "$_GECKO_HOME"; then
446
LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME"
448
LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS"
451
_GECKO_DISPATCH_INCLUDEDIRS="$2"
453
# Sigh Gentoo has a rubbish header layout
454
# http://bugs.gentoo.org/show_bug.cgi?id=100804
455
# Mind you, it's useful to be able to test against uninstalled mozilla builds...
456
_GECKO_DISPATCH_INCLUDEDIRS="$_GECKO_DISPATCH_INCLUDEDIRS dom necko pref"
458
# Now add them to CPPFLAGS - asac: well ... not anymore since 1.9 -> test whether they exist before adding.
459
for i in $_GECKO_DISPATCH_INCLUDEDIRS; do
460
if test -d "$_GECKO_INCLUDE_ROOT/$i"; then
461
CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT/$i"
465
m4_indir([$1],m4_shiftn(2,$@))
467
CPPFLAGS="$_SAVE_CPPFLAGS"
468
CXXFLAGS="$_SAVE_CXXFLAGS"
469
LDFLAGS="$_SAVE_LDFLAGS"
476
# ***************************************************************************
477
# ***************************************************************************
478
# ***************************************************************************
480
# GECKO_CHECK_HEADERS(INCLUDEDIRS, HEADERS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES])
482
AC_DEFUN([GECKO_CHECK_HEADERS],[_GECKO_DISPATCH([AC_CHECK_HEADERS],$@)])
484
# GECKO_COMPILE_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
486
AC_DEFUN([GECKO_COMPILE_IFELSE],[_GECKO_DISPATCH([AC_COMPILE_IFELSE],$@)])
488
# GECKO_RUN_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
490
AC_DEFUN([GECKO_RUN_IFELSE],[_GECKO_DISPATCH([AC_RUN_IFELSE],$@)])
492
# ***************************************************************************
493
# ***************************************************************************
494
# ***************************************************************************
496
# GECKO_XPCOM_PROGRAM([PROLOGUE], [BODY])
498
# Produce a template C++ program which starts XPCOM up and shuts it down after
499
# the BODY part has run. In BODY, the the following variables are predeclared:
502
# int status = 1 (EXIT_FAILURE)
504
# The program's exit status will be |status|; set it to 0 (or EXIT_SUCCESS)
505
# to indicate success and to a value between 1 (EXIT_FAILURE) and 120 to
508
# To jump out of the BODY and exit the test program, you can use |break|.
510
AC_DEFUN([GECKO_XPCOM_PROGRAM],
512
#include <mozilla-config.h>
517
#include <nsXPCOMGlue.h>
522
#include <nsCOMPtr.h>
523
#include <nsILocalFile.h>
524
#include <nsIServiceManager.h>
525
#if defined(HAVE_GECKO_1_8) || defined(HAVE_GECKO_1_9)
526
#include <nsStringAPI.h>
528
#include <nsString.h>
536
static const GREVersionRange greVersion = {
540
char xpcomLocation[4096];
541
rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096);
546
// Startup the XPCOM Glue that links us up with XPCOM.
547
XPCOMGlueStartup(xpcomLocation);
553
// redirect unwanted mozilla debug output to the bit bucket
554
freopen ("/dev/null", "w", stdout);
556
nsCOMPtr<nsILocalFile> directory = nsnull;
558
rv = NS_NewNativeLocalFile (NS_LITERAL_CSTRING("$_GECKO_HOME"), PR_FALSE,
559
getter_AddRefs (directory));
560
if (NS_FAILED (rv) || !directory) {
565
rv = NS_InitXPCOM2 (nsnull, directory, nsnull);
566
if (NS_FAILED (rv)) {
570
int status = EXIT_FAILURE;
572
// now put in the BODY, scoped with do...while(0) to ensure we don't hold a
573
// COMptr after XPCOM shutdown and so we can jump out with a simple |break|.
580
NS_ShutdownXPCOM (nsnull);
583
]) # GECKO_XPCOM_PROGRAM
585
# ***************************************************************************
586
# ***************************************************************************
587
# ***************************************************************************
589
# GECKO_XPCOM_PROGRAM_CHECK([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [ACTION-IF-CROSS-COMPILING])
591
# Checks whether we can build and run any XPCOM test programs at all
593
AC_DEFUN([GECKO_XPCOM_PROGRAM_CHECK],
594
[AC_REQUIRE([GECKO_INIT])dnl
596
AC_CACHE_CHECK([whether we can compile and run XPCOM programs],
597
[gecko_cv_xpcom_program_check],
599
gecko_cv_xpcom_program_check=no
602
[GECKO_XPCOM_PROGRAM([],[[status = EXIT_SUCCESS;]])],
603
[gecko_cv_xpcom_program_check=yes],
604
[gecko_cv_xpcom_program_check=no],
605
[gecko_cv_xpcom_program_check=maybe])
608
if test "$gecko_cv_xpcom_program_check" = "yes"; then
609
ifelse([$2],,[:],[$2])
611
ifelse([$3],,[AC_MSG_FAILURE([Cannot compile and run XPCOM programs])],
615
]) # GECKO_XPCOM_PROGRAM_CHECK
617
# ***************************************************************************
618
# ***************************************************************************
619
# ***************************************************************************
621
# GECKO_CHECK_CONTRACTID(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
623
# Checks wheter CONTRACTID is a registered contract ID
625
AC_DEFUN([GECKO_CHECK_CONTRACTID],
626
[AC_REQUIRE([GECKO_INIT])dnl
628
AS_VAR_PUSHDEF([gecko_cv_have_CID],[gecko_cv_have_$1])
630
AC_CACHE_CHECK([for the $1 XPCOM component],
633
AS_VAR_SET(gecko_cv_have_CID,[no])
636
[GECKO_XPCOM_PROGRAM([[
637
#include <nsIComponentRegistrar.h>
640
nsCOMPtr<nsIComponentRegistrar> registrar;
641
rv = NS_GetComponentRegistrar (getter_AddRefs (registrar));
642
if (NS_FAILED (rv)) break;
645
PRBool isRegistered = PR_FALSE;
646
rv = registrar->IsContractIDRegistered ("$1", &isRegistered);
647
if (NS_FAILED (rv)) break;
649
status = isRegistered ? EXIT_SUCCESS : 97;
652
[AS_VAR_SET(gecko_cv_have_CID,[yes])],
653
[AS_VAR_SET(gecko_cv_have_CID,[no])],
654
[AS_VAR_SET(gecko_cv_have_CID,[maybe])])
658
if test AS_VAR_GET(gecko_cv_have_CID) = "yes"; then
659
ifelse([$2],,[:],[$2])
661
ifelse([$3],,[AC_MSG_ERROR([dnl
662
Contract ID "$1" is not registered, but $PACKAGE_NAME depends on it.])],
666
AS_VAR_POPDEF([gecko_cv_have_CID])
668
]) # GECKO_CHECK_CONTRACTID
670
# GECKO_CHECK_CONTRACTIDS(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
672
# Checks wheter CONTRACTIDs are registered contract IDs.
673
# If ACTION-IF-NOT-FOUND is given, it is executed when one of the contract IDs
674
# is not found and the missing contract ID is in the |as_contractid| variable.
676
AC_DEFUN([GECKO_CHECK_CONTRACTIDS],
677
[AC_REQUIRE([GECKO_INIT])dnl
681
for as_contractid in $1
683
GECKO_CHECK_CONTRACTID([$as_contractid],[],[result=no; break;])
686
if test "$result" = "yes"; then
687
ifelse([$2],,[:],[$2])
689
ifelse([$3],,[AC_MSG_ERROR([dnl
690
Contract ID "$as_contractid" is not registered, but $PACKAGE_NAME depends on it.])],
694
]) # GECKO_CHECK_CONTRACTIDS
696
# ***************************************************************************
697
# ***************************************************************************
698
# ***************************************************************************
700
# GECKO_XPIDL([ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
702
# Checks for xpidl program and include directory
705
# XPIDL: the xpidl program
706
# XPIDL_IDLDIR: the xpidl include directory
708
AC_DEFUN([GECKO_XPIDL],
709
[AC_REQUIRE([GECKO_INIT])dnl
711
if test ${gecko_cv_gecko} = "libxul-embedding" -o ${gecko_cv_gecko} = "libxul"; then
712
_GECKO_LIBDIR="`$PKG_CONFIG pkg-config --variable=sdkdir ${gecko_cv_gecko}`/bin"
714
_GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
717
AC_PATH_PROG([XPIDL],[xpidl],[no],[$_GECKO_LIBDIR:$PATH])
719
if test ${gecko_cv_gecko} = "libxul-embedding" -o ${gecko_cv_gecko} = "libxul"; then
720
XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}`"
722
XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}-xpcom`"
723
if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then
724
XPIDL_IDLDIR="`echo $_GECKO_LIBDIR | sed -e s!lib!share/idl!`"
726
# Some distributions (Gentoo) have it in unusual places
727
if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then
728
XPIDL_IDLDIR="$_GECKO_INCLUDE_ROOT/idl"
731
if test "$XPIDL" != "no" -a -n "$XPIDL_IDLDIR" -a -f "$XPIDL_IDLDIR/nsISupports.idl"; then
732
ifelse([$1],,[:],[$1])
734
ifelse([$2],,[AC_MSG_FAILURE([XPIDL program or include directory not found])],[$2])