configure.ac 138 KB
Newer Older
Sam Hocevar's avatar
   
Sam Hocevar committed
1
dnl Autoconf settings for vlc
2

3
AC_COPYRIGHT([Copyright 1999-2021 VLC authors and VideoLAN])
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
4

5
AC_INIT([vlc], [4.0.0-dev])
6
VERSION_MAJOR=4
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
7
VERSION_MINOR=0
8
9
VERSION_REVISION=0
VERSION_EXTRA=0
10
VERSION_DEV=dev
11

12
PKGDIR="vlc"
13
AC_SUBST([PKGDIR])
14

15
CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16
CODENAME="Otto Chriek"
17
COPYRIGHT_YEARS="1996-2021"
18

19
20
21
22
AC_CONFIG_SRCDIR([src/libvlc.c])
AC_CONFIG_AUX_DIR([autotools])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_LIBOBJ_DIR([compat])
23
AC_CANONICAL_BUILD
24
AC_CANONICAL_HOST
impulze's avatar
impulze committed
25
AC_PRESERVE_HELP_ORDER
26

27
AM_INIT_AUTOMAKE([tar-ustar color-tests foreign])
28
AC_CONFIG_HEADERS([config.h])
29

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
30
AM_SILENT_RULES([yes])
31
AM_MAINTAINER_MODE([enable])
32

Sam Hocevar's avatar
Sam Hocevar committed
33
dnl
34
dnl Check for tools
Sam Hocevar's avatar
Sam Hocevar committed
35
dnl
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
36
AC_PROG_CC
37
AC_USE_SYSTEM_EXTENSIONS
38
VLC_PROG_CC_C11
39
40
41
42
43
44
AH_VERBATIM([FORTIFY_SOURCE],
  [/* Enable compile-time and run-time bounds-checking, and some warnings,
   without upsetting glibc 2.15+ or toolchains predefining _FORTIFY_SOURCE */
#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
# define _FORTIFY_SOURCE 2
#endif])
45
46
AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
47
AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
48

49
AC_PROG_CXX
50
AC_PROG_CPP
51
52
AC_PROG_OBJC
AC_PROG_EGREP
53
54
AC_PROG_MAKE_SET
AC_PROG_INSTALL
55
AM_PROG_AS
56
AC_PROG_LEX([noyywrap])
57
AC_PROG_YACC
58

59
AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
60
AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
61
AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
62
AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
63
AS_IF([test "$BUILDCC" = "false"], [
64
65
  AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
])
66

67
68
69
dnl Check for compiler properties
AC_C_CONST
AC_C_INLINE
70
AC_C_RESTRICT
71
AX_CXX_COMPILE_STDCXX_14([noext], [mandatory])
72

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
dnl Check the compiler supports atomics in C
AC_MSG_CHECKING([C atomics])
VLC_SAVE_FLAGS
ATOMIC_LIB=""
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdatomic.h>],[
 atomic_uintmax_t test;
 atomic_init(&test, 0);
 atomic_fetch_add_explicit(&test, 2u, memory_order_relaxed);
])], [AC_MSG_RESULT([built-in])], [
  LDFLAGS="$LDFLAGS -latomic"
  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdatomic.h>],[
atomic_uintmax_t test;
atomic_init(&test, 0);
atomic_fetch_add_explicit(&test, 2u, memory_order_relaxed);
])],[
    AC_MSG_RESULT([using -latomic])
    ATOMIC_LIB="-latomic"
  ],[
  AC_MSG_ERROR([VLC requires atomics support])
  ])
])
VLC_RESTORE_FLAGS
AC_SUBST([ATOMIC_LIB])

impulze's avatar
impulze committed
97
98
99
dnl Extend the --help string at the current spot.
AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])

100
dnl Allow binary package maintainer to pass a custom string to avoid
101
dnl cache problem
102
AC_ARG_WITH([binary-version],
103
104
    AS_HELP_STRING([--with-binary-version=STRING],
         [To avoid plugins cache problem between binary version]),[],[])
105
AS_IF([test -n "${with_binary_version}"],[
106
107
108
    AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
         [Binary specific version])
])
109

110
dnl Prevent clang from accepting unknown flags with a mere warning
111
112
113
AX_CHECK_COMPILE_FLAG([-Werror=invalid-command-line-argument], [
  AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [CFLAGS])
  AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [CXXFLAGS])
114
  AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [OBJCFLAGS])
