~ubuntu-branches/debian/jessie/xiphos/jessie

« back to all changes in this revision

Viewing changes to m4/gecko.m4

  • Committer: Bazaar Package Importer
  • Author(s): Dmitrijs Ledkovs
  • Date: 2010-03-22 18:15:54 UTC
  • mfrom: (4.1.4 sid)
  • Revision ID: james.westby@ubuntu.com-20100322181554-qlqchymwhcw28c0c
* New upstream release:
  + Bugfix only
  + Compatible with xulrunner 1.9.2
  + Update translations

* Revert changes introduced in 3.1.2-1ubuntu1. Thank you Chris Coulson
  for temporary fix.
* debian/xiphos.1 - spelling mistake
* waf is now default buildsystem
* help is now licensed under GPL
* Bumped standards version no changes required
* Changed email to @ubuntu.com

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright © 2000-2004 Marco Pesenti Gritti
2
 
# Copyright © 2003, 2004, 2005, 2006 Christian Persch
3
 
#
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.
8
 
#
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.
13
 
#
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
17
 
 
18
 
# GECKO_INIT(VARIABLE,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
19
 
#
20
 
# Checks for gecko, and aborts if it's not found
21
 
#
22
 
# Checks for -fshort-wchar compiler variable, and adds it to
23
 
# AM_CXXFLAGS if found
24
 
#
25
 
# Checks whether RTTI is enabled, and adds -fno-rtti to 
26
 
# AM_CXXFLAGS otherwise
27
 
#
28
 
# Checks whether the gecko build is a debug build, and adds
29
 
# debug flags to AM_CXXFLAGS if it is.
30
 
#
31
 
# Expanded variables:
32
 
# VARIABLE: Which gecko was found (e.g. "xulrunnner", "seamonkey", ...)
33
 
# VARIABLE_FLAVOUR: The flavour of the gecko that was found
34
 
# VARIABLE_HOME:
35
 
# VARIABLE_NSPR: set if nspr is provided by gecko flags
36
 
# VARIABLE_PREFIX:
37
 
# VARIABLE_INCLUDE_ROOT:
38
 
# VARIABLE_VERSION: The version of the gecko that was found
39
 
# VARIABLE_VERSION:
40
 
# VARIABLE_VERSION_INT:
41
 
 
42
 
AC_DEFUN([GECKO_INIT],
43
 
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
44
 
AC_REQUIRE([AC_PROG_AWK])dnl
45
 
 
46
 
AC_PROG_AWK
47
 
 
48
 
# ************************
49
 
# Check which gecko to use
50
 
# ************************
51
 
 
52
 
AC_MSG_CHECKING([which gecko to use])
53
 
 
54
 
AC_ARG_WITH([gecko],
55
 
        AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner|libxul-embedding|libxul@:>@],
56
 
                       [Which gecko engine to use (autodetected by default)]))
57
 
 
58
 
# Backward compat
59
 
AC_ARG_WITH([mozilla],[],[with_gecko=$withval],[])
60
 
 
61
 
gecko_cv_gecko=$with_gecko
62
 
 
63
 
# Autodetect 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
69
 
                        break;
70
 
                elif $PKG_CONFIG --exists $lizard; then
71
 
                        gecko_cv_gecko=$lizard
72
 
                        break;
73
 
                elif $PKG_CONFIG --exists $lizard-unstable; then
74
 
                        gecko_cv_gecko=$lizard
75
 
                        break;
76
 
                fi
77
 
        done
78
 
fi
79
 
 
80
 
AC_MSG_RESULT([$gecko_cv_gecko])
81
 
 
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])
87
 
else
88
 
        ifelse([$2],,[],[$2])
89
 
        gecko_cv_have_gecko=yes
90
 
fi
91
 
 
92
 
AC_MSG_CHECKING([manual gecko home set])
93
 
 
94
 
AC_ARG_WITH([gecko-home],
95
 
        AS_HELP_STRING([--with-gecko-home@<:@=[path]@:>@],
96
 
                       [Manually set MOZILLA_FIVE_HOME]))
97
 
 
98
 
gecko_cv_gecko_home=$with_gecko_home
99
 
 
100
 
AC_MSG_RESULT([$with_gecko_home])
101
 
 
102
 
