Source code

Revision control

Other Tools

1
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2
dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
3
dnl This Source Code Form is subject to the terms of the Mozilla Public
4
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
5
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7
dnl Process this file with autoconf to produce a configure script.
8
dnl ========================================================
9
AC_PREREQ(2.13)
10
AC_INIT(config/config.mk)
11
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
12
AC_CANONICAL_SYSTEM
13
14
dnl ========================================================
15
dnl =
16
dnl = Don't change the following lines. Doing so breaks:
17
dnl =
18
dnl = CFLAGS="-foo" ./configure
19
dnl =
20
dnl ========================================================
21
CFLAGS="${CFLAGS=}"
22
CPPFLAGS="${CPPFLAGS=}"
23
CXXFLAGS="${CXXFLAGS=}"
24
LDFLAGS="${LDFLAGS=}"
25
HOST_CFLAGS="${HOST_CFLAGS=}"
26
HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
27
HOST_LDFLAGS="${HOST_LDFLAGS=}"
28
29
dnl ========================================================
30
dnl = Preserve certain environment flags passed to configure
31
dnl = We want sub projects to receive the same flags
32
dnl = untainted by this configure script
33
dnl ========================================================
34
_SUBDIR_CC="$CC"
35
_SUBDIR_CXX="$CXX"
36
_SUBDIR_CFLAGS="$CFLAGS"
37
_SUBDIR_CPPFLAGS="$CPPFLAGS"
38
_SUBDIR_CXXFLAGS="$CXXFLAGS"
39
_SUBDIR_LDFLAGS="$LDFLAGS"
40
_SUBDIR_HOST_CC="$HOST_CC"
41
_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
42
_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
43
_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
44
_SUBDIR_CONFIG_ARGS="$ac_configure_args"
45
46
dnl Set the version number of the libs included with mozilla
47
dnl ========================================================
48
MOZPNG=10635
49
NSPR_VERSION=4
50
NSPR_MINVER=4.21
51
NSS_VERSION=3
52
53
dnl Set the minimum version of toolkit libs used by mozilla
54
dnl ========================================================
55
GLIB_VERSION=2.22
56
# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
57
# The macro won't be used when compiling with earlier versions anyway.
58
GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
59
CAIRO_VERSION=1.10
60
GTK2_VERSION=2.18.0
61
GTK3_VERSION=3.4.0
62
GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
63
W32API_VERSION=3.14
64
STARTUP_NOTIFICATION_VERSION=0.8
65
DBUS_VERSION=0.60
66
SQLITE_VERSION=3.28.0
67
68
dnl Set various checks
69
dnl ========================================================
70
MISSING_X=
71
72
dnl Initialize the Pthread test variables early so they can be
73
dnl overridden by each platform.
74
dnl ========================================================
75
MOZ_USE_PTHREADS=
76
_PTHREAD_LDFLAGS=""
77
78
LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
79
80
if test "$COMPILE_ENVIRONMENT"; then
81
MOZ_ANDROID_NDK
82
fi # COMPILE_ENVIRONMENT
83
84
case "$target" in
85
*-android*|*-linuxandroid*)
86
AC_DEFINE(ANDROID)
87
;;
88
*-linux*)
89
AC_PATH_PROG(OBJCOPY,objcopy)
90
;;
91
esac
92
93
case "$target" in
94
*-apple-darwin*)
95
MOZ_IOS_SDK
96
;;
97
esac
98
99
AC_SUBST(ANDROID_SOURCE)
100
AC_SUBST(ANDROID_PACKAGE_NAME)
101
AC_SUBST(OBJCOPY)
102
103
dnl ========================================================
104
dnl Checks for compilers.
105
dnl ========================================================
106
107
if test "$COMPILE_ENVIRONMENT"; then
108
109
if test "$target" != "$host"; then
110
MOZ_CROSS_COMPILER
111
else
112
AC_PROG_CC
113
case "$target" in
114
*-mingw*)
115
# Work around the conftest.exe access problem on Windows
116
sleep 2
117
esac
118
AC_PROG_CXX
119
AC_PROG_RANLIB
120
MOZ_PATH_PROGS(AS, $AS as, $CC)
121
AC_CHECK_PROGS(STRIP, strip, :)
122
AC_CHECK_PROGS(OTOOL, otool, :)
123
fi
124
125
if test -n "$MOZ_WINCONSOLE"; then
126
AC_DEFINE(MOZ_WINCONSOLE)
127
fi
128
129
MOZ_TOOL_VARIABLES
130
131
dnl ========================================================
132
dnl Special win32 checks
133
dnl ========================================================
134
135
WINVER=601
136
137
case "$target" in
138
*-mingw*)
139
if test "$GCC" != "yes"; then
140
# Check to see if we are really running in a msvc environemnt
141
_WIN32_MSVC=1
142
143
# Make sure compilers are valid
144
CFLAGS="$CFLAGS -nologo"
145
CXXFLAGS="$CXXFLAGS -TP -nologo"
146
AC_LANG_SAVE
147
AC_LANG_C
148
AC_TRY_COMPILE([#include <stdio.h>],
149
[ printf("Hello World\n"); ],,
150
AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
151
152
AC_LANG_CPLUSPLUS
153
AC_TRY_COMPILE([#include <new.h>],
154
[ unsigned *test = new unsigned(42); ],,
155
AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
156
AC_LANG_RESTORE
157
158
changequote(,)
159
_MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
160
changequote([,])
161
162
AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
163
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
164
AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
165
166
_CC_SUITE=14
167
MSVC_C_RUNTIME_DLL=vcruntime140.dll
168
MSVC_CXX_RUNTIME_DLL=msvcp140.dll
169
170
# -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
171
CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
172
173
if test -n "$WIN_UCRT_REDIST_DIR"; then
174
if test ! -d "$WIN_UCRT_REDIST_DIR"; then
175
AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
176
fi
177
WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
178
fi
179
180
AC_SUBST(MSVC_C_RUNTIME_DLL)
181
AC_SUBST(MSVC_CXX_RUNTIME_DLL)
182
183
AC_DEFINE(HAVE_SEH_EXCEPTIONS)
184
185
if test -n "$WIN32_REDIST_DIR"; then
186
if test ! -d "$WIN32_REDIST_DIR"; then
187
AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
188
fi
189
WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
190
fi
191
192
# Check linker version, except in lld builds
193
case "$LINKER" in
194
*lld*)
195
;;
196
*)
197
_LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
198
_LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
199
if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
200
AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
201
fi
202
;;
203
esac
204
205
INCREMENTAL_LINKER=1
206
207
unset _MSVC_VER_FILTER
208
209
WRAP_STL_INCLUDES=1
210
STL_FLAGS="-I${DIST}/stl_wrappers"
211
CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
212
CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
213
else
214
# Check w32api version
215
_W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
216
_W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
217
AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
218
AC_TRY_COMPILE([#include <w32api.h>],
219
#if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
220
(__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
221
__W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
222
#error "test failed."
223
#endif
224
, [ res=yes ], [ res=no ])
225
AC_MSG_RESULT([$res])
226
if test "$res" != "yes"; then
227
AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
228
fi
229
# strsafe.h on mingw uses macros for function deprecation that pollutes namespace
230
# causing problems with local implementations with the same name.
231
AC_DEFINE(STRSAFE_NO_DEPRECATE)
232
fi # !GNU_CC
233
234
AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
235
AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
236
# Require OS features provided by IE 8.0 (Win7)
237
AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
238
239
;;
240
esac
241
242
if test -n "$_WIN32_MSVC"; then
243
SKIP_PATH_CHECKS=1
244
SKIP_COMPILER_CHECKS=1
245
SKIP_LIBRARY_CHECKS=1
246
247
# Since we're skipping compiler and library checks, hard-code
248
# some facts here.
249
AC_DEFINE(HAVE_IO_H)
250
AC_DEFINE(HAVE_ISATTY)
251
fi
252
253
fi # COMPILE_ENVIRONMENT
254
255
AC_SUBST(GNU_CC)
256
AC_SUBST(GNU_CXX)
257
258
AC_SUBST_LIST(STL_FLAGS)
259
AC_SUBST(WRAP_STL_INCLUDES)
260
261
dnl ========================================================
262
dnl Checks for programs.
263
dnl ========================================================
264
if test "$COMPILE_ENVIRONMENT"; then
265
266
AC_PATH_XTRA
267
268
XCFLAGS="$X_CFLAGS"
269
270
fi # COMPILE_ENVIRONMENT
271
272
dnl ========================================================
273
dnl set the defaults first
274
dnl ========================================================
275
MOZ_USER_DIR=".mozilla"
276
277
MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
278
279
MOZ_FS_LAYOUT=unix
280
281
dnl Configure platform-specific CPU architecture compiler options.
282
dnl ==============================================================
283
if test "$COMPILE_ENVIRONMENT"; then
284
MOZ_ARCH_OPTS
285
fi # COMPILE_ENVIRONMENT
286
287
dnl ========================================================
288
dnl Android libstdc++
289
dnl ========================================================
290
291
MOZ_ANDROID_CPU_ARCH
292
if test "$COMPILE_ENVIRONMENT"; then
293
MOZ_ANDROID_STLPORT
294
fi # COMPILE_ENVIRONMENT
295
296
dnl ========================================================
297
dnl Suppress Clang Argument Warnings
298
dnl ========================================================
299
WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
300
if test -n "${CLANG_CC}${CLANG_CL}"; then
301
WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
302
CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
303
fi
304
if test -n "${CLANG_CXX}${CLANG_CL}"; then
305
_WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
306
fi
307
308
if test -n "$COMPILE_ENVIRONMENT"; then
309
MOZ_CONFIG_SANITIZE
310
fi
311
312
dnl ========================================================
313
dnl Add optional and non-optional hardening flags
314
dnl ========================================================
315
316
CFLAGS="$CFLAGS $MOZ_HARDENING_CFLAGS"
317
CPPFLAGS="$CPPFLAGS $MOZ_HARDENING_CFLAGS"
318
CXXFLAGS="$CXXFLAGS $MOZ_HARDENING_CFLAGS"
319
LDFLAGS="$LDFLAGS $MOZ_HARDENING_LDFLAGS"
320
321
dnl ========================================================
322
dnl GNU specific defaults
323
dnl ========================================================
324
if test "$GNU_CC"; then
325
MMX_FLAGS="-mmmx"
326
SSE_FLAGS="-msse"
327
SSE2_FLAGS="-msse2"
328
SSSE3_FLAGS="-mssse3"
329
# FIXME: Let us build with strict aliasing. bug 414641.
330
CFLAGS="$CFLAGS -fno-strict-aliasing"
331
WARNINGS_AS_ERRORS='-Werror'
332
DSO_CFLAGS=''
333
334
if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
335
DSO_PIC_CFLAGS='-fPIC'
336
ASFLAGS="$ASFLAGS -fPIC"
337
fi
338
339
AC_MSG_CHECKING([for --noexecstack option to as])
340
_SAVE_CFLAGS=$CFLAGS
341
CFLAGS="$CFLAGS -Wa,--noexecstack"
342
AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
343
[ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
344
AC_MSG_RESULT([no]))
345
CFLAGS=$_SAVE_CFLAGS
346
AC_MSG_CHECKING([for -z noexecstack option to ld])
347
_SAVE_LDFLAGS=$LDFLAGS
348
LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
349
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
350
AC_MSG_RESULT([no])
351
LDFLAGS=$_SAVE_LDFLAGS)
352
353
AC_MSG_CHECKING([for -z text option to ld])
354
_SAVE_LDFLAGS=$LDFLAGS
355
LDFLAGS="$LDFLAGS -Wl,-z,text"
356
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
357
AC_MSG_RESULT([no])
358
LDFLAGS=$_SAVE_LDFLAGS)
359
360
AC_MSG_CHECKING([for -z relro option to ld])
361
_SAVE_LDFLAGS=$LDFLAGS
362
LDFLAGS="$LDFLAGS -Wl,-z,relro"
363
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
364
AC_MSG_RESULT([no])
365
LDFLAGS=$_SAVE_LDFLAGS)
366
367
AC_MSG_CHECKING([for -z nocopyreloc option to ld])
368
_SAVE_LDFLAGS=$LDFLAGS
369
LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
370
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
371
AC_MSG_RESULT([no])
372
LDFLAGS=$_SAVE_LDFLAGS)
373
374
AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
375
_SAVE_LDFLAGS=$LDFLAGS
376
LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
377
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
378
AC_MSG_RESULT([no])
379
LDFLAGS=$_SAVE_LDFLAGS)
380
381
AC_MSG_CHECKING([for --build-id=sha1 option to ld])
382
_SAVE_LDFLAGS=$LDFLAGS
383
LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
384
AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
385
AC_MSG_RESULT([no])
386
LDFLAGS=$_SAVE_LDFLAGS)
387
388
AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
389
HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
390
_SAVE_LDFLAGS=$LDFLAGS
391
LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
392
AC_TRY_LINK(,,AC_MSG_RESULT([yes])
393
[HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
394
AC_MSG_RESULT([no]))
395
LDFLAGS=$_SAVE_LDFLAGS
396
397
# Check for -mssse3 on $CC
398
AC_MSG_CHECKING([if toolchain supports -mssse3 option])
399
HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
400
_SAVE_CFLAGS=$CFLAGS
401
CFLAGS="$CFLAGS -mssse3"
402
AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
403
[HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
404
AC_MSG_RESULT([no]))
405
CFLAGS=$_SAVE_CFLAGS
406
407
# Check for -msse4.1 on $CC
408
AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
409
HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
410
_SAVE_CFLAGS=$CFLAGS
411
CFLAGS="$CFLAGS -msse4.1"
412
AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
413
[HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
414
AC_MSG_RESULT([no]))
415
CFLAGS=$_SAVE_CFLAGS
416
417
case "${CPU_ARCH}" in
418
x86 | x86_64)
419
AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
420
AC_TRY_COMPILE([],
421
[asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
422
result="yes", result="no")
423
AC_MSG_RESULT("$result")
424
if test "$result" = "yes"; then
425
HAVE_X86_AVX2=1
426
fi
427
;;
428
429
ppc*)
430
AC_MSG_CHECKING([whether we can enable AltiVec support])
431
HAVE_ALTIVEC=
432
_SAVE_CFLAGS=$CFLAGS
433
CFLAGS="$CFLAGS -maltivec"
434
AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
435
[HAVE_ALTIVEC=1],
436
AC_MSG_RESULT([no]))
437
CFLAGS=$_SAVE_CFLAGS
438
;;
439
esac
440
441
DSO_LDOPTS='-shared'
442
if test "$GCC_USE_GNU_LD"; then
443
# Some tools like ASan use a runtime library that is only
444
# linked against executables, so we must allow undefined
445
# symbols for shared objects in some cases.
446
if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
447
# Don't allow undefined symbols in libraries
448
DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
449
450
# BSDs need `environ' exposed for posix_spawn (bug 753046)
451
case "$OS_TARGET" in
452
DragonFly|FreeBSD|NetBSD|OpenBSD)
453
if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
454
DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
455
else
456
DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
457
fi
458
;;
459
esac
460
fi
461
fi
462
463
_DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
464
_USE_CPP_INCLUDE_FLAG=1
465
466
ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
467
fi
468
469
if test "$GNU_CXX"; then
470
# FIXME: Let us build with strict aliasing. bug 414641.
471
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
472
473
_DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
474
_USE_CPP_INCLUDE_FLAG=1
475
fi
476
477
# For profiling builds keep the symbol information
478
if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
479
case "$OS_TARGET" in
480
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
481
STRIP_FLAGS="--strip-debug"
482
;;
483
esac
484
fi
485
486
dnl ========================================================
487
dnl = Enable DMD
488
dnl ========================================================
489
490
if test "$MOZ_DMD"; then
491
if test "${CPU_ARCH}" = "arm"; then
492
CFLAGS="$CFLAGS -funwind-tables"
493
CXXFLAGS="$CXXFLAGS -funwind-tables"
494
fi
495
fi
496
497
dnl ========================================================
498
dnl System overrides of the defaults for host
499
dnl ========================================================
500
case "$host" in
501
*mingw*)
502
if test -n "$_WIN32_MSVC"; then
503
HOST_CFLAGS="$HOST_CFLAGS -nologo"
504
else
505
HOST_CFLAGS="$HOST_CFLAGS -mwindows"
506
fi
507
HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
508
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
509
HOST_BIN_SUFFIX=.exe
510
511
case "${host_cpu}" in
512
i*86)
513
if test -n "$_WIN32_MSVC"; then
514
HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
515
fi
516
;;
517
x86_64)
518
if test -n "$_WIN32_MSVC"; then
519
HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
520
fi
521
HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
522
;;
523
esac
524
;;
525
526
*-darwin*)
527
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
528
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
529
;;
530
531
*-linux*|*-kfreebsd*-gnu|*-gnu*)
532
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
533
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
534
;;
535
536
*)
537
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
538
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
539
;;
540
esac
541
542
dnl ========================================================
543
dnl System overrides of the defaults for target
544
dnl ========================================================
545
546
case "$target" in
547
*-darwin*)
548
MOZ_OPTIMIZE_FLAGS="-O3"
549
CXXFLAGS="$CXXFLAGS -stdlib=libc++"
550
DSO_LDOPTS=''
551
STRIP_FLAGS="$STRIP_FLAGS -x -S"
552
# Ensure that if we're targeting iOS an SDK was provided.
553
AC_CACHE_CHECK(for iOS target,
554
ac_cv_ios_target,
555
[AC_TRY_COMPILE([#include <TargetConditionals.h>
556
#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
557
#error not iOS
558
#endif],
559
[],
560
ac_cv_ios_target="yes",
561
ac_cv_ios_target="no")])
562
if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then
563
AC_MSG_ERROR([targeting iOS but not using an iOS SDK?])
564
fi
565
if test -z "$MOZ_IOS"; then
566
# The ExceptionHandling framework is needed for Objective-C exception
567
# logging code in nsObjCExceptions.h. Currently we only use that in debug
568
# builds.
569
MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
570
fi
571
572
dnl DTrace and -dead_strip don't interact well. See bug 403132.
573
dnl ===================================================================
574
if test "x$enable_dtrace" = "xyes"; then
575
echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
576
else
577
dnl check for the presence of the -dead_strip linker flag
578
AC_MSG_CHECKING([for -dead_strip option to ld])
579
_SAVE_LDFLAGS=$LDFLAGS
580
LDFLAGS="$LDFLAGS -Wl,-dead_strip"
581
AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
582
if test -n "$_HAVE_DEAD_STRIP" ; then
583
AC_MSG_RESULT([yes])
584
MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
585
else
586
AC_MSG_RESULT([no])
587
fi
588
589
LDFLAGS=$_SAVE_LDFLAGS
590
fi
591
592
MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
593
;;
594
595
*-android*|*-linuxandroid*)
596
AC_DEFINE(NO_PW_GECOS)
597
598
if test "$COMPILE_ENVIRONMENT"; then
599
MOZ_LINKER=1
600
fi
601
602
MOZ_GFX_OPTIMIZE_MOBILE=1
603
if test -z "$CLANG_CC"; then
604
MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
605
else
607
# -Oz is smaller than -Os on clang.
608
MOZ_OPTIMIZE_FLAGS="-Oz"
609
# Disable the outliner, which causes performance regressions, and is
610
# enabled on some platforms at -Oz.
611
if test -z "$MOZ_LTO"; then
612
DISABLE_OUTLINER="-mno-outline"
613
_SAVE_CFLAGS=$CFLAGS
614
CFLAGS="$CFLAGS $DISABLE_OUTLINER"
615
AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
616
CFLAGS="$_SAVE_CFLAGS"
617
else
618
DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
619
_SAVE_LDFLAGS=$LDFLAGS
620
LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
621
AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
622
LDFLAGS="$_SAVE_LDFLAGS"
623
fi
624
fi
625
;;
626
627
*-*linux*)
628
if test "$GNU_CC" -o "$GNU_CXX"; then
629
MOZ_PGO_OPTIMIZE_FLAGS="-O3"
630
if test -n "$MOZ_DEBUG"; then
631
MOZ_OPTIMIZE_FLAGS="-Os"
632
else
633
MOZ_OPTIMIZE_FLAGS="-O2"
634
fi
635
if test -z "$CLANG_CC"; then
636
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
637
fi
638
fi
639
640
case "${target_cpu}" in
641
alpha*)
642
CFLAGS="$CFLAGS -mieee"
643
CXXFLAGS="$CXXFLAGS -mieee"
644
;;
645
esac
646
;;
647
*-mingw*)
648
DSO_CFLAGS=
649
DSO_PIC_CFLAGS=
650
# certain versions of cygwin's makedepend barf on the
651
# #include <string> vs -I./dist/include/string issue so don't use it
652
if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
653
CC="$CC -mwindows"
654
CXX="$CXX -mwindows"
655
CPP="$CPP -mwindows"
656
CFLAGS="$CFLAGS -mms-bitfields"
657
CXXFLAGS="$CXXFLAGS -mms-bitfields"
658
DSO_LDOPTS='-shared'
659
# Use temp file for windres (bug 213281)
660
RCFLAGS='-O coff --use-temp-file'
661
# mingw doesn't require kernel32, user32, and advapi32 explicitly
662
LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
663
MOZ_FIX_LINK_PATHS=
664
665
MOZ_OPTIMIZE_FLAGS="-O1"
666
667
WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
668
WIN32_GUI_EXE_LDFLAGS=-mwindows
669
670
if test -z "$CLANG_CC"; then
671
# Use static libgcc and libstdc++
672
LDFLAGS="$LDFLAGS -static"
673
674
# GCC/binutils can't link to a function if we try to include dllexport function
675
# in the same library as dllimport caller. To work around it, we build NSPR
676
# and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that
677
# function thunks need to be generated for cross-DLL calls.
678
MOZ_FOLD_LIBS_FLAGS="-mnop-fun-dllimport"
679
else
680
# Silence problematic clang warnings
681
CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
682
fi
683
else
684
TARGET_COMPILER_ABI=msvc
685
RANLIB='echo not_ranlib'
686
STRIP='echo not_strip'
687
PKG_SKIP_STRIP=1
688
# aarch64 doesn't support subsystems below 6.02
689
if test "$CPU_ARCH" = "aarch64"; then
690
WIN32_SUBSYSTEM_VERSION=6.02
691
else
692
WIN32_SUBSYSTEM_VERSION=6.01
693
fi
694
WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
695
WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
696
DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
697
_USE_CPP_INCLUDE_FLAG=1
698
_DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
699
_DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
700
CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
701
CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
702
if test -z "$CLANG_CL"; then
703
CPPFLAGS="$CPPFLAGS -utf-8"
704
fi
705
if test "$CPU_ARCH" = "x86"; then
706
dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
707
dnl more recent, so set that explicitly here unless another
708
dnl target arch has already been set.
709
changequote(,)
710
if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
711
CFLAGS="$CFLAGS -arch:SSE2"
712
fi
713
if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
714
CXXFLAGS="$CXXFLAGS -arch:SSE2"
715
fi
716
changequote([,])
717
SSE_FLAGS="-arch:SSE"
718
SSE2_FLAGS="-arch:SSE2"
719
dnl MSVC allows the use of intrinsics without any flags
720
dnl and doesn't have a separate arch for SSSE3
721
SSSE3_FLAGS="-arch:SSE2"
722
fi
723
dnl clang-cl requires appropriate flags to enable SSSE3 support
724
dnl on all architectures.
725
if test -n "$CLANG_CL"; then
726
SSSE3_FLAGS="-mssse3"
727
fi
728
dnl VS2013+ supports -Gw for better linker optimizations.
730
dnl Disabled on ASan because it causes false-positive ODR violations.
731
if test -z "$MOZ_ASAN"; then
732
CFLAGS="$CFLAGS -Gw"
733
CXXFLAGS="$CXXFLAGS -Gw"
734
else
735
# String tail merging doesn't play nice with ASan's ODR checker.
736
LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
737
fi
738
if test -n "$CLANG_CL"; then
739
# XXX We should combine some of these with our generic GCC-style
740
# warning checks.
741
#
742
# Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
743
CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
744
# We use offsetof on non-POD objects all the time.
745
# We also suppress this warning on other platforms.
746
CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
747
# This warns for reasonable things like:
748
# enum { X = 0xffffffffU };
749
# which is annoying for IDL headers.
750
CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
751
# This warns for cases that would be reached by the Microsoft
752
# #include rules, but also currently warns on cases that would
753
# *also* be reached by standard C++ include rules. That
754
# behavior doesn't seem useful, so we turn it off.
755
CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
756
# We normally error out on unknown pragmas, but since clang-cl
757
# claims to be MSVC, it would be difficult to add
758
# #if defined(_MSC_VER) && !defined(__clang__) everywhere we
759
# use such pragmas, so just ignore them.
760
CFLAGS="$CFLAGS -Wno-unknown-pragmas"
761
CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
762
# We get errors about various #pragma intrinsic directives from
763
# clang-cl, and we don't need to hear about those.
764
CFLAGS="$CFLAGS -Wno-ignored-pragmas"
765
CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
766
# clang-cl's Intrin.h marks things like _ReadWriteBarrier
767
# as __attribute((__deprecated__)). This is nice to know,
768
# but since we don't get the equivalent warning from MSVC,
769
# let's just ignore it.
770
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
771
CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
772
# We use a function like:
773
# __declspec(noreturn) __inline void f() {}
774
# which -Winvalid-noreturn complains about. Again, MSVC seems
775
# OK with it, so let's silence the warning.
776
CFLAGS="$CFLAGS -Wno-invalid-noreturn"
777
CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
778
# Missing |override| on virtual function declarations isn't
779
# something that MSVC currently warns about.
780
CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
781
# We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
782
# declaration on |operator delete(void*)|. However, clang-cl
783
# must internally declare |operator delete(void*)| differently,
784
# which causes this warning for virtually every file in the
785
# tree. clang-cl doesn't support -fno-exceptions or equivalent,
786
# so there doesn't seem to be any way to convince clang-cl to
787
# declare |delete| differently. Therefore, suppress this
788
# warning.
789
CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
790
# At least one MSVC header and several headers in-tree have
791
# unused typedefs, so turn this on.
792
CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
793
# jemalloc uses __declspec(allocator) as a profiler hint,
794
# which clang-cl doesn't understand.
795
CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
796
# __attribute__((unused)) really means "might be unused" and
797
# we use it to avoid warnings about things that are unused
798
# in some compilation units, but used in many others. This
799
# warning insists on complaining about the latter case, which
800
# is annoying, and rather noisy.
801
CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
802
fi
803
# Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
804
CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
805
LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
806
MOZ_DEBUG_LDFLAGS='-DEBUG'
807
WARNINGS_AS_ERRORS='-WX'
808
# Use a higher optimization level for clang-cl, so we can come closer
809
# to MSVC's performance numbers (see bug 1443590).
810
if test -n "$CLANG_CL"; then
811
MOZ_OPTIMIZE_FLAGS='-O2'
812
else
813
MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
814
fi
815
MOZ_FIX_LINK_PATHS=
816
LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
817
if test -z "$DEVELOPER_OPTIONS"; then
818
LDFLAGS="$LDFLAGS -RELEASE"
819
fi
820
RCFLAGS="-nologo"
821
dnl Minimum reqiurement of Gecko is VS2015 or later which supports
822
dnl both SSSE3 and SSE4.1.
823
HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
824
HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
825
dnl allow AVX2 code from VS2015
826
HAVE_X86_AVX2=1
827
fi
828
AC_DEFINE(WIN32_LEAN_AND_MEAN)
830
AC_DEFINE(NOMINMAX)
831
BIN_SUFFIX='.exe'
832
MOZ_USER_DIR="Mozilla"
833
834
case "$host_os" in
835
cygwin*|msvc*|mks*)
836
AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
837
;;
838
esac
839
840
if test -n "$GNU_CC" -a -z "$CLANG_CC"; then
841
CFLAGS="$CFLAGS -fno-keep-inline-dllexport"
842
CXXFLAGS="$CXXFLAGS -fno-keep-inline-dllexport"
843
fi
844
845
case "$target" in
846
i*86-*)
847
if test -n "$GNU_CC"; then
848
CFLAGS="$CFLAGS -mstackrealign"
849
CXXFLAGS="$CXXFLAGS -mstackrealign"
850
LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
851
if test -z "$CLANG_CC"; then
852
LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
853
fi
854
else
855
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
856
LDFLAGS="$LDFLAGS -SAFESEH"
857
fi
858
859
AC_DEFINE(_X86_)
860
;;
861
x86_64-*)
862
if test -n "$_WIN32_MSVC"; then
863
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
864
fi
865
AC_DEFINE(_AMD64_)
866
;;
867
aarch64-*)
868
if test -n "$_WIN32_MSVC"; then
869
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
870
fi
871
AC_DEFINE(_ARM64_)
872
;;
873
*)
874
AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
875
;;
876
esac
877
;;
878
879
*-netbsd*)
880
DSO_CFLAGS=''
881
CFLAGS="$CFLAGS -Dunix"
882
CXXFLAGS="$CXXFLAGS -Dunix"
883
if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
884
DSO_PIC_CFLAGS='-fPIC -DPIC'
885
DSO_LDOPTS='-shared'
886
MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
887
else
888
DSO_PIC_CFLAGS='-fPIC -DPIC'
889
DSO_LDOPTS='-shared'
890
fi
891
# This will fail on a.out systems prior to 1.5.1_ALPHA.
892
if test "$LIBRUNPATH"; then
893
DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
894
fi
895
;;
896
897
*-openbsd*)
898
if test -z "$X11BASE"; then
899
X11BASE=/usr/X11R6
900
fi
901
MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
902
DSO_CFLAGS=''
903
DSO_PIC_CFLAGS='-fPIC'
904
DSO_LDOPTS='-shared -fPIC'
905
if test "$LIBRUNPATH"; then
906
DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
907
fi
908
;;
909
910
*-solaris*)
911
MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
912
;;
913
914
esac
915
916
if test -z "$MOZ_OPTIMIZE_FLAGS"; then
917
MOZ_OPTIMIZE_FLAGS="-O"
918
fi
919
920
AC_SUBST_LIST(MMX_FLAGS)
921
AC_SUBST_LIST(SSE_FLAGS)
922
AC_SUBST_LIST(SSE2_FLAGS)
923
AC_SUBST_LIST(SSSE3_FLAGS)
924
925
AC_SUBST(MOZ_LINKER)
926
if test -n "$MOZ_LINKER"; then
927
AC_DEFINE(MOZ_LINKER)
928
MOZ_LINKER_EXTRACT=1
929
AC_CHECK_PROGS(XZ, xz)
930
fi
931
932
if test -z "$COMPILE_ENVIRONMENT"; then
933
SKIP_COMPILER_CHECKS=1
934
SKIP_LIBRARY_CHECKS=1
935
PKG_SKIP_STRIP=1
936
MOZ_DEBUGGING_OPTS
937
else
938
MOZ_COMPILER_OPTS
939
fi # COMPILE_ENVIRONMENT
940
941
if test -z "$SKIP_COMPILER_CHECKS"; then
942
dnl Checks for typedefs, structures, and compiler characteristics.
943
dnl ========================================================
944
AC_C_CONST
945
AC_TYPE_MODE_T
946
AC_TYPE_OFF_T
947
AC_TYPE_PID_T
948
AC_TYPE_SIZE_T
949
AC_LANG_CPLUSPLUS
950
AC_LANG_C
951
952
AC_LANG_CPLUSPLUS
953
954
MOZ_CXX11
955
956
AC_LANG_C
957
958
case "${OS_TARGET}" in
959
Darwin)
960
;;
961
*)
962
STL_FLAGS="-I${DIST}/stl_wrappers"
963
WRAP_STL_INCLUDES=1
964
;;
965
esac
966
967
if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
968
WRAP_STL_INCLUDES=
969
fi
970
971
dnl Checks for header files.
972
dnl ========================================================
973
AC_HEADER_DIRENT
974
case "$target_os" in
975
bitrig*|dragonfly*|freebsd*|openbsd*)
976
# for stuff like -lXshm
977
CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
978
;;
979
esac
980
981
dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
982
AC_CACHE_CHECK(for sockaddr_in.sin_len,
983
ac_cv_sockaddr_in_sin_len,
984
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
985
#include <sys/types.h>
986
#endif
987
#include <netinet/in.h>
988
struct sockaddr_in x;
989
void *foo = (void*) &x.sin_len;],
990
[],
991
[ac_cv_sockaddr_in_sin_len=true],
992
[ac_cv_sockaddr_in_sin_len=false])])
993
if test "$ac_cv_sockaddr_in_sin_len" = true ; then
994
AC_DEFINE(HAVE_SIN_LEN)
995
dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
996
AC_DEFINE(HAVE_SCONN_LEN)
997
fi
998
999
AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
1000
ac_cv_sockaddr_in6_sin6_len,
1001
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1002
#include <sys/types.h>
1003
#endif
1004
#include <netinet/in.h>
1005
struct sockaddr_in6 x;
1006
void *foo = (void*) &x.sin6_len;],
1007
[],
1008
[ac_cv_sockaddr_in6_sin6_len=true],
1009
[ac_cv_sockaddr_in6_sin6_len=false])])
1010
if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
1011
AC_DEFINE(HAVE_SIN6_LEN)
1012
fi
1013
1014
AC_CACHE_CHECK(for sockaddr.sa_len,
1015
ac_cv_sockaddr_sa_len,
1016
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1017
#include <sys/types.h>
1018
#endif
1019
#include <sys/socket.h>
1020
struct sockaddr x;
1021
void *foo = (void*) &x.sa_len;],
1022
[],
1023
[ac_cv_sockaddr_sa_len=true],
1024
[ac_cv_sockaddr_sa_len=false])])
1025
if test "$ac_cv_sockaddr_sa_len" = true ; then
1026
AC_DEFINE(HAVE_SA_LEN)
1027
fi
1028
1029
MOZ_ARG_ENABLE_BOOL(dtrace,
1030
[ --enable-dtrace build with dtrace support if available (default=no)],
1031
[enable_dtrace="yes"],)
1032
if test "x$enable_dtrace" = "xyes"; then
1033
MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
1034
if test -n "$HAVE_DTRACE"; then
1035
AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
1036
else
1037
AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
1038
fi
1039
fi
1040
AC_SUBST(HAVE_DTRACE)
1041
1042
dnl Checks for libraries.
1043
dnl ========================================================
1044
AC_CHECK_LIB(c_r, gethostbyname_r)
1045
1046
dnl We don't want to link with libdl even if it's present on OS X, since
1047
dnl it's not used and not part of the default installation. OS/2 has dlfcn
1048
dnl in libc.
1049
dnl We don't want to link against libm or libpthread on Darwin since
1050
dnl they both are just symlinks to libSystem and explicitly linking
1051
dnl against libSystem causes issues when debugging (see bug 299601).
1052
case $target in
1053
*-darwin*)
1054
;;
1055
*)
1056
AC_SEARCH_LIBS(dlopen, dl,
1057
MOZ_CHECK_HEADER(dlfcn.h,
1058
AC_DEFINE(HAVE_DLOPEN)))
1059
;;
1060
esac
1061
1062
_SAVE_CFLAGS="$CFLAGS"
1063
CFLAGS="$CFLAGS -D_GNU_SOURCE"
1064
AC_CHECK_FUNCS(dladdr memmem)
1065
CFLAGS="$_SAVE_CFLAGS"
1066
1067
if test ! "$GNU_CXX"; then
1068
AC_CHECK_LIB(C, demangle)
1069
fi
1070
1071
AC_CHECK_LIB(socket, socket)
1072
1073
XLDFLAGS="$X_LIBS"
1074
XLIBS="$X_EXTRA_LIBS"
1075
1076
dnl ========================================================
1077
dnl Checks for X libraries.
1078
dnl Ordering is important.
1079
dnl Xt is dependent upon SM as of X11R6
1080
dnl ========================================================
1081
if test -n "$MOZ_X11"; then
1082
AC_DEFINE_UNQUOTED(FUNCPROTO,15)
1083
_SAVE_LDFLAGS="$LDFLAGS"
1084
_SAVE_LIBS="$LIBS"
1085
LDFLAGS="$XLDFLAGS $LDFLAGS"
1086
AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
1087
[MISSING_X="$MISSING_X -lX11"], $XLIBS)
1088
AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1089
[MISSING_X="$MISSING_X -lXext"], $XLIBS)
1090
1091
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1092
unset ac_cv_lib_Xt_XtFree
1093
AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1094
AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1095
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1096
[MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1097
])
1098
1099
dnl ========================================================
1100
dnl = Check for xcb
1101
dnl ========================================================
1102
AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1103
[MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1104
AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1105
[MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1106
AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1107
[MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1108
1109
LDFLAGS="$_SAVE_LDFLAGS"
1110
LIBS="$_SAVE_LIBS"
1111
fi # $MOZ_X11
1112
1113
AC_SUBST_LIST(XCFLAGS)
1114
AC_SUBST_LIST(XLDFLAGS)
1115
AC_SUBST_LIST(XLIBS)
1116
AC_SUBST_LIST(XEXT_LIBS)
1117
AC_SUBST_LIST(XT_LIBS)
1118
1119
dnl ========================================================
1120
dnl = pthread support
1121
dnl = Start by checking whether the system support pthreads
1122
dnl ========================================================
1123
case "$target_os" in
1124
darwin*)
1125
MOZ_USE_PTHREADS=1
1126
;;
1127
*)
1128
AC_CHECK_LIB(pthreads, pthread_create,
1129
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1130
AC_CHECK_LIB(pthread, pthread_create,
1131
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1132
AC_CHECK_LIB(c_r, pthread_create,
1133
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1134
AC_CHECK_LIB(c, pthread_create,
1135
MOZ_USE_PTHREADS=1
1136
)
1137
)
1138
)
1139
)
1140
;;
1141
esac
1142
1143
dnl ========================================================
1144
dnl Do the platform specific pthread hackery
1145
dnl ========================================================
1146
if test "$MOZ_USE_PTHREADS"x != x
1147
then
1148
dnl
1149
dnl See if -pthread is supported.
1150
dnl
1151
rm -f conftest*
1152
ac_cv_have_dash_pthread=no
1153
AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1154
echo 'int main() { return 0; }' | cat > conftest.c
1155
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1156
if test $? -eq 0; then
1157
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1158
ac_cv_have_dash_pthread=yes
1159
case "$target_os" in
1160
freebsd*)
1161
# Freebsd doesn't use -pthread for compiles, it uses them for linking
1162
;;
1163
*)
1164
CFLAGS="$CFLAGS -pthread"
1165
CXXFLAGS="$CXXFLAGS -pthread"
1166
;;
1167
esac
1168
fi
1169
fi
1170
rm -f conftest*
1171
AC_MSG_RESULT($ac_cv_have_dash_pthread)
1172
1173
dnl
1174
dnl See if -pthreads is supported.
1175
dnl
1176
ac_cv_have_dash_pthreads=no
1177
if test "$ac_cv_have_dash_pthread" = "no"; then
1178
AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1179
echo 'int main() { return 0; }' | cat > conftest.c
1180
${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1181
if test $? -eq 0; then
1182
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1183
ac_cv_have_dash_pthreads=yes
1184
CFLAGS="$CFLAGS -pthreads"
1185
CXXFLAGS="$CXXFLAGS -pthreads"
1186
fi
1187
fi
1188
rm -f conftest*
1189
AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1190
fi
1191
1192
case "$target" in
1193
*-*-freebsd*)
1194
AC_DEFINE(_REENTRANT)
1195
AC_DEFINE(_THREAD_SAFE)
1196
dnl -pthread links in -lpthread, so don't specify it explicitly.
1197
if test "$ac_cv_have_dash_pthread" = "yes"; then
1198
_PTHREAD_LDFLAGS="-pthread"
1199
fi
1200
;;
1201
1202
*-*-openbsd*|*-*-bsdi*)
1203
AC_DEFINE(_REENTRANT)
1204
AC_DEFINE(_THREAD_SAFE)
1205
dnl -pthread links in -lc_r, so don't specify it explicitly.
1206
if test "$ac_cv_have_dash_pthread" = "yes"; then
1207
_PTHREAD_LDFLAGS="-pthread"
1208
fi
1209
;;
1210
1211
*-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1212
AC_DEFINE(_REENTRANT)
1213
;;
1214
1215
esac
1216
LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1217
AC_SUBST(MOZ_USE_PTHREADS)
1218
MOZ_CHECK_HEADERS(pthread.h)
1219
fi
1220
1221
1222
dnl Checks for library functions.
1223
dnl ========================================================
1224
AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall)
1225
1226
dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1227
AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1228
ac_cv_clock_monotonic,
1229
[for libs in "" -lrt; do
1230
_SAVE_LIBS="$LIBS"
1231
_SAVE_CFLAGS="$CFLAGS"
1232
LIBS="$LIBS $libs"
1233
CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
1234
dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1235
dnl we should or not be able to use it. To detect if we can, we need to make the
1236
dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1237
AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1238
#include <time.h>],
1239
[ struct timespec ts;
1240
clock_gettime(CLOCK_MONOTONIC, &ts); ],
1241
ac_cv_clock_monotonic=$libs
1242
LIBS="$_SAVE_LIBS"
1243
break,
1244
ac_cv_clock_monotonic=no)
1245
LIBS="$_SAVE_LIBS"
1246
CFLAGS="$_SAVE_CFLAGS"
1247
done])
1248
if test "$ac_cv_clock_monotonic" != "no"; then
1249
HAVE_CLOCK_MONOTONIC=1
1250
REALTIME_LIBS=$ac_cv_clock_monotonic
1251
AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1252
AC_SUBST(HAVE_CLOCK_MONOTONIC)
1253
AC_SUBST_LIST(REALTIME_LIBS)
1254
fi
1255
1256
dnl Turn on warnings-as-errors to prevent implicit declaration of
1257
dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1258
dnl inadvertently pass even if the function does not really exist.
1259
_SAVE_CFLAGS="$CFLAGS"
1260
CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1261
AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1262
ac_cv_pthread_cond_timedwait_monotonic_np,
1263
AC_TRY_LINK([#include <pthread.h>],
1264
[pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1265
ac_cv_pthread_cond_timewait_monotonic_np=yes,
1266
ac_cv_pthread_cond_timewait_monotonic_np=no))
1267
if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1268
AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1269
fi
1270
CFLAGS=$_SAVE_CFLAGS
1271
1272
AC_CACHE_CHECK(
1273
[for res_ninit()],
1274
ac_cv_func_res_ninit,
1275
[if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1276
dnl no need for res_ninit() on NetBSD and OpenBSD
1277
ac_cv_func_res_ninit=no
1278
else
1279
AC_TRY_LINK([
1280
#ifdef linux
1281
#define _BSD_SOURCE 1
1282
#endif
1283
#include <sys/types.h>
1284
#include <netinet/in.h>
1285
#include <arpa/nameser.h>
1286
#include <resolv.h>
1287
],
1288
[int foo = res_ninit(&_res);],
1289
[ac_cv_func_res_ninit=yes],
1290
[ac_cv_func_res_ninit=no])
1291
fi
1292
])
1293
1294
if test "$ac_cv_func_res_ninit" = "yes"; then
1295
AC_DEFINE(HAVE_RES_NINIT)
1296
dnl must add the link line we do something as foolish as this... dougt
1297
dnl else
1298
dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1299
dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1300
fi
1301
1302
AC_LANG_C
1303
1304
dnl **********************
1305
dnl *** va_copy checks ***
1306
AC_CACHE_CHECK([for an implementation of va_copy()],
1307
ac_cv_va_copy,
1308
[AC_TRY_COMPILE([#include <stdarg.h>
1309
#include <stdlib.h>
1310
void f (int i, ...) {
1311
va_list args1, args2;
1312
va_start (args1, i);
1313
va_copy (args2, args1);
1314
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1315
exit (1);
1316
va_end (args1); va_end (args2);
1317
}],
1318
[f(0, 42); return 0],
1319
[ac_cv_va_copy=yes],
1320
[ac_cv_va_copy=no]
1321
)]
1322
)
1323
AC_CACHE_CHECK([whether va_list can be copied by value],
1324
ac_cv_va_val_copy,
1325
[AC_TRY_COMPILE([#include <stdarg.h>
1326
#include <stdlib.h>
1327
void f (int i, ...) {
1328
va_list args1, args2;
1329
va_start (args1, i);
1330
args2 = args1;
1331
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1332
exit (1);
1333
va_end (args1); va_end (args2);
1334
}],
1335
[f(0, 42); return 0],
1336
[ac_cv_va_val_copy=yes],
1337
[ac_cv_va_val_copy=no],
1338
)]
1339
)
1340
if test "x$ac_cv_va_copy" = "xyes"; then
1341
AC_DEFINE(VA_COPY, va_copy)
1342
AC_DEFINE(HAVE_VA_COPY)
1343
fi
1344
1345
if test "x$ac_cv_va_val_copy" = "xno"; then
1346
AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1347
fi
1348
1349
dnl ===================================================================
1350
dnl ========================================================
1351
dnl Put your C++ language/feature checks below
1352
dnl ========================================================
1353
AC_LANG_CPLUSPLUS
1354
1355
ARM_ABI_PREFIX=
1356
if test "$GNU_CC"; then
1357
if test "$CPU_ARCH" = "arm" ; then
1358
AC_CACHE_CHECK(for ARM EABI,
1359
ac_cv_gcc_arm_eabi,
1360
[AC_TRY_COMPILE([],
1361
[
1362
#if defined(__ARM_EABI__)
1363
return 0;
1364
#else
1365
#error Not ARM EABI.
1366
#endif
1367
],
1368
ac_cv_gcc_arm_eabi="yes",
1369
ac_cv_gcc_arm_eabi="no")])
1370
if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1371
HAVE_ARM_EABI=1
1372
ARM_ABI_PREFIX=eabi-
1373
else
1374
ARM_ABI_PREFIX=oabi-
1375
fi
1376
fi
1377
1378
TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1379
fi
1380
1381
# try harder, when checking for __thread support, see bug 521750 comment #33 and below
1382
# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1383
# enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1384
# linking XUL.
1385
_SAVE_LDFLAGS=$LDFLAGS
1386
LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1387
AC_CACHE_CHECK(for __thread keyword for TLS variables,
1388
ac_cv_thread_keyword,
1389
[AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1390
[return tlsIsMainThread;],
1391
ac_cv_thread_keyword=yes,
1392
ac_cv_thread_keyword=no)])
1393
LDFLAGS=$_SAVE_LDFLAGS
1394
# The custom dynamic linker doesn't support TLS variables
1395
MOZ_TLS=
1396
if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1397
# mips builds fail with TLS variables because of a binutils bug.
1398
# See bug 528687
1399
# OpenBSD doesn't have TLS support, and the test succeeds with clang++
1400
case "${target}" in
1401
mips*-*)
1402
:
1403
;;
1404
*-android*|*-linuxandroid*)
1405
:
1406
;;
1407
*-openbsd*)
1408
:
1409
;;
1410
*)
1411
AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1412
MOZ_TLS=1
1413
;;
1414
esac
1415
fi
1416
1417
dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1418
if test -n "$MOZ_LINKER"; then
1419
if test "$CPU_ARCH" = arm; then
1420
dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1421
if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1422
LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1423
_SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1424
fi
1425
fi
1426
1427
dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1429
dnl Since the linker only understands the sysv ones, no need to build the
1430
dnl gnu style tables anyways.
1431
LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1432
fi
1433
1434
dnl End of C++ language/feature checks
1435
AC_LANG_C
1436
1437
dnl ========================================================
1438
dnl = Internationalization checks
1439
dnl ========================================================
1440
dnl
1441
dnl Internationalization and Locale support is different
1442
dnl on various UNIX platforms. Checks for specific i18n
1443
dnl features go here.
1444
1445
AC_HAVE_FUNCS(localeconv)
1446
1447
fi # ! SKIP_COMPILER_CHECKS
1448
1449
if test -n "${COMPILE_ENVIRONMENT}"; then
1450
MOZ_CHECK_ALLOCATOR
1451
fi
1452
1453
TARGET_XPCOM_ABI=
1454
if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1455
TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1456
AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1457
fi
1458
1459
dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1460
dnl features that Windows actually does support.
1461
1462
if test -n "$SKIP_COMPILER_CHECKS"; then
1463
dnl Windows has malloc.h
1464
AC_DEFINE(MALLOC_H, [<malloc.h>])
1465
AC_DEFINE(HAVE_FORCEINLINE)
1466
AC_DEFINE(HAVE_LOCALECONV)
1467
fi # SKIP_COMPILER_CHECKS
1468
1469
dnl Mozilla specific options
1470
dnl ========================================================
1471
dnl The macros used for command line options
1472
dnl are defined in build/autoconf/altoptions.m4.
1473
1474
dnl ========================================================
1475
dnl =
1476
dnl = Check for external package dependencies
1477
dnl =
1478
dnl ========================================================
1479
MOZ_ARG_HEADER(External Packages)
1480
1481
case "$OS_TARGET" in
1482
WINNT|Darwin|Android)
1483
MOZ_FOLD_LIBS=1
1484
;;
1485
*)
1486
MOZ_FOLD_LIBS=
1487
;;
1488
esac
1489
1490
MOZ_CONFIG_NSPR()
1491
1492
dnl ========================================================
1493
dnl system libevent Support
1494
dnl ========================================================
1495
MOZ_ARG_WITH_STRING(system-libevent,
1496
[ --with-system-libevent[=PFX]
1497
Use system libevent [installed at prefix PFX]],
1498
LIBEVENT_DIR=$withval)
1499
1500
_SAVE_CFLAGS=$CFLAGS
1501
_SAVE_LDFLAGS=$LDFLAGS
1502
_SAVE_LIBS=$LIBS
1503
if test "$LIBEVENT_DIR" = yes; then
1504
PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1505
MOZ_SYSTEM_LIBEVENT=1,
1506
LIBEVENT_DIR=/usr)
1507
fi
1508
if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1509
MOZ_SYSTEM_LIBEVENT=
1510
elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1511
CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1512
LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1513
MOZ_CHECK_HEADER(event.h,
1514
[if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1515
AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1516
fi],
1517
AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1518
AC_CHECK_LIB(event, event_init,
1519
[MOZ_SYSTEM_LIBEVENT=1
1520
MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1521
MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1522
[MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1523
fi
1524
CFLAGS=$_SAVE_CFLAGS
1525
LDFLAGS=$_SAVE_LDFLAGS
1526
LIBS=$_SAVE_LIBS
1527
1528
AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1529
1530
dnl ========================================================
1531
dnl = If NSS was not detected in the system,
1532
dnl = use the one in the source tree (mozilla/security/nss)
1533
dnl ========================================================
1534
1535
MOZ_ARG_WITH_BOOL(system-nss,
1536
[ --with-system-nss Use system installed NSS],
1537
_USE_SYSTEM_NSS=1 )
1538
1539
if test -n "$_USE_SYSTEM_NSS"; then
1540
AM_PATH_NSS(3.45, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
1541
fi
1542
1543
NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
1544
if test -z "$MOZ_SYSTEM_NSS"; then
1545
case "${OS_ARCH}" in
1546
# Only few platforms have been tested with GYP
1547
WINNT|Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|SunOS)
1548
;;
1549
*)
1550
AC_MSG_ERROR([building in-tree NSS is not supported on this platform. Use --with-system-nss])
1551
;;
1552
esac
1553
fi
1554
1555
dnl system ZLIB support
1556
dnl ========================================================
1557
MOZ_ZLIB_CHECK([1.2.3])
1558
1559
if test -z "$SKIP_LIBRARY_CHECKS"; then
1560
1561
dnl ========================================================
1562
dnl system PNG Support
1563
dnl ========================================================
1564
MOZ_ARG_WITH_STRING(system-png,
1565
[ --with-system-png[=PFX]
1566
Use system libpng [installed at prefix PFX]],
1567
PNG_DIR=$withval)
1568
1569
_SAVE_CFLAGS=$CFLAGS
1570
_SAVE_LDFLAGS=$LDFLAGS
1571
_SAVE_LIBS=$LIBS
1572
if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1573
CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1574
LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1575
fi
1576
if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1577
MOZ_SYSTEM_PNG=
1578
else
1579
AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1580
AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1581
AC_CHECK_LIB(png, png_get_acTL, ,
1582
AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1583
fi
1584
if test "$MOZ_SYSTEM_PNG" = 1; then
1585
AC_TRY_COMPILE([ #include <stdio.h>
1586
#include <sys/types.h>
1587
#include <png.h> ],
1588
[ #if PNG_LIBPNG_VER < $MOZPNG
1589
#error "Insufficient libpng version ($MOZPNG required)."
1590
#endif
1591
#ifndef PNG_UINT_31_MAX
1592
#error "Insufficient libpng version."
1593
#endif ],
1594
MOZ_SYSTEM_PNG=1,
1595
AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1596
fi
1597
CFLAGS=$_SAVE_CFLAGS
1598
LDFLAGS=$_SAVE_LDFLAGS
1599
LIBS=$_SAVE_LIBS
1600
1601
if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1602
MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1603
MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1604
fi
1605
1606
fi # SKIP_LIBRARY_CHECKS
1607
1608
dnl ========================================================
1609
dnl =
1610
dnl = Application
1611
dnl =
1612
dnl ========================================================
1613
1614
MOZ_ARG_HEADER(Application)
1615
1616
ENABLE_SYSTEM_EXTENSION_DIRS=1
1617
MOZ_BRANDING_DIRECTORY=
1618
MOZ_OFFICIAL_BRANDING=
1619
MOZ_AUTH_EXTENSION=1
1620
if test "$MOZ_IOS"; then
1621
MOZ_AUTH_EXTENSION=
1622
fi
1623
MOZ_PREF_EXTENSIONS=1
1624
MOZ_SPELLCHECK=1
1625
MOZ_UNIVERSALCHARDET=1
1626
MOZ_XUL=1
1627
MOZ_ZIPWRITER=1
1628
MOZ_NO_SMART_CARDS=
1629
NECKO_COOKIES=1
1630
MOZ_USE_NATIVE_POPUP_WINDOWS=
1631
MOZ_EXCLUDE_HYPHENATION_DICTIONARIES=
1632
MOZ_SANDBOX=1
1633
MOZ_BINARY_EXTENSIONS=
1634
MOZ_DEVTOOLS=server
1635
1636
case "$target_os" in
1637
mingw*)
1638
NS_ENABLE_TSF=1
1639
AC_DEFINE(NS_ENABLE_TSF)
1640
;;
1641
esac
1642
1643
# Optional Firefox for Android partner distribution directory.
1644
MOZ_ARG_WITH_STRING(android-distribution-directory,
1645
[ --with-android-distribution-directory=dir
1646
Optional Firefox for Android partner distribution directory.],
1647
MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval)
1648
1649
if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then
1650
# A distribution directory must have an assets/distribution directory.
1652
if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then
1653
AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution;
1654
(looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).])
1655
fi
1656
fi
1657
AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY)
1658
1659
dnl ========================================================
1660
dnl = Trademarked Branding
1661
dnl ========================================================
1662
MOZ_ARG_ENABLE_BOOL(official-branding,
1663
[ --enable-official-branding
1664
Enable Official mozilla.org Branding
1665
Do not distribute builds with
1666
--enable-official-branding unless you have
1667
permission to use trademarks per
1669
MOZ_OFFICIAL_BRANDING=1,
1670
MOZ_OFFICIAL_BRANDING=)
1671
1672
# Allow the application to influence configure with a confvars.sh script.
1673
AC_MSG_CHECKING([if app-specific confvars.sh exists])
1674
if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1675
AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1676
. "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1677
else
1678
AC_MSG_RESULT([no])
1679
fi
1680
1681
# Allow influencing configure with a defines.sh script.
1682
. "${srcdir}/build/defines.sh"
1683
1684
# If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
1685
# set in defines.sh
1686
if test "$BUILDING_RELEASE"; then
1687
# Override value in defines.sh, if any
1688
EARLY_BETA_OR_EARLIER=
1689
elif test "$EARLY_BETA_OR_EARLIER"; then
1690
AC_DEFINE(EARLY_BETA_OR_EARLIER)
1691
fi
1692
AC_SUBST(EARLY_BETA_OR_EARLIER)
1693
1694
# Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
1695
MOZ_ARG_WITH_STRING(app-name,
1696
[--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
1697
WITH_APP_NAME=$withval,
1698
)
1699
1700
if test -n "$WITH_APP_NAME" ; then
1701
MOZ_APP_NAME="$WITH_APP_NAME"
1702
fi
1703
1704
MOZ_ARG_WITH_STRING(app-basename,
1705
[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
1706
WITH_APP_BASENAME=$withval,
1707
)
1708
1709
if test -n "$WITH_APP_BASENAME" ; then
1710
MOZ_APP_BASENAME="$WITH_APP_BASENAME"
1711
fi
1712
1713
# Special cases where we need to AC_DEFINE something. Also a holdover for apps
1714
# that haven't made a confvars.sh yet. Don't add new stuff here, use
1715
# MOZ_BUILD_APP.
1716
case "$MOZ_BUILD_APP" in
1717
browser)
1718
AC_DEFINE(MOZ_PHOENIX)
1719
;;
1720
esac
1721
1722
# Graphene is a desktop runtime for running applications with a HTML UI.
1723
if test -n "$MOZ_GRAPHENE"; then
1724
AC_DEFINE(MOZ_GRAPHENE)
1725
fi
1726
1727
AC_SUBST(MOZ_PHOENIX)
1728
1729
dnl ========================================================
1730
dnl Ensure Android SDK and build-tools versions depending on
1731
dnl mobile target.
1732
dnl ========================================================
1733
1734
case "$MOZ_BUILD_APP" in
1735
mobile/android)
1736
MOZ_ANDROID_SDK
1737
;;
1738
esac
1739
1740
dnl ========================================================
1741
dnl =
1742
dnl = Toolkit Options
1743
dnl =
1744
dnl ========================================================
1745
MOZ_ARG_HEADER(Toolkit Options)
1746
1747
dnl ========================================================
1748
dnl = Enable the toolkit as needed =
1749
dnl ========================================================
1750
1751
case "$MOZ_WIDGET_TOOLKIT" in
1752
1753
cocoa)
1754
LDFLAGS="$LDFLAGS -framework Cocoa"
1755
# Use -Wl as a trick to avoid -framework and framework names from
1756
# being separated by AC_SUBST_LIST.
1757
TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,CoreVideo -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement -Wl,-framework,CoreServices -Wl,-framework,ApplicationServices -Wl,-framework,AppKit'
1758
TK_CFLAGS=""
1759
CFLAGS="$CFLAGS $TK_CFLAGS"
1760
CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1761
MOZ_USER_DIR="Mozilla"
1762
MOZ_FS_LAYOUT=bundle
1763
;;
1764
1765
uikit)
1766
LDFLAGS="$LDFLAGS -framework UIKit"
1767
TK_CFLAGS=""
1768
TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreGraphics -Wl,-framework,CoreText -Wl,-framework,AVFoundation -Wl,-framework,AudioToolbox -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo -Wl,-framework,OpenGLES -Wl,-framework,QuartzCore'
1769
CFLAGS="$CFLAGS $TK_CFLAGS"
1770
CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1771
MOZ_USER_DIR="Mozilla"
1772
MOZ_FS_LAYOUT=bundle
1773
;;
1774
1775
esac
1776
1777
if test "$OS_TARGET" = Darwin; then
1778
LDFLAGS="$LDFLAGS -lobjc"
1779
fi
1780
1781
dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1782
dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1783
case "$MOZ_WIDGET_TOOLKIT" in
1784
gtk*)
1785
MOZ_ENABLE_GTK=1
1786
;;
1787
esac
1788
1789
if test "$COMPILE_ENVIRONMENT"; then
1790
if test "$MOZ_WIDGET_TOOLKIT" = gtk3; then
1791
PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 gio-unix-2.0 $GDK_PACKAGES)
1792
MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1793
TK_CFLAGS=$MOZ_GTK3_CFLAGS
1794
TK_LIBS=$MOZ_GTK3_LIBS
1795
dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1796
dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1797
AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1798
GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
1799
fi
1800
if test "$MOZ_ENABLE_GTK"; then
1801
if test "$MOZ_X11"; then
1802
GDK_PACKAGES=gdk-x11-2.0
1803
fi
1804
AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1805
AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1806
1807
PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 gio-unix-2.0 $GDK_PACKAGES)
1808
MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1809
fi
1810
fi # COMPILE_ENVIRONMENT
1811
1812
AC_SUBST(MOZ_FS_LAYOUT)
1813
1814
dnl ========================================================
1815
dnl = startup-notification support module
1816
dnl ========================================================
1817
1818
if test "$MOZ_ENABLE_GTK"
1819
then
1820
MOZ_ENABLE_STARTUP_NOTIFICATION=
1821
1822
MOZ_ARG_ENABLE_BOOL(startup-notification,
1823
[ --enable-startup-notification
1824
Enable startup-notification support (default: disabled) ],
1825
MOZ_ENABLE_STARTUP_NOTIFICATION=force,
1826
MOZ_ENABLE_STARTUP_NOTIFICATION=)
1827
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
1828
then
1829
PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
1830
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
1831
[MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
1832
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
1833
then
1834
AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
1835
fi
1836
MOZ_ENABLE_STARTUP_NOTIFICATION=
1837
])
1838
fi
1839
1840
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
1841
AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
1842
fi
1843
1844
TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
1845
fi
1846
AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
1847
1848
AC_SUBST_LIST(TK_CFLAGS)
1849
AC_SUBST_LIST(TK_LIBS)
1850
1851
AC_SUBST(MOC)
1852
AC_SUBST(RCC)
1853
1854
dnl ========================================================
1855
dnl =
1856
dnl = Components & Features
1857
dnl =
1858
dnl ========================================================
1859
MOZ_ARG_HEADER(Components and Features)
1860
1861
AC_SUBST(MOZ_OFFICIAL_BRANDING)
1862
if test -n "$MOZ_OFFICIAL_BRANDING"; then
1863
if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1864
AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1865
else
1866
MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1867
AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1868
fi
1869
fi
1870
1871
MOZ_ARG_WITH_STRING(branding,
1872
[ --with-branding=dir Use branding from the specified directory.],
1873
MOZ_BRANDING_DIRECTORY=$withval)
1874
1875
REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1876
if test -z "$REAL_BRANDING_DIRECTORY"; then
1877
REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1878
fi
1879
1880
if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1881
. "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1882
elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1883
. "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"
1884
fi
1885
1886
AC_SUBST(MOZ_BRANDING_DIRECTORY)
1887
1888
dnl ========================================================
1889
dnl = Distribution ID
1890
dnl ========================================================
1891
MOZ_ARG_WITH_STRING(distribution-id,
1892
[ --with-distribution-id=ID
1893
Set distribution-specific id (default=org.mozilla)],
1894
[ val=`echo $withval`
1895
MOZ_DISTRIBUTION_ID="$val"])
1896
1897
if test -z "$MOZ_DISTRIBUTION_ID"; then
1898
MOZ_DISTRIBUTION_ID="org.mozilla"
1899
fi
1900
1901
AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1902
AC_SUBST(MOZ_DISTRIBUTION_ID)
1903
1904
dnl ========================================================
1905
dnl = libproxy support
1906
dnl ========================================================
1907
1908
if test "$MOZ_ENABLE_GTK"
1909
then
1910
MOZ_ENABLE_LIBPROXY=
1911
1912
MOZ_ARG_ENABLE_BOOL(libproxy,
1913
[ --enable-libproxy Enable libproxy support ],
1914
MOZ_ENABLE_LIBPROXY=1,
1915
MOZ_ENABLE_LIBPROXY=)
1916
1917
if test "$MOZ_ENABLE_LIBPROXY"
1918
then
1919
PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1920
AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1921
fi
1922
fi
1923
AC_SUBST(MOZ_ENABLE_LIBPROXY)
1924
1925
dnl ========================================================
1926
dnl = dbus support
1927
dnl ========================================================
1928
1929
if test "$MOZ_ENABLE_GTK"
1930
then
1931
MOZ_ENABLE_DBUS=1
1932
1933
MOZ_ARG_DISABLE_BOOL(dbus,
1934
[ --disable-dbus Disable dbus support ],
1935
MOZ_ENABLE_DBUS=,
1936
MOZ_ENABLE_DBUS=1)
1937
1938
if test "$MOZ_ENABLE_DBUS"
1939
then
1940
PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1941
PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1942
AC_DEFINE(MOZ_ENABLE_DBUS)
1943
fi
1944
fi
1945
AC_SUBST(MOZ_ENABLE_DBUS)
1946
1947
dnl =========================================================
1948
dnl = Whether to exclude hyphenations files in the build
1949
dnl =========================================================
1950
if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then
1951
AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
1952
fi
1953
1954
AC_TRY_COMPILE([#include <linux/ethtool.h>],
1955
[ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1956
MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1957
1958
AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1959
1960
if test -n "$MOZ_WEBRTC"; then
1961
if test -n "$MOZ_X11"; then
1962
MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1963
fi
1964
fi
1965
1966
AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1967
1968
dnl ========================================================
1969
dnl = Apple platform decoder support
1970
dnl ========================================================
1971
if test "$COMPILE_ENVIRONMENT"; then
1972
if test -n "$MOZ_APPLEMEDIA"; then
1973
# hack in frameworks for fmp4 - see bug 1029974
1974
# We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1975
LDFLAGS="$LDFLAGS -framework AudioToolbox"
1976
dnl Verify CoreMedia is available.
1977
AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1978
[AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1979
fi
1980
fi # COMPILE_ENVIRONMENT
1981
1982
dnl ========================================================
1983
dnl = Handle dependent MEDIA defines
1984
dnl ========================================================
1985
1986
MOZ_WEBM_ENCODER=1
1987
AC_DEFINE(MOZ_WEBM_ENCODER)
1988
AC_SUBST(MOZ_WEBM_ENCODER)
1989
1990
dnl ========================================================
1991
dnl NegotiateAuth
1992
dnl ========================================================
1993
1994
MOZ_ARG_DISABLE_BOOL(negotiateauth,
1995
[ --disable-negotiateauth Disable GSS-API negotiation ],
1996
MOZ_AUTH_EXTENSION=,
1997
MOZ_AUTH_EXTENSION=1 )
1998
1999
if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then
2000
AC_MSG_ERROR([negotiateauth is not supported on iOS.])
2001
fi
2002
2003
dnl ========================================================
2004
dnl Pref extensions (autoconfig)
2005
dnl ========================================================
2006
MOZ_ARG_DISABLE_BOOL(pref-extensions,
2007
[ --disable-pref-extensions
2008
Disable pref extensions such as autoconfig],
2009
MOZ_PREF_EXTENSIONS=,
2010
MOZ_PREF_EXTENSIONS=1 )
2011
2012
dnl ========================================================
2013
dnl Searching of system directories for extensions.
2014
dnl Note: this switch is meant to be used for test builds
2015
dnl whose behavior should not depend on what happens to be
2016
dnl installed on the local machine.
2017
dnl ========================================================
2018
MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
2019
[ --disable-system-extension-dirs
2020
Disable searching system- and account-global
2021
directories for extensions of any kind; use
2022
only profile-specific extension directories],
2023
ENABLE_SYSTEM_EXTENSION_DIRS=,
2024
ENABLE_SYSTEM_EXTENSION_DIRS=1 )
2025
if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
2026
AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
2027
fi
2028
2029
dnl ========================================================
2030
dnl = Universalchardet
2031
dnl ========================================================
2032
MOZ_ARG_DISABLE_BOOL(universalchardet,
2033
[ --disable-universalchardet
2034
Disable universal encoding detection],
2035
MOZ_UNIVERSALCHARDET=,
2036
MOZ_UNIVERSALCHARDET=1 )
2037
2038
dnl ========================================================
2039
dnl Gamepad support
2040
dnl ========================================================
2041
2042
if test "$COMPILE_ENVIRONMENT" ; then
2043
2044
dnl Moved gamepad platform check to moz.build, linux header check still needed here.
2045
if test "$OS_TARGET" = "Linux"; then
2046
MOZ_CHECK_HEADER([linux/joystick.h])
2047
if test "$ac_cv_header_linux_joystick_h" != "yes"; then
2048
AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
2049
fi
2050
fi
2051
2052
fi # COMPILE_ENVIRONMENT
2053
2054
2055
dnl ========================================================
2056
dnl = Breakpad crash reporting (on by default on supported platforms)
2057
dnl ========================================================
2058
2059
case $target in
2060
i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
2061
MOZ_CRASHREPORTER=1
2062
;;
2063
i?86-apple-darwin*|x86_64-apple-darwin*)
2064
if test -z "$MOZ_IOS"; then
2065
MOZ_CRASHREPORTER=1
2066
fi
2067
;;
2068
*-android*|*-linuxandroid*)
2069
dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
2070
dnl be before Linux condition
2071
MOZ_CRASHREPORTER=1
2072
;;
2073
i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
2074
if test "$MOZ_ENABLE_GTK"; then
2075
MOZ_CRASHREPORTER=1
2076
fi
2077
;;
2078
esac
2079
2080
MOZ_ARG_DISABLE_BOOL(crashreporter,
2081
[ --disable-crashreporter Disable breakpad crash reporting],
2082
[MOZ_CRASHREPORTER=],
2083
[MOZ_CRASHREPORTER=F # Force enable breakpad])
2084
2085
if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin"; then
2086
if test "$MOZ_CRASHREPORTER" = F; then
2087
AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
2088
fi
2089
MOZ_CRASHREPORTER=
2090
fi
2091
2092
if test -n "$MOZ_CRASHREPORTER"; then
2093
AC_DEFINE(MOZ_CRASHREPORTER)
2094
2095
if test "$OS_TARGET" = "Linux" && \
2096
test -z "$SKIP_LIBRARY_CHECKS"; then
2097
PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
2098
fi
2099
2100
if test "$OS_ARCH" = "WINNT"; then
2101
if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
2102
MOZ_CRASHREPORTER_INJECTOR=1
2103
AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
2104
fi
2105
fi
2106
fi
2107
2108
dnl ========================================================
2109
dnl = Enable compilation of specific extension modules
2110
dnl ========================================================
2111
2112
MOZ_ARG_ENABLE_STRING(extensions,
2113
[ --enable-extensions Enable extensions],
2114
[ for option in `echo $enableval | sed 's/,/ /g'`; do
2115
if test "$option" = "yes" -o "$option" = "all"; then
2116
AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
2117
elif test "$option" = "no" -o "$option" = "none"; then
2118
MOZ_EXTENSIONS=""
2119
elif test "$option" = "default"; then
2120
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
2121
elif test `echo "$option" | grep -c \^-` != 0; then
2122
option=`echo $option | sed 's/^-//'`
2123
MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
2124
else
2125
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
2126
fi
2127
done],
2128
MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
2129
2130
dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
2131
dnl when trying to build a nonexistent extension.
2132
for extension in $MOZ_EXTENSIONS; do
2133
if test ! -d "${srcdir}/extensions/${extension}"; then
2134
AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
2135
fi
2136
done
2137
2138
if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
2139
AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
2140
fi
2141
2142
# Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
2143
# "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
2144
if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
2145
MOZ_ENABLE_CAIRO_FT=1
2146
FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2147
CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
2148
AC_SUBST_LIST(CAIRO_FT_CFLAGS)
2149
fi
2150
2151
AC_CHECK_PROGS(WGET, wget, "")
2152
AC_SUBST(WGET)
2153
2154
dnl ========================================================
2155
dnl Enable building the signmar program.
2156
dnl This option is much different than the --enable-verify-mar option.
2157
dnl --enable-verify-mar is for enabling the verification check on MAR
2158
dnl files in the updater. The --enable-signmar option is for building
2159
dnl the signmar program.
2160
dnl ========================================================
2161
2162
MOZ_ARG_ENABLE_BOOL(signmar,
2163
[ --enable-signmar Enable building the signmar program],
2164
MOZ_ENABLE_SIGNMAR=1,
2165
MOZ_ENABLE_SIGNMAR= )
2166
2167
if test -n "$MOZ_ENABLE_SIGNMAR"; then
2168
if test -z "$COMPILE_ENVIRONMENT" ; then
2169
AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment])
2170
MOZ_ENABLE_SIGNMAR=
2171
else
2172
AC_DEFINE(MOZ_ENABLE_SIGNMAR)
2173
fi
2174
fi
2175
2176
dnl ========================================================
2177
dnl Updater
2178
dnl ========================================================
2179
2180
if test "$MOZ_IOS"; then
2181
MOZ_UPDATER=
2182
fi
2183
2184
MOZ_ARG_DISABLE_BOOL(updater,
2185
[ --disable-updater Disable building of updater],
2186
MOZ_UPDATER=,
2187
MOZ_UPDATER=1 )
2188
2189
if test -n "$MOZ_UPDATER"; then
2190
AC_DEFINE(MOZ_UPDATER)
2191
fi
2192
2193
dnl ========================================================
2194
dnl parental controls (for Windows Vista)
2195
dnl ========================================================
2196
MOZ_ARG_DISABLE_BOOL(parental-controls,
2197
[ --disable-parental-controls
2198
Do not build parental controls],
2199
MOZ_DISABLE_PARENTAL_CONTROLS=1,
2200
MOZ_DISABLE_PARENTAL_CONTROLS=)
2201
if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
2202
AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
2203
fi
2204
2205
AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
2206
2207
dnl ========================================================
2208
dnl = Disable smartcard support
2209
dnl ========================================================
2210
if test -n "$MOZ_NO_SMART_CARDS"; then
2211
AC_DEFINE(MOZ_NO_SMART_CARDS)
2212
fi
2213
AC_SUBST(MOZ_NO_SMART_CARDS)
2214
2215
dnl ========================================================
2216
dnl = Sandboxing support
2217
dnl ========================================================
2218
if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
2219
# Bug 1182565: TSan conflicts with sandboxing on Linux.
2220
# Bug 1287971: LSan also conflicts with sandboxing on Linux.
2221
case $OS_TARGET in
2222
Linux|Android)
2223
MOZ_SANDBOX=
2224
;;
2225
esac
2226
fi
2227
2228
MOZ_ARG_DISABLE_BOOL(sandbox,
2229
[ --disable-sandbox Disable sandboxing support],
2230
MOZ_SANDBOX=,
2231
MOZ_SANDBOX=1)
2232
2233
case "$OS_TARGET" in
2234
WINNT|Darwin)
2235
;;
2236
Linux)
2237
case $CPU_ARCH in
2238
x86_64|x86)
2239
;;
2240
# Linux sandbox is only available on x86 and x86_64.
2241
*)
2242
MOZ_SANDBOX=
2243
;;
2244
esac
2245
;;
2246
*)
2247
# Only enable the sandbox by default on Linux, macOS, and Windows
2248
MOZ_SANDBOX=
2249
;;
2250
esac
2251
2252
if test -n "$MOZ_SANDBOX"; then
2253
AC_DEFINE(MOZ_SANDBOX)
2254
fi
2255
2256
AC_SUBST(MOZ_SANDBOX)
2257
2258
2259
dnl ========================================================
2260
dnl =
2261
dnl = Module specific options
2262
dnl =
2263
dnl ========================================================
2264
MOZ_ARG_HEADER(Individual module options)
2265
2266
dnl ========================================================
2267
dnl Check for sqlite
2268
dnl ========================================================
2269
2270
MOZ_SYSTEM_SQLITE=
2271
MOZ_ARG_ENABLE_BOOL(system-sqlite,
2272
[ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
2273
MOZ_SYSTEM_SQLITE=1,
2274
MOZ_SYSTEM_SQLITE= )
2275
2276
if test -n "$MOZ_SYSTEM_SQLITE"
2277
then
2278
dnl ============================
2279
dnl === SQLite Version check ===
2280
dnl ============================
2281
dnl Check to see if the system SQLite package is new enough.
2282
PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
2283
else
2284
dnl ==============================
2285
dnl === SQLite fdatasync check ===
2286
dnl ==============================
2287
dnl Check to see if fdatasync is available
2288
AC_CHECK_FUNC(fdatasync)
2289
fi
2290
2291
if test -n "$MOZ_SYSTEM_SQLITE"; then
2292
AC_DEFINE(MOZ_SYSTEM_SQLITE)
2293
fi
2294
AC_SUBST(MOZ_SYSTEM_SQLITE)
2295
2296
dnl ========================================================
2297
dnl = Disable zipwriter
2298
dnl ========================================================
2299
MOZ_ARG_DISABLE_BOOL(zipwriter,
2300
[ --disable-zipwriter Disable zipwriter component],
2301
MOZ_ZIPWRITER=,
2302
MOZ_ZIPWRITER=1 )
2303
AC_SUBST(MOZ_ZIPWRITER)
2304
2305
dnl ========================================================
2306
dnl =
2307
dnl = Feature options that require extra sources to be pulled
2308
dnl =
2309
dnl ========================================================
2310
dnl MOZ_ARG_HEADER(Features that require extra sources)
2311
2312
dnl ========================================================
2313
dnl =
2314
dnl = Runtime debugging and Optimization Options
2315
dnl =
2316
dnl ========================================================
2317
MOZ_ARG_HEADER(Runtime debugging and Optimizations)
2318
2319
dnl ========================================================
2320
dnl enable mobile optimizations
2321
dnl ========================================================
2322
MOZ_ARG_ENABLE_BOOL(mobile-optimize,
2323
[ --enable-mobile-optimize
2324
Enable mobile optimizations],
2325
MOZ_GFX_OPTIMIZE_MOBILE=1)
2326
2327
AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
2328
2329
if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
2330
# We ignore paint will resample on mobile for performance.
2331
# We may want to revisit this later.
2332
MOZ_IGNORE_PAINT_WILL_RESAMPLE=1
2333
2334
AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
2335
AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE)
2336
fi
2337
2338
dnl ========================================================
2339
dnl = Enable code optimization. ON by default.
2340
dnl ========================================================
2341
2342
# Use value from moz.configure if one is defined. Else use our computed
2343
# value.
2344
if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
2345
MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2346
fi
2347
2348
if test "$COMPILE_ENVIRONMENT"; then
2349
if test -n "$MOZ_OPTIMIZE"; then
2350
AC_MSG_CHECKING([for valid C compiler optimization flags])
2351
_SAVE_CFLAGS=$CFLAGS
2352
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2353
AC_TRY_COMPILE([#include <stdio.h>],
2354
[printf("Hello World\n");],
2355
_results=yes,
2356
_results=no)
2357
AC_MSG_RESULT([$_results])
2358
if test "$_results" = "no"; then
2359
AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2360
fi
2361
CFLAGS=$_SAVE_CFLAGS
2362
if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2363
# When using llvm-based LTO, non numeric optimization levels are
2364
# not supported by the linker, so force the linker to use -O2 (
2365
# which doesn't influence the level compilation units are actually
2366
# compiled at).
2367
case " $MOZ_OPTIMIZE_FLAGS " in
2368
*\ -Os\ *|*\ -Oz\ *)
2369
MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2370
;;
2371
esac
2372
fi
2373
fi
2374
fi # COMPILE_ENVIRONMENT
2375
2376
AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2377
AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2378
AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2379
2380
dnl ========================================================
2381
dnl = Disable treating compiler warnings as errors
2382
dnl ========================================================
2383
if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
2384
WARNINGS_AS_ERRORS=''
2385
fi
2386
2387
dnl ========================================================
2388
dnl = Enable runtime logging
2389
dnl ========================================================
2390
AC_DEFINE(MOZ_LOGGING)
2391
AC_DEFINE(FORCE_PR_LOG)
2392
2393
dnl ========================================================
2394
dnl = This will enable logging of addref, release, ctor, dtor.
2395
dnl ========================================================
2396
_ENABLE_LOGREFCNT=42
2397
MOZ_ARG_ENABLE_BOOL(logrefcnt,
2398
[ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2399
_ENABLE_LOGREFCNT=1,
2400
_ENABLE_LOGREFCNT= )
2401
if test "$_ENABLE_LOGREFCNT" = "1"; then
2402
AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2403
elif test -z "$_ENABLE_LOGREFCNT"; then
2404
AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2405
fi
2406
2407
dnl ========================================================
2408
dnl moz_dump_painting
2409
dnl ========================================================
2410
MOZ_ARG_ENABLE_BOOL(dump-painting,
2411
[ --enable-dump-painting Enable paint debugging.],
2412
MOZ_DUMP_PAINTING=1,
2413
MOZ_DUMP_PAINTING= )
2414
if test -n "$MOZ_DUMP_PAINTING"; then
2415
AC_DEFINE(MOZ_DUMP_PAINTING)
2416
AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2417
fi
2418
if test -n "$MOZ_DEBUG"; then
2419
AC_DEFINE(MOZ_DUMP_PAINTING)
2420
fi
2421
2422
case "${OS_TARGET}" in
2423
Android|WINNT|Darwin)
2424
MOZ_GLUE_IN_PROGRAM=
2425
;;
2426
*)
2427
dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2428
MOZ_GLUE_IN_PROGRAM=1
2429
AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2430
;;
2431
esac
2432
2433
dnl ========================================================
2434
dnl = Jemalloc build setup
2435
dnl ========================================================
2436
if test -z "$MOZ_MEMORY"; then
2437
case "${target}" in
2438
*-mingw*)
2439
if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2440
AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
2441
fi
2442
;;
2443
esac
2444
else
2445
dnl The generic feature tests that determine how to compute ncpus are long and
2446
dnl complicated. Therefore, simply define special cpp variables for the
2447
dnl platforms we have special knowledge of.
2448
case "${target}" in
2449
*-mingw*)
2450
export MOZ_NO_DEBUG_RTL=1
2451
;;
2452
esac
2453
fi # MOZ_MEMORY
2454
AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2455
2456
dnl ========================================================
2457
dnl = Enable using the clang plugin to build
2458
dnl ========================================================
2459
2460
if test -n "$COMPILE_ENVIRONMENT"; then
2461
MOZ_CONFIG_CLANG_PLUGIN
2462
fi # COMPILE_ENVIRONMENT
2463
2464
dnl ========================================================
2465
dnl = Enable stripping of libs & executables
2466
dnl ========================================================
2467
MOZ_ARG_ENABLE_BOOL(strip,
2468
[ --enable-strip Enable stripping of libs & executables ],
2469
ENABLE_STRIP=1,
2470
ENABLE_STRIP= )
2471
2472
dnl ========================================================
2473
dnl = Enable stripping of libs & executables when packaging
2474
dnl ========================================================
2475
MOZ_ARG_ENABLE_BOOL(install-strip,