115
116
117
118
])
AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option], [
  AX_APPEND_FLAG([-Werror=unknown-warning-option], [CFLAGS])
  AX_APPEND_FLAG([-Werror=unknown-warning-option], [CXXFLAGS])
119
  AX_APPEND_FLAG([-Werror=unknown-warning-option], [OBJCFLAGS])
120
])
121

122
123
124
125
126
127
128
dnl Some Qt version are generating tons of warning that cannot be
dnl avoided so mute them...
AX_CHECK_COMPILE_FLAG([-Wno-deprecated-copy], [
  VLC_ADD_CXXFLAGS([qt],[-Wno-deprecated-copy])
])


gbazin's avatar
   
gbazin committed
129
130
131
dnl
dnl  Check the operating system
dnl
132
HAVE_WIN64="0"
133
134
HAVE_IOS="0"
HAVE_OSX="0"
135
HAVE_TVOS="0"
Luca Barbato's avatar
Luca Barbato committed
136

137
138
139
140
141
142
143
144
145
146
147
148
149
dnl  Set x86 asm flags and defines
X86ASMFLAGS=""
case "${host_cpu}" in
    i?86)
    X86ASMFLAGS="-f elf32"
    X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
        ;;
    x86_64)
    X86ASMFLAGS="-f elf64"
    X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
        ;;
esac

150
case "${host_os}" in
Sam Hocevar's avatar
Sam Hocevar committed
151
  "")
152
153
    SYS=unknown
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
154
  linux*)
155
    SYS=linux
156
    CFLAGS="${CFLAGS} -pthread"
157
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
158
  bsdi*)
159
    SYS=bsdi
160
    CFLAGS="${CFLAGS} -pthread"
161
    ;;
162
163
  freebsd*)
    SYS=freebsd
164
    CFLAGS="${CFLAGS} -pthread"
165
166
    CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
    LDFLAGS="${LDFLAGS} -L/usr/local/lib"
167
    ac_cv_ld_z_defs=no
168
169
170
171
172
173
174
175
176
177
178
    ;;
  openbsd*)
    SYS=openbsd
    CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
    LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
    ;;
  netbsd*)
    SYS=netbsd
    ;;
  dragonfly*)
    SYS=dragonfly
179
    ;;
180
  darwin*)
181
182
    SYS=darwin

183
    dnl Work around an Xcode 11 bug, fixed in Xcode 11.3.1
184
185
186
    AX_APPEND_FLAG([-fno-stack-check], [CFLAGS])
    AX_APPEND_FLAG([-fno-stack-check], [CXXFLAGS])
    AX_APPEND_FLAG([-fno-stack-check], [OBJCFLAGS])
187

188
189
    case "${host_cpu}" in
      i?86)
190
        X86ASMFLAGS="-f macho32"
191
        AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
192
      ;;
193
      x86_64)
194
        X86ASMFLAGS="-f macho64"
195
        AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
196
      ;;
197
198
      arm*)
        ac_cv_c_bigendian="no"
199
        ac_cv_c_attribute_packed="no"
200
      ;;
201
202
    esac

203
    AX_APPEND_FLAG([-D_INTL_REDIRECT_MACROS], [CPPFLAGS])
204
    AX_APPEND_FLAG([-stdlib=libc++], [CXXFLAGS])
205
206
207
    AX_APPEND_FLAG([-Werror=partial-availability], [OBJCFLAGS])
    AX_APPEND_FLAG([-Wl,-headerpad_max_install_names], [LDFLAGS])

208
    VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
209
    VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation])
210

211
212
213
214
215
    AC_EGREP_CPP(yes,
            [#import <TargetConditionals.h>
             #if TARGET_OS_IPHONE
             yes
             #endif],
216
217
             [HAVE_IOS="1"
             ac_cv_func_wordexp=no],
218
219
             [HAVE_OSX="1"])

220
221
222
223
224
225
226
227
    AC_EGREP_CPP(yes,
            [#import <TargetConditionals.h>
             #if TARGET_OS_TV
             yes
             #endif],
             [HAVE_TVOS="1"
             HAVE_IOS="0"
             HAVE_OSX="0"
228
             ac_cv_func_fork=no
229
230
             ],)

231
232
    AS_IF([test "${HAVE_OSX}" = "1"],[VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreServices])])

233
    dnl
234
    dnl  Handle Mac OS X SDK flags
235
236
    dnl
    AC_ARG_WITH(macosx-sdk,
237
238
      AS_HELP_STRING([--with-macosx-sdk=DIR],
        [compile using the SDK in DIR]))