# ****************
103
 
# Define variables
104
 
# ****************
105
 
 
106
 
if test "$gecko_cv_have_gecko" = "yes"; then
107
 
 
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 ;;
114
 
esac
115
 
 
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
123
 
else
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
130
 
fi
131
 
fi # if gecko_cv_have_gecko
132
 
 
133
 
if test "$gecko_cv_gecko_flavour" = "toolkit"; then
134
 
        AC_DEFINE([HAVE_MOZILLA_TOOLKIT],[1],[Define if mozilla is of the toolkit flavour])
135
 
fi
136
 
 
137
 
$1[]=$gecko_cv_gecko
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
145
 
 
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
 
# **************************************************************
152
 
 
153
 
_GECKO_EXTRA_CPPFLAGS=
154
 
_GECKO_EXTRA_CFLAGS=
155
 
_GECKO_EXTRA_CXXFLAGS=
156
 
_GECKO_EXTRA_LDFLAGS=
157
 
 
158
 
if test "$gecko_cv_have_gecko" = "yes"; then
159
 
 
160
 
AC_LANG_PUSH([C++])
161
 
 
162
 
_SAVE_CXXFLAGS=$CXXFLAGS
163
 
CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS -fshort-wchar"
164
 
 
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>
169
 
                  int main () {
170
 
                    return (sizeof(wchar_t) != 2) || (wchar_t)-1 < (wchar_t) 0 ;
171
 
                  } ]])],
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)"])])
175
 
 
176
 
CXXFLAGS="$_SAVE_CXXFLAGS"
177
 
 
178
 
AC_LANG_POP([C++])
179
 
 
180
 
if test "$gecko_cv_have_usable_wchar_option" = "yes"; then
181
 
        _GECKO_EXTRA_CXXFLAGS="-fshort-wchar"
182
 
        AM_CXXFLAGS="$AM_CXXFLAGS -fshort-wchar"
183
 
fi
184
 
 
185
 
fi # if gecko_cv_have_gecko
186
 
 
187
 
# **************
188
 
# Check for RTTI
189
 
# **************
190
 
 
191
 
if test "$gecko_cv_have_gecko" = "yes"; then
192
 
 
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])
198
 
 
199
 
if test "$enable_cpp_rtti" = "no"; then
200
 
        _GECKO_EXTRA_CXXFLAGS="-fno-rtti $_GECKO_EXTRA_CXXFLAGS"
201
 
        AM_CXXFLAGS="-fno-rtti $AM_CXXFLAGS"
202
 
fi
203
 
 
204
 
fi # if gecko_cv_have_gecko
205
 
 
206
 
# *************
207
 
# Various tests
208
 
# *************
209
 
 
210
 
if test "$gecko_cv_have_gecko" = "yes"; then
211
 
 
212
 
AC_LANG_PUSH([C++])
213
 
 
214
 
_SAVE_CPPFLAGS="$CPPFLAGS"
215
 
CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS"
216
 
 
217
 
AC_MSG_CHECKING([[whether we have a gtk 2 gecko build]])
218
 
AC_RUN_IFELSE(
219
 
        [AC_LANG_SOURCE(
220
 
                [[#include <mozilla-config.h>
221
 
                  #include <string.h>
222
 
                  #include <stdlib.h>
223
 
                  int main(void) {
224
 
                    if (strcmp (MOZ_DEFAULT_TOOLKIT, "gtk2") == 0 ||
225
 
                        strcmp (MOZ_DEFAULT_TOOLKIT, "cairo-gtk2") == 0)
226
 
                            return EXIT_SUCCESS;
227
 
                
228
 
                    return EXIT_FAILURE;
229
 
                  } ]]
230
 
        )],
231
 
        [result=yes],
232
 
        [AC_MSG_ERROR([[This program needs a gtk 2 gecko build]])],
233
 
        [result=maybe])
234
 
AC_MSG_RESULT([$result])
235
 
 
236
 
AC_MSG_CHECKING([[whether we have a gecko debug build]])
237
 