239
240
241
242
243
244
245
246
    if test "${with_macosx_sdk}" != "" ; then
        test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
        CPP="${CPP} -isysroot ${with_macosx_sdk}"
        CC="${CC} -isysroot ${with_macosx_sdk}"
        CXX="${CXX} -isysroot ${with_macosx_sdk}"
        OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
        LD="${LD} -syslibroot ${with_macosx_sdk}"
    fi
247
    AC_ARG_WITH(macosx-version-min,
248
249
      AS_HELP_STRING([--with-macosx-version-min=VERSION],
        [compile for Mac OS X VERSION and above]))
250
251
252
253
254
255
    if test "${with_macosx_version_min}" != "" ; then
        CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
        CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
        CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
        OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
        LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
256
    fi
257
    ;;
258
  *mingw32* | *cygwin* | *wince* | *mingwce*)
259
260
261
    dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
    dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
    CXXFLAGS="${CXXFLAGS} -static-libgcc"
262
    AC_CHECK_TOOL(WINDRES, windres, :)
263
    AC_CHECK_TOOL(OBJCOPY, objcopy, :)
264
265
266
    AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
      [[#ifdef _WIN32_WINNT
       # error _WIN32_WINNT already defined
267
268
269
270
271
       #else
       # include <windows.h>
       # if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0601
       #  error _WIN32_WINNT toolchain default high enough
       # endif
272
273
274
       #endif
      ]],[[;]])
    ],[
Marvin Scholz's avatar
Marvin Scholz committed
275
      AC_DEFINE([_WIN32_WINNT], [0x0601], [Define to '0x0601' for Windows 7 APIs.])
276
    ])
277
278
279
280
281
282
283
284
285
286
287
288
    AC_MSG_CHECKING([if libsynchronization is needed])
    AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
      [[#if _WIN32_WINNT >= 0x0602
       # error building for Win8+ and above
       #endif
      ]],[[;]])
    ],[
      AC_MSG_RESULT([no])
    ],[
      AC_MSG_RESULT([yes])
      VLC_ADD_LIBS([libvlccore], [-lsynchronization])
    ])
Marvin Scholz's avatar
Marvin Scholz committed
289
    AC_DEFINE([_WIN32_IE], [0x0600], [Define to '0x0600' for IE 6.0 (and shell) APIs.])
290
    AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
291
292
293
294
295
296
297
298
    AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
    AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
    AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
    AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
    AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
    AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
    AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
    AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
gbazin's avatar
   
gbazin committed
299

300
    case "${host_os}" in
Sam Hocevar's avatar
Sam Hocevar committed
301
      *mingw32*)
gbazin's avatar
   
gbazin committed
302
303
        SYS=mingw32
        ;;
Sam Hocevar's avatar
Sam Hocevar committed
304
      *cygwin*)
gbazin's avatar
   
gbazin committed
305
306
307
        dnl Check if we are using the mno-cygwin mode in which case we are
        dnl actually dealing with a mingw32 compiler.
        AC_EGREP_CPP(yes,
308
            [#ifdef _WIN32
gbazin's avatar
   
gbazin committed
309
310
             yes
             #endif],
311
            SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
gbazin's avatar
   
gbazin committed
312
313
314
        ;;
    esac

Sam Hocevar's avatar
Sam Hocevar committed
315
    if test "${SYS}" = "mingw32"; then
316
317
318
        # DEP, ASLR, NO SEH
        LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"

319
        AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
320
321
        ac_default_prefix="`pwd`/_win32"
        DESTDIR="`pwd`/_win32/"
322
323

        dnl
Ludovic Fauvet's avatar
Ludovic Fauvet committed
324
        dnl NSIS/MSI Installer prefix and WIN64
325
        dnl
326
        case "${host_cpu}" in
327
328
329
330
331
332
333
            aarch64)
                HAVE_WIN64="1"
                WINDOWS_ARCH="arm64"
                PROGRAMFILES="PROGRAMFILES64"
                LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
            ;;
            amd64|x86_64)
334
                HAVE_WIN64="1"
Ludovic Fauvet's avatar
Ludovic Fauvet committed
335
                WINDOWS_ARCH="x64"
336
                PROGRAMFILES="PROGRAMFILES64"
337
                LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
338
                X86ASMFLAGS="-f win64"
339
            ;;
340
341
342
343
            armv7)
                WINDOWS_ARCH="arm"
                PROGRAMFILES="PROGRAMFILES"
            ;;
344
            *)
Ludovic Fauvet's avatar
Ludovic Fauvet committed
345
                WINDOWS_ARCH="x86"
346
                PROGRAMFILES="PROGRAMFILES"
347
348
                X86ASMFLAGS="-f win32"
                X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
349
350
            ;;
        esac
351
352
        AC_SUBST([WINDOWS_ARCH])
        AC_SUBST([PROGRAMFILES])
353

gbazin's avatar
   
gbazin committed
354
    fi
355
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
356
  *nto*)
357
358
    SYS=nto
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
359
  solaris*)
360
361
    SYS=solaris
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
362
  hpux*)
363
364
    SYS=hpux
    ;;
KO Myung-Hun's avatar
KO Myung-Hun committed
365
366
  *os2*)
    SYS=os2
367
    LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
368
    AC_LIBOBJ([freeaddrinfo])
369
    AC_LIBOBJ([gai_strerror])
370
    AC_CHECK_FUNCS([if_nametoindex])
KO Myung-Hun's avatar
KO Myung-Hun committed
371
372
    X86ASMFLAGS="-f aout"
    X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0 -DPREFIX"
KO Myung-Hun's avatar
KO Myung-Hun committed
373
    ;;
Julian Scheel's avatar
Julian Scheel committed
374
375
376
  *nacl*)
    SYS=nacl
    AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
377
    AC_LIBOBJ([sigwait])
378
379
    AC_LIBOBJ([recvmsg])
    AC_LIBOBJ([sendmsg])
Julian Scheel's avatar
Julian Scheel committed
380
    ;;
Sam Hocevar's avatar
Sam Hocevar committed
381
  *)
382
    SYS="${host_os}"
383
    ;;
gbazin's avatar
   
gbazin committed
384
esac
385
386

dnl WinRT
387
AC_ARG_ENABLE([winstore_app],
388
389
390
391
392
     AS_HELP_STRING([--enable-winstore-app],
                    [Build targetted for Windows Store apps (default disabled)]))

vlc_winstore_app=0
AS_IF([test "${SYS}" = "mingw32"],[
393
  LIBCOM="-lole32"
394
395
  AS_IF([test "${enable_winstore_app}" = "yes"], [
    vlc_winstore_app=1
396
    LIBCOM=""
397
398
399
    AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
    AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
    AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
400
    LDFLAGS="${LDFLAGS} -lwindowsappcompat"
401
402
403
    VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
    AC_LIBOBJ([gai_strerror])
  ],[])
404
  AC_SUBST([LIBCOM])
405
406
407
  ])
AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])

408
409
410
411
412
413
414
415
416
417
418
419
420
vlc_build_pdb=0
AC_ARG_ENABLE([pdb],
     AS_HELP_STRING([--enable-pdb],
                    [Build PDB files for windows targets (default off)]))
AS_IF([test "${SYS}" = "mingw32"],[
  AS_IF([test "${enable_pdb}" = "yes"], [
    vlc_build_pdb=1
    AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
    AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
    LDFLAGS="${LDFLAGS} -Wl,-pdb="
  ],[])
])

421
AM_CONDITIONAL([HAVE_FREEBSD], [test "${SYS}" = "freebsd"])
422
423
AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
424

425
426
427
428
AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
429

430
431
AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
Julian Scheel's avatar
Julian Scheel committed
432

433
434
AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
435
AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
436
AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
437
AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
438

439
440
dnl Use nasm/yasm only on x86
AC_CHECK_PROGS(X86ASM, [nasm yasm])
441
AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
442
443
444
AM_COND_IF([HAVE_X86ASM], [
  AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
])
445
446
447
448
449
450

dnl  Because DOLT is not able to handle --with-pic
dnl  correctly, manually add -DPIC to the options for
dnl  nasm / yasm here.
AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])

451
452
453
AC_SUBST([X86ASMFLAGS])
AC_SUBST([X86ASMDEFS])

454
455
456
457
dnl
dnl Sadly autoconf does not think about testing foo.exe when ask to test
dnl for program foo on win32
case "${build_os}" in
458
    cygwin|msys|mingw32)
459
        ac_executable_extensions=".exe"
460
        BUILDEXEEXT=".exe"
461
    ;;
462
463
464
    os2*)
        BUILDEXEEXT=".exe"
    ;;
465
466
467
    *)
    ;;
esac
468
AC_SUBST([BUILDEXEEXT])
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484

dnl Android is linux, but a bit different
AS_IF([test "$SYS" = linux],[
    AC_MSG_CHECKING([for an Android system])
    AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
        [[#ifndef __ANDROID__
         # error Not Android
         #endif
        ]],[[;]])
    ],[
      HAVE_ANDROID="1"
      AC_MSG_RESULT([yes])
    ],[
      AC_MSG_RESULT([no])
    ])
])
485
AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
486