AC_COMPILE_IFELSE(
238
 
        [AC_LANG_SOURCE(
239
 
                [[#include <mozilla-config.h>
240
 
                  #if !defined(MOZ_REFLOW_PERF) || !defined(MOZ_REFLOW_PERF_DSP)
241
 
                  #error No
242
 
                  #endif]]
243
 
        )],
244
 
        [gecko_cv_have_debug=yes],
245
 
        [gecko_cv_have_debug=no])
246
 
AC_MSG_RESULT([$gecko_cv_have_debug])
247
 
 
248
 
AC_MSG_CHECKING([[whether we have a xpcom glue]])
249
 
AC_COMPILE_IFELSE(
250
 
        [AC_LANG_SOURCE(
251
 
                [[
252
 
                  #ifndef XPCOM_GLUE
253
 
                  #error "no xpcom glue found"
254
 
                  #endif]]
255
 
        )],
256
 
        [gecko_cv_have_xpcom_glue=yes],
257
 
        [gecko_cv_have_xpcom_glue=no])
258
 
AC_MSG_RESULT([$gecko_cv_have_xpcom_glue])
259
 
 
260
 
CPPFLAGS="$_SAVE_CPPFLAGS"
261
 
 
262
 
AC_LANG_POP([C++])
263
 
 
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"
267
 
 
268
 
        AC_DEFINE([HAVE_GECKO_DEBUG],[1],[Define if gecko is a debug build])
269
 
fi
270
 
 
271
 
if test "$gecko_cv_have_xpcom_glue" = "yes"; then
272
 
        AC_DEFINE([HAVE_GECKO_XPCOM_GLUE],[1],[Define if xpcom glue is used])
273
 
fi
274
 
 
275
 
fi # if gecko_cv_have_gecko
276
 
 
277
 
# ***********************
278
 
# Check for gecko version
279
 
# ***********************
280
 
 
281
 
if test "$gecko_cv_have_gecko" = "yes"; then
282
 
 
283
 
AC_LANG_PUSH([C++])
284
 
 
285
 
_SAVE_CPPFLAGS="$CPPFLAGS"
286
 
CPPFLAGS="$CPPFLAGS $_GECKO_CFLAGS"
287
 
 
288
 
AC_CACHE_CHECK([for gecko version],
289
 
        [gecko_cv_gecko_version],
290
 
        [AC_RUN_IFELSE(
291
 
                [AC_LANG_PROGRAM([[
292
 
#include <mozilla-config.h>
293
 
#include <string.h>
294
 
#include <stdlib.h>
295
 
#include <stdio.h>
296
 
#include <locale.h>
297
 
]],[[
298
 
FILE *stream;
299
 
const char *version = "";
300
 
 
301
 
if (!setlocale (LC_ALL, "C")) return 127;
302
 
 
303
 
stream = fopen ("conftest.data", "w");
304
 
if (!stream) return 126;
305
 
 
306
 
#ifdef MOZILLA_1_8_BRANCH
307
 
version = "1.8.1";
308
 
#else
309
 
if (strncmp (MOZILLA_VERSION, "1.9", strlen ("1.9")) == 0) {
310
 
        version = "1.9";
311
 
} else if (strncmp (MOZILLA_VERSION, "1.8", strlen ("1.8")) == 0) {
312
 
        version = "1.8";
313
 
} else {
314
 
        version = "1.7";
315
 
}
316
 
#endif
317
 
fprintf (stream, "%s\n", version);
318
 
if (fclose (stream) != 0) return 125;
319
 
 
320
 
return EXIT_SUCCESS;
321
 
]])],
322
 
        [gecko_cv_gecko_version="$(cat conftest.data)"],
323
 
        [AC_MSG_FAILURE([could not determine gecko version])],
324
 
        [gecko_cv_gecko_version="1.7"])
325
 
])
326
 
 
327
 
CPPFLAGS="$_SAVE_CPPFLAGS"
328
 
 
329
 
AC_LANG_POP([C++])
330
 
 
331
 
gecko_cv_gecko_version_int="$(echo "$gecko_cv_gecko_version" | $AWK -F . '{print [$]1 * 1000000 + [$]2 * 1000 + [$]3}')"
332
 
 
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!])
335
 
fi
336
 
 
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
340
 
fi
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
344
 
fi
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
348
 
fi
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
352
 
fi
353
 
 
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])
356
 