487
488
489
490
dnl
dnl  Check for the contrib directory
dnl
AC_ARG_WITH(contrib,
491
  AS_HELP_STRING([--with-contrib[=DIR]],
492
    [search for 3rd party libraries in DIR/include and DIR/lib])
493
)
494
495
496
497
498
499
500
501
AC_MSG_CHECKING([for 3rd party libraries path])
AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
  CONTRIB_DIR="${srcdir}/contrib/${host}"
  AS_IF([test ! -d "${CONTRIB_DIR}"], [
    echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
    CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
    AS_IF([test ! -d "${CONTRIB_DIR}"], [
      echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
502
503
      CONTRIB_DIR=""
      AC_MSG_RESULT([not found])
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
    ])
  ])
], [
  AS_IF([test "${with_contrib}" != "no"], [
    CONTRIB_DIR="${with_contrib}"
  ], [
    CONTRIB_DIR=""
    AC_MSG_RESULT([disabled])
  ])
])
AS_IF([test -n "${CONTRIB_DIR}"], [
  AS_IF([test -d "${CONTRIB_DIR}/lib"],[
    CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
  ], [
    echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
    CONTRIB_DIR=""
    AC_MSG_RESULT([not usable])
  ])

])
AS_IF([test -n "${CONTRIB_DIR}"], [
  AC_MSG_RESULT([${CONTRIB_DIR}])
  CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
  CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
  CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
529
  OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
530
531
532
533
534
535
536
537
538
  PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
  case "${build_os}" in
      mingw32)
          export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
      ;;
      *)
          export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
      ;;
  esac
539
  LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
540

541
542
  AS_IF([test -z "$LUAC"], [
    dnl Old contribs mixed cross-tools and cross-compiled executables
543
544
    AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
      LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
545
546
547
    ])

    dnl Newer contribs follow usual name space rules
548
549
    AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
      LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
550
551
    ])
  ])
552

553
554
555
556
557
558
559
560
561
  AS_IF([test "${SYS}" = "darwin"], [
    export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
    export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
  ])
], [
  AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
    AC_MSG_ERROR([Third party libraries not found!])
  ])
])
562
AC_SUBST([CONTRIB_DIR])
563

564
dnl Add extras/tools to the PATH
565
TOOLS_DIR="${srcdir}/extras/tools/build/bin"
566
567
AS_IF([test -d "${TOOLS_DIR}"], [
    TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
568
    export PATH="${TOOLS_DIR}":$PATH
569
570
])

571
dnl
572
573
574
575
dnl  Libtool
dnl  It's very bad, but our former custom system was worst
dnl  -- Courmisch
dnl
damienf's avatar
damienf committed
576
577
578
579

dnl override platform specific check for dependent libraries
dnl otherwise libtool linking of shared libraries will
dnl fail on anything other than pass_all.
damienf's avatar
damienf committed
580
581
AC_CACHE_VAL(lt_cv_deplibs_check_method,
    [lt_cv_deplibs_check_method=pass_all])
damienf's avatar
damienf committed
582

583
584
585
LT_INIT([dlopen win32-dll shared disable-static])
LT_LANG([C++])
LT_LANG([Windows Resource])
586

Luca Barbato's avatar
Luca Barbato committed
587
588
DOLT

damienf's avatar
damienf committed
589
590
lt_cv_deplibs_check_method=pass_all

591
AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
592
593
594
  AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
])

595
596
597
dnl
dnl Gettext stuff
dnl
598
AM_GNU_GETTEXT_VERSION([0.19.8])
599
AM_GNU_GETTEXT([external], [need-formatstring-macros])
600

gbazin's avatar
gbazin committed
601
602
603
dnl
dnl Iconv stuff
dnl
604
AM_ICONV
gbazin's avatar
gbazin committed
605