else
357
 
        gecko_cv_have_gecko_1_9_1=no
358
 
fi
359
 
 
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])
362
 
fi
363
 
 
364
 
fi # if gecko_cv_have_gecko
365
 
 
366
 
$1[]_VERSION=$gecko_cv_gecko_version
367
 
$1[]_VERSION_INT=$gecko_cv_gecko_version_int
368
 
 
369
 
# **************************************************
370
 
# Packages that we need to check for with pkg-config 
371
 
# **************************************************
372
 
 
373
 
gecko_cv_extra_libs=
374
 
gecko_cv_glue_libs=
375
 
gecko_cv_extra_pkg_dependencies=
376
 
 
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"
380
 
        else
381
 
                gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue"
382
 
        fi
383
 
else
384
 
        gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed"
385
 
fi
386
 
 
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"
390
 
 
391
 
])
392
 
 
393
 
# GECKO_DEFINES
394
 
#
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_ !
398
 
 
399
 
AC_DEFUN([GECKO_DEFINES],
400
 
[
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
404
 
fi
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"])
415
 
])
416
 
 
417
 
# ***************************************************************************
418
 
# ***************************************************************************
419
 
# ***************************************************************************
420
 
 
421
 
# _GECKO_DISPATCH(MACRO, INCLUDEDIRS, ...)
422
 
 
423
 
m4_define([_GECKO_DISPATCH],
424
 
[
425
 
 
426
 
if test "$gecko_cv_have_gecko" != "yes"; then
427
 
        AC_MSG_FAILURE([Gecko not present; can't run this test!])
428
 
fi
429
 
 
430
 
AC_LANG_PUSH([C++])
431
 
 
432
 
_SAVE_CPPFLAGS="$CPPFLAGS"
433
 
_SAVE_CXXFLAGS="$CXXFLAGS"
434
 
_SAVE_LDFLAGS="$LDFLAGS"
435
 
_SAVE_LIBS="$LIBS"
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"
440
 
else
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)"
444
 
fi
445
 
if test -n "$_GECKO_HOME"; then
446
 
        LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME"
447
 
else
448
 
        LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS"
449
 
fi
450
 
 
451
 
_GECKO_DISPATCH_INCLUDEDIRS="$2"
452
 
 
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"
457
 
 
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"
462
 
        fi
463
 
done
464
 
 
465
 
m4_indir([$1],m4_shiftn(2,$@))
466
 
 
467
 
CPPFLAGS="$_SAVE_CPPFLAGS"
468
 
CXXFLAGS="$_SAVE_CXXFLAGS"
469
 
LDFLAGS="$_SAVE_LDFLAGS"
470
 
LIBS="$_SAVE_LIBS"
471
 
 
472
 
AC_LANG_POP([C++])
473
 
 
474
 
])# _GECKO_DISPATCH
475
 
 
476
 
# ***************************************************************************
477
 
# ***************************************************************************
478
 
# ***************************************************************************
479
 
 
480
 
# GECKO_CHECK_HEADERS(INCLUDEDIRS, HEADERS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES])
481
 
 
482
 
AC_DEFUN([GECKO_CHECK_HEADERS],[_GECKO_DISPATCH([AC_CHECK_HEADERS],$@)])
483
 
 
484
 
# GECKO_COMPILE_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
485
 
 
486
 
AC_DEFUN([GECKO_COMPILE_IFELSE],[_GECKO_DISPATCH([AC_COMPILE_IFELSE],$@)])
487
 
 
488
 
# GECKO_RUN_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
489
 
 
490
 
AC_DEFUN([GECKO_RUN_IFELSE],[_GECKO_DISPATCH([AC_RUN_IFELSE],$@)])
491
 
 
492
 
# ***************************************************************************
493
 
# ***************************************************************************
494
 
# ***************************************************************************
495
 
 
496
 
# GECKO_XPCOM_PROGRAM([PROLOGUE], [BODY])
497
 
#
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:
500
 
#
501
 
# nsresult rv
502
 
# int status = 1 (EXIT_FAILURE)
503
 
#
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
506
 
# indicate failure.
507
 
#
508
 
# To jump out of the BODY and exit the test program, you can use |break|.
509
 
 
510
 
AC_DEFUN([GECKO_XPCOM_PROGRAM],
511
 
[AC_LANG_PROGRAM([[
512
 
#include <mozilla-config.h>
513
 
#include <stdlib.h>
514
 
#include <stdio.h>
515
 
 
516
 
#ifdef XPCOM_GLUE
517
 
#include <nsXPCOMGlue.h>
518
 
#else
519
 
#include <nsXPCOM.h>
520
 
#endif // XPCOM_GLUE
521
 
 
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>
527
 
#else
528
 
#include <nsString.h>
529
 
#endif
530
 
]]
531
 
[$1],
532
 
[[
533
 
 
534
 
nsresult rv;
535
 
#ifdef XPCOM_GLUE
536
 
    static const GREVersionRange greVersion = {
537
 
    "1.8", PR_TRUE,
538
 
    "1.9.*", PR_TRUE
539
 
    };
540
 
    char xpcomLocation[4096];
541
 
    rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096);
542
 
    if (NS_FAILED(rv)) {
543
 
        exit(123);
544
 
    }
545
 
 
546
 
    // Startup the XPCOM Glue that links us up with XPCOM.
547
 
    XPCOMGlueStartup(xpcomLocation);
548
 
    if (NS_FAILED(rv)) {
549
 
        exit(124);
550
 
    }
551
 
#endif // XPCOM_GLUE
552
 
 
553
 
// redirect unwanted mozilla debug output to the bit bucket
554
 
freopen ("/dev/null", "w", stdout);
555
 
 
556
 
nsCOMPtr<nsILocalFile> directory = nsnull;
557
 
#ifndef XPCOM_GLUE
558
 
rv = NS_NewNativeLocalFile (NS_LITERAL_CSTRING("$_GECKO_HOME"), PR_FALSE,
559
 
                            getter_AddRefs (directory));
560
 
if (NS_FAILED (rv) || !directory) {
561
 
        exit (126);
562
 
}
563
 
#endif
564
 
 
565
 
rv = NS_InitXPCOM2 (nsnull, directory, nsnull);
566
 
if (NS_FAILED (rv)) {
567
 
        exit (125);
568
 
}
569
 
 
570
 
int status = EXIT_FAILURE;
571
 
 
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|.
574
 
do {
575
 
]]
576
 
m4_shiftn(1,$@)
577
 
[[
578
 
} while (0);
579
 
        
580
 
NS_ShutdownXPCOM (nsnull);
581
 
exit (status);
582
 
]])
583
 
]) # GECKO_XPCOM_PROGRAM
584
 
 
585
 