606
607
dnl
dnl checks for mingw
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
608
AS_IF([test "${SYS}" = "mingw32"], [
609

610
611
612
613
614
615
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
#if !defined(__MINGW32__)
# error Not compiling with mingw
#endif
    ])], [

616
dnl Check for broken versions of mingw-runtime compatability library
617
    AC_MSG_CHECKING(for broken mingw-runtime)
618
    AC_PREPROC_IFELSE([AC_LANG_SOURCE([
619
#include <_mingw.h>
620
#if defined(__MINGW64_VERSION_MAJOR)
621
622
# if __MINGW64_VERSION_MAJOR < 5
#  error Update your mingw-w64! This one is too old.
623
# endif
624
625
#else
# error You cannot compile with Mingw. Use Mingw-w64!
626
#endif
627
    ])], [
628
        AC_MSG_RESULT([ok])
629
    ], [
630
        AC_MSG_RESULT([present])
631
        AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
632
    ])
633

634
635
636
    dnl force use of mingw provided c99 *printf over msvcrt
    CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"

637
    dnl Check for the need to include the mingwex lib for mingw32
Rafaël Carré's avatar
Rafaël Carré committed
638
    VLC_SAVE_FLAGS
639
640
    AC_CHECK_LIB([mingwex], [opendir],
        AC_CHECK_LIB([mingw32], [opendir],,
641
            [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
gbazin's avatar
   
gbazin committed
642
    )
Rafaël Carré's avatar
Rafaël Carré committed
643
    VLC_RESTORE_FLAGS
644
645
646
    ], [
        AC_MSG_RESULT([Not compiling with mingw])
    ])
gbazin's avatar
   
gbazin committed
647

648
    dnl Check for fnative-struct or mms-bitfields support for mingw32
649
650
651
    AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
        AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
        AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
652
653
654
655
656
657
658
        # Check for the warning flag without "-Wno-", GCC accepts
        # -Wno-<anything> for unsupported warnings, which can trigger
        # other warnings instead.
        AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
            AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
            AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
        ])
659
660
661
662
663
664
    ], [
        AX_CHECK_COMPILE_FLAG([-fnative-struct], [
            AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
            AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
        ])
    ])
665
])
gbazin's avatar
   
gbazin committed
666

667

668
669
dnl
dnl Buggy glibc prevention. Purposedly not cached.
670
dnl See sourceware.org bugs 5058 and 5443.
671
672
673
dnl Ubuntu alone has 20 bug numbers for this...
dnl
AC_MSG_CHECKING(for buggy GNU/libc versions)
674
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
675
676
677
678
679
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
680
])], [
681
682
683
  AC_MSG_RESULT([not present])
], [
  AC_MSG_RESULT([found])
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
684
  AS_IF([test "x${enable_nls}" != "xno"], [
685
686
    AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
work-around for this. Check with your distribution vendor on how to update the
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
687
glibc run-time. Alternatively, build with --disable-nls.])
688
  ])
689
690
])

Sam Hocevar's avatar
Sam Hocevar committed
691
692
693
694
dnl Plugin compilation stuff

VLC_LIBRARY_SUFFIX

695
dnl Check for system libs needed
696
need_libc=false
697

698
dnl Check for usual libc functions
699
AC_CHECK_FUNCS([accept4 dup3 fcntl flock fstatat fstatvfs fork getmntent_r getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale pipe2 pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale wordexp])
700
AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll posix_memalign recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
701
AC_REPLACE_FUNCS([gettimeofday])
702
AC_CHECK_FUNC(fdatasync,,
703
704
  [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
])
Sam Hocevar's avatar
   
Sam Hocevar committed
705

706
707
VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])

708
dnl mingw64 implements those as static inline, not functions with C linkage
709
710
VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
711
712
VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
713

714
715
dnl C11 static_assert()
AC_MSG_CHECKING([for static_assert in assert.h])
716
717
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
static_assert(1, "The impossible happened.");
718
719
720
721
722
723
724
])], [
  AC_MSG_RESULT([yes])
  AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
], [
  AC_MSG_RESULT([no])
])

Rafaël Carré's avatar
Rafaël Carré committed
725
# Windows CE does not have strcoll()
726
727
AC_FUNC_STRCOLL

728
dnl Check for non-standard system calls
729
730
case "$SYS" in
  "linux")
731
    AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
732
    ;;
733
734
735
  "mingw32")
    AC_CHECK_FUNCS([_lock_file])
    ;;
736
esac
737