# ***************************************************************************
586
 
# ***************************************************************************
587
 
# ***************************************************************************
588
 
 
589
 
# GECKO_XPCOM_PROGRAM_CHECK([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [ACTION-IF-CROSS-COMPILING])
590
 
#
591
 
# Checks whether we can build and run any XPCOM test programs at all
592
 
 
593
 
AC_DEFUN([GECKO_XPCOM_PROGRAM_CHECK],
594
 
[AC_REQUIRE([GECKO_INIT])dnl
595
 
 
596
 
AC_CACHE_CHECK([whether we can compile and run XPCOM programs],
597
 
[gecko_cv_xpcom_program_check],
598
 
[
599
 
gecko_cv_xpcom_program_check=no
600
 
 
601
 
GECKO_RUN_IFELSE([],
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])
606
 
])
607
 
 
608
 
if test "$gecko_cv_xpcom_program_check" = "yes"; then
609
 
        ifelse([$2],,[:],[$2])
610
 
else
611
 
        ifelse([$3],,[AC_MSG_FAILURE([Cannot compile and run XPCOM programs])],
612
 
        [$3])
613
 
fi
614
 
 
615
 
]) # GECKO_XPCOM_PROGRAM_CHECK
616
 
 
617
 
# ***************************************************************************
618
 
# ***************************************************************************
619
 
# ***************************************************************************
620
 
 
621
 
# GECKO_CHECK_CONTRACTID(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
622
 
#
623
 
# Checks wheter CONTRACTID is a registered contract ID
624
 
 
625
 