738
739
AH_BOTTOM([#include <vlc_fixups.h>])

740
741
742
743
dnl Check for struct timespec
AC_CHECK_TYPES([struct timespec],,,
[#include <time.h>])

744
745
746
747
dnl Check for max_align_t
AC_CHECK_TYPES([max_align_t],,,
[#include <stddef.h>])

748
dnl Checks for socket stuff
749
VLC_SAVE_FLAGS
750
751
752
753
754
755
756
SOCKET_LIBS=""
AC_SEARCH_LIBS(connect, [socket], [
  AS_IF([test "$ac_cv_search_connect" != "none required"], [
    SOCKET_LIBS="$ac_cv_search_connect"
  ])
], [
  AS_IF([test "${SYS}" = "mingw32"], [
757
    SOCKET_LIBS="-lws2_32 -liphlpapi"
758
759
  ])
])
760

761
AC_SEARCH_LIBS([inet_pton], [nsl], [
Fabrizio Ge's avatar
Fabrizio Ge committed
762
763
 AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
    SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
764
765
766
  ])
],, [${SOCKET_LIBS}])

767
768
LIBS="${LIBS} ${SOCKET_LIBS}"
AC_LINK_IFELSE([
769
    AC_LANG_PROGRAM([#ifdef _WIN32
770
771
        #include <ws2tcpip.h>
        #include <windows.h>
772
773
774
        # if _WIN32_WINNT < 0x600
        #  error Needs vista+
        # endif
775
        #else
776
        #include <sys/socket.h>
777
778
779
780
781
        #include <arpa/inet.h>
        #endif], [
        char dst[[sizeof(struct in_addr)]];
        inet_pton(AF_INET, "127.0.0.1", dst);
    ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
782
AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
783
AC_CHECK_FUNCS([if_nameindex])
784
VLC_RESTORE_FLAGS
785
AC_SUBST([SOCKET_LIBS])
786

787
dnl Check for socklen_t
788
AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
Rafaël Carré's avatar
Rafaël Carré committed
789
AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
790
791
ac_cv_type_socklen_t,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
792
[#include <sys/types.h>
793
#ifdef _WIN32
794
# include <winsock2.h>
795
# include <ws2tcpip.h>
796
797
#else
# include <sys/socket.h>
798
799
800
#endif]], [[socklen_t len; len = 0;]])],
ac_cv_type_socklen_t=yes,
ac_cv_type_socklen_t=no)])
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
AS_IF([test "$ac_cv_type_socklen_t" = no], [
  AC_COMPILE_IFELSE([
    AC_LANG_PROGRAM([[
#include <sys/types.h>
#ifdef _WIN32
# include <winsock2.h>
# include <ws2tcpip.h>
#else
# include <sys/socket.h>
#endif
    ]], [[
_Generic(getpeername, int (*)(int, struct sockaddr *, int *): 0);
    ]])
  ], AC_DEFINE(socklen_t, int), AC_DEFINE(socklen_t, unsigned int))
])
816

817
dnl Check for struct sockaddr_storage
Rafaël Carré's avatar
Rafaël Carré committed
818
819
AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
820
AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
821
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
822
     #if defined( _WIN32 )
823
824
825
     # include <winsock2.h>
     #else
     # include <sys/socket.h>
826
827
828
     #endif]], [[struct sockaddr_storage addr;]])],
     [ac_cv_struct_sockaddr_storage=yes],
     [ac_cv_struct_sockaddr_storage=no])])
829
AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
830
831
  AC_DEFINE(sockaddr_storage, sockaddr)
  AC_DEFINE(ss_family, sa_family)
832
])
833

834
835
836
837
838
839
840
dnl FreeBSD has a gnugetopt library for this:
GNUGETOPT_LIBS=""
AC_CHECK_FUNC(getopt_long,, [
  AC_CHECK_LIB([gnugetopt],[getopt_long], [
    GNUGETOPT_LIBS="-lgnugetopt"
  ])
])
841
AC_SUBST([GNUGETOPT_LIBS])
Sam Hocevar's avatar
   
Sam Hocevar committed
842

843
AC_CHECK_LIB([m], [cos], [
844
845
846
  LIBM="-lm"
], [
  LIBM=""
847
])
848
AC_SUBST([LIBM])
Sam Hocevar's avatar
   
Sam Hocevar committed
849

850
AC_CHECK_LIB([m], [lrintf], [
851
852
853
  AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
  VLC_ADD_LIBS([skins2],[-lm])
])
854
AC_CHECK_LIB([m], [nanf],
Thomas Guillem's avatar
Thomas Guillem committed
855
856
  AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
)
857
AC_CHECK_LIB([m], [sincos], [
858
859
860
861
  AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
], [
  AC_LIBOBJ([sincos])
])
862

863
864
865
866
867
868
869
870
871
872
873
874
875
876
AC_MSG_CHECKING([broken qsort_r prototype])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>

_Static_assert(_Generic((qsort_r),
    void (*)(void *, size_t, size_t, void *,
             int (*)(void *, const void *, const void *)) : 1, default: 0),
    "Bad prototype not matched");
])], [
  AC_MSG_RESULT([broken])
  AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
], [
  AC_MSG_RESULT([no])
])

877
878
879
880
881
882
883
884
885
886
887
AC_MSG_CHECKING([_Thread_local support])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
                   int main() {}])], [
    AC_MSG_RESULT([ok])
    AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
],[ AC_MSG_RESULT([no])])

dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
dnl check for its availability explicitely
AC_CHECK_HEADERS([threads.h])

888
889
890
891
AC_CHECK_LIB([anl],[getaddrinfo_a],[
  AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
])

Sam Hocevar's avatar
Sam Hocevar committed
892
dnl Check for dynamic plugins
893
894
LIBDL=""
have_dynamic_objects="no"
895
VLC_SAVE_FLAGS
896
AC_SEARCH_LIBS(dlsym, [dl svld], [
897
898
  AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
    LIBDL="$ac_cv_search_dlsym"
899
  ])
900
  have_dynamic_objects="yes"
901
])
902
VLC_RESTORE_FLAGS
Sam Hocevar's avatar
Sam Hocevar committed
903

904
# Windows
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
905
AS_IF([test "${SYS}" = "mingw32"], [
906
  LIBDL=""
907
  have_dynamic_objects="yes" #assume we can use shared objects
908
])
909

910
AC_ARG_WITH([libfuzzer],
911
912
    AS_HELP_STRING([--with-libfuzzer=DIR],
        [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
913
914
915
916
917
918
919
     [],
     [with_libfuzzer=no])
AS_VAR_IF(with_libfuzzer, no, [], [
    enable_shared=no
    enable_static=yes
    enable_vlc=no
])
920
AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
921

922
923
AS_IF([test "${enable_shared}" = "no"], [
  have_dynamic_objects=no
924
])
925
AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
Rafaël Carré's avatar
Rafaël Carré committed
926

927
AC_SUBST([LIBDL])
Sam Hocevar's avatar
Sam Hocevar committed
928

929
930
931
932
933
934
935
936
937
938
AS_IF([test "${SYS}" != "mingw32"], [
  AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
    AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
      LIBRT="$ac_cv_search_clock_nanosleep"
    ])
  ], [
    AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
      AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
        LIBRT="$ac_cv_search_nanosleep"
      ])
939
    ])
940
  ])
941
])
942
AC_SUBST([LIBRT])
gbazin's avatar
   
gbazin committed
943

944
945
dnl  Check for clock_* functions, needs to be done here,
dnl  after the -lrt check
946
AC_REPLACE_FUNCS([clock_gettime clock_nanosleep clock_getres])
947

948
dnl
Sam Hocevar's avatar
   
Sam Hocevar committed
949
dnl Check for headers
950
951
dnl

952
dnl  POSIX
953
AC_CHECK_HEADERS([arpa/inet.h poll.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h wordexp.h])
954
955
956
957
958
AC_CHECK_HEADERS([net/if.h], [], [],
[
#include <sys/types.h>
#include <sys/socket.h>
])
959
960
961
AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])

962
dnl  BSD
963
AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
964

965
dnl  GNU/Linux
966
AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
967

968
969
dnl  MacOS
AC_CHECK_HEADERS([xlocale.h])
Sam Hocevar's avatar
   
Sam Hocevar committed
970

971
972
973
974
975
976
977
978
979
980
dnl Check for struct pollfd
AC_CHECK_TYPES([struct pollfd],,,
[#include <sys/types.h>
#if HAVE_POLL_H
# include <poll.h>
#elif defined (_WIN32)
# include <winsock2.h>
#endif
])

981
982
983
984
985
dnl Check if C++ headers define locale_t
AC_LANG_PUSH(C++)
AC_CACHE_CHECK([if C++ headers define locale_t],
  [ac_cv_cxx_locale_t],
  [ac_cv_cxx_locale_t=no
986
987
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <locale>]], [[locale_t loc;]])],
                        [ac_cv_cxx_locale_t=yes],[])])
988
989
990
991
992
if test "${ac_cv_cxx_locale_t}" != "no"; then
  AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
fi
AC_LANG_POP(C++)

993
dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
Rafaël Carré's avatar
Rafaël Carré committed
994
AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
995
996
997
998
AC_CHECK_TYPE(ssize_t,, [
  AC_DEFINE(ssize_t, int)
])

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
999
1000
dnl It seems that autoconf detects pkg-config only during the first
dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
For faster browsing, not all history is shown. View entire blame