AC_DEFUN([GECKO_CHECK_CONTRACTID],
626
 
[AC_REQUIRE([GECKO_INIT])dnl
627
 
 
628
 
AS_VAR_PUSHDEF([gecko_cv_have_CID],[gecko_cv_have_$1])
629
 
 
630
 
AC_CACHE_CHECK([for the $1 XPCOM component],
631
 
gecko_cv_have_CID,
632
 
[
633
 
AS_VAR_SET(gecko_cv_have_CID,[no])
634
 
 
635
 
GECKO_RUN_IFELSE([],
636
 
[GECKO_XPCOM_PROGRAM([[
637
 
#include <nsIComponentRegistrar.h>
638
 
]],[[
639
 
status = 99;
640
 
nsCOMPtr<nsIComponentRegistrar> registrar;
641
 
rv = NS_GetComponentRegistrar (getter_AddRefs (registrar));
642
 
if (NS_FAILED (rv)) break;
643
 
 
644
 
status = 98;
645
 
PRBool isRegistered = PR_FALSE;
646
 
rv = registrar->IsContractIDRegistered ("$1", &isRegistered);
647
 
if (NS_FAILED (rv)) break;
648
 
 
649
 
status = isRegistered ? EXIT_SUCCESS : 97;
650
 
]])
651
 
],
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])])
655
 
 
656
 
])
657
 
 
658
 
if test AS_VAR_GET(gecko_cv_have_CID) = "yes"; then
659
 
        ifelse([$2],,[:],[$2])
660
 
else
661
 
        ifelse([$3],,[AC_MSG_ERROR([dnl
662
 
Contract ID "$1" is not registered, but $PACKAGE_NAME depends on it.])],
663
 
        [$3])
664
 
fi
665
 
 
666
 
AS_VAR_POPDEF([gecko_cv_have_CID])
667
 
 
668
 
]) # GECKO_CHECK_CONTRACTID
669
 
 
670
 
# GECKO_CHECK_CONTRACTIDS(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
671
 
#
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.
675
 
 
676
 
AC_DEFUN([GECKO_CHECK_CONTRACTIDS],
677
 
[AC_REQUIRE([GECKO_INIT])dnl
678
 
 
679
 
result=yes
680
 
as_contractid=
681
 
for as_contractid in $1
682
 
do
683
 
        GECKO_CHECK_CONTRACTID([$as_contractid],[],[result=no; break;])
684
 
done
685
 
 
686
 
if test "$result" = "yes"; then
687
 
        ifelse([$2],,[:],[$2])
688
 
else
689
 
        ifelse([$3],,[AC_MSG_ERROR([dnl
690
 
Contract ID "$as_contractid" is not registered, but $PACKAGE_NAME depends on it.])],
691
 
        [$3])
692
 
fi
693
 
 
694
 
]) # GECKO_CHECK_CONTRACTIDS
695
 
 
696
 
# ***************************************************************************
697
 
# ***************************************************************************
698
 
# ***************************************************************************
699
 
 
700
 
# GECKO_XPIDL([ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
701
 
#
702
 
# Checks for xpidl program and include directory
703
 
#
704
 
# Variables set:
705
 
# XPIDL:        the xpidl program
706
 
# XPIDL_IDLDIR: the xpidl include directory
707
 
 
708
 
AC_DEFUN([GECKO_XPIDL],
709
 
[AC_REQUIRE([GECKO_INIT])dnl
710
 
 
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"
713
 
else
714
 
        _GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
715
 
fi
716
 
 
717
 
AC_PATH_PROG([XPIDL],[xpidl],[no],[$_GECKO_LIBDIR:$PATH])
718
 
 
719
 
if test ${gecko_cv_gecko} = "libxul-embedding" -o ${gecko_cv_gecko} = "libxul"; then
720
 
XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}`"
721
 
else
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!`"
725
 
fi
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"
729
 
fi
730
 
 
731
 
if test "$XPIDL" != "no" -a -n "$XPIDL_IDLDIR" -a -f "$XPIDL_IDLDIR/nsISupports.idl"; then
732
 
        ifelse([$1],,[:],[$1])
733
 
else
734
 
        ifelse([$2],,[AC_MSG_FAILURE([XPIDL program or include directory not found])],[$2])
735
 
fi
736
 
 
737
 
])