configure.ac 37 KB
Newer Older
1
AC_PREREQ([2.69])
2

3
dnl initialize autoconf
4
dnl when going to/from release please set the nano (fourth number) right !
5
dnl releases only do Wall, git and prerelease does Werror too
6
dnl
Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
7
AC_INIT([GStreamer],[1.12.5],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
8
AG_GST_INIT
9

10
dnl initialize automake (we require GNU make)
11
AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
12
13
14
15
16

dnl define PACKAGE_VERSION_* variables
AS_VERSION

dnl check if this is a release version
17
AS_NANO(GST_GIT="no", GST_GIT="yes")
18

19
20
21
22
dnl can autoconf find the source ?
AC_CONFIG_SRCDIR([gst/gst.c])

dnl define the output header for config
23
AC_CONFIG_HEADERS([config.h])
24

Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
25
dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
26
AM_MAINTAINER_MODE([enable])
27

28
29
30
dnl sets host_* variables
AC_CANONICAL_HOST

31
32
dnl use pretty build output by default
AM_SILENT_RULES([yes])
33

Sebastian Dröge's avatar
Sebastian Dröge committed
34
dnl GStreamer versioning, this is mostly informational
35
36
37
38
GST_VERSION_MAJOR=$PACKAGE_VERSION_MAJOR
GST_VERSION_MINOR=$PACKAGE_VERSION_MINOR
GST_VERSION_MICRO=$PACKAGE_VERSION_MICRO
GST_VERSION_NANO=$PACKAGE_VERSION_NANO
Sebastian Dröge's avatar
Sebastian Dröge committed
39
40
41
42
43
44
45
46
47
48
49
AC_SUBST(GST_VERSION_MAJOR)
AC_SUBST(GST_VERSION_MINOR)
AC_SUBST(GST_VERSION_MICRO)
AC_SUBST(GST_VERSION_NANO)

dnl our libraries and install dirs use GST_API_VERSION in the filename
dnl to allow side-by-side installation of different API versions
GST_API_VERSION=1.0
AC_SUBST(GST_API_VERSION)
AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
  [GStreamer API Version])
50
51
52
53
54
55

dnl CURRENT, REVISION, AGE
dnl - library source changed -> increment REVISION
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
dnl - interfaces added -> increment AGE
dnl - interfaces removed -> AGE = 0
56
57
58
59
60
61
62
63
dnl
dnl Keep CURRENT as MINOR * 100 + MICRO
dnl Ex : 1.0.0 => 0
dnl      1.0.3 => 3
dnl      1.1.0 => 100
dnl      1.2.5 => 205
dnl      1.10.9 (who knows) => 1009
dnl
64
dnl sets GST_LT_LDFLAGS
Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
65
AS_LIBTOOL(GST, 1205, 0, 1205)
66

67
68
69
70
dnl *** autotools stuff ****

dnl allow for different autotools
AS_AUTOTOOLS_ALTERNATE
71

72
dnl Add parameters for aclocal (keep in sync with Makefile.am)
73
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
74

75
76
dnl set up gettext
dnl the version check needs to stay here because autopoint greps for it
77
AM_GNU_GETTEXT_VERSION([0.17])
78
AM_GNU_GETTEXT([external])
Sebastian Dröge's avatar
Sebastian Dröge committed
79
AG_GST_GETTEXT([gstreamer-$GST_API_VERSION])
80

81
dnl *** check for arguments to configure ***
82

83
AG_GST_ARG_DISABLE_FATAL_WARNINGS
84
AG_GST_ARG_ENABLE_EXTRA_CHECKS
85

Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
86
dnl subsystems - can influence other decisions so needs to be high up
87
dnl we need to AM_CONDITIONAL them here for automake 1.6.x compatibility
88
AG_GST_CHECK_SUBSYSTEM_DISABLE(GST_DEBUG,[debugging subsystem])
89
AM_CONDITIONAL(GST_DISABLE_GST_DEBUG, test "x$GST_DISABLE_GST_DEBUG" = "xyes")
90
91
AG_GST_CHECK_SUBSYSTEM_DISABLE(GST_TRACER_HOOKS,[tracing subsystem hooks])
AM_CONDITIONAL(GST_DISABLE_GST_TRACER_HOOKS, test "x$GST_DISABLE_GST_TRACER_HOOKS" = "xyes")
92
AG_GST_CHECK_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
93
AM_CONDITIONAL(GST_DISABLE_PARSE, test "x$GST_DISABLE_PARSE" = "xyes")
94
95
96
97
if test "x$GST_DISABLE_PARSE" = xyes; then
  AC_DEFINE(GST_DISABLE_PARSE, 1,
    [Define if pipeline parsing code is disabled])
fi
98
99
100
101
102
103
AG_GST_CHECK_SUBSYSTEM_DISABLE(OPTION_PARSING,[option parsing when gst_init])
AM_CONDITIONAL(GST_DISABLE_OPTION_PARSING, test "x$GST_DISABLE_OPTION_PARSING" = "xyes")
if test "x$GST_DISABLE_OPTION_PARSING" = xyes; then
  AC_DEFINE(GST_DISABLE_OPTION_PARSING, 1,
    [Define if option parsing is disabled])
fi
104
AG_GST_CHECK_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
105
AM_CONDITIONAL(GST_DISABLE_REGISTRY, test "x$GST_DISABLE_REGISTRY" = "xyes")
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
106
107
108
109
110
111
112
113
dnl define a substitution to use in docs/gst/gstreamer.types
if test "x$GST_DISABLE_REGISTRY" = "xyes"
then
  GST_REGISTRY_DOC_TYPES="%"
else
  GST_REGISTRY_DOC_TYPES=
fi
AC_SUBST(GST_REGISTRY_DOC_TYPES)
114
AG_GST_CHECK_SUBSYSTEM_DISABLE(PLUGIN,[plugin])
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
115
AM_CONDITIONAL(GST_DISABLE_PLUGIN, test "x$GST_DISABLE_PLUGIN" = "xyes")
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
116

117
118
119
120
AG_GST_ARG_DEBUG
AG_GST_ARG_PROFILING
AG_GST_ARG_VALGRIND
AG_GST_ARG_GCOV
121

122
AG_GST_ARG_EXAMPLES
123

124
125
126
AG_GST_ARG_WITH_PKG_CONFIG_PATH
AG_GST_ARG_WITH_PACKAGE_NAME
AG_GST_ARG_WITH_PACKAGE_ORIGIN
127

128
129
AG_GST_PKG_CONFIG_PATH

130
131
132
133
AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
  ["${srcdir}/gstreamer.doap"],
  [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])

134
135
# We only use this when building with MSVC, which is only done with the
# alternate Meson build system files
136
137
GSTCONFIG_BUILT_WITH_MSVC=0
AC_SUBST(GSTCONFIG_BUILT_WITH_MSVC)
138

139
140
141
142
143
144
145
dnl check for bash completion
AC_ARG_WITH([bash-completion-dir],
    AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
        [Install the bash auto-completion script in this directory. @<:@default=yes@:>@]),
    [],
    [with_bash_completion_dir=yes])

146
147
148
149
150
151
152
153
154
if test "x$with_bash_completion_dir" = "xyes"
then
    extra_args=

    if test "x$prefix" != "xNONE"
    then
        extra_args="--define-variable=prefix=\"$prefix\""
    fi

155
    PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
156
157
158
159
160
161
162
163
        [
          BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"
          BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"
        ],
        [
          BASH_COMPLETION_DIR="$datadir/bash-completion/completions"
          BASH_HELPERS_DIR="$datadir/bash-completion/helpers"
        ])
164
165
166
167
168
169
170
171
172
else
    BASH_COMPLETION_DIR="$with_bash_completion_dir/completions"
    BASH_HELPERS_DIR="$with_bash_completion_dir/helpers"
fi

AC_SUBST([BASH_COMPLETION_DIR])
AC_SUBST([BASH_HELPERS_DIR])
AM_CONDITIONAL([ENABLE_BASH_COMPLETION],[test "x$with_bash_completion_dir" != "xno"])

173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
dnl build static plugins or not
AC_MSG_CHECKING([whether to build static plugins or not])
AC_ARG_ENABLE(
  static-plugins,
  AC_HELP_STRING(
    [--enable-static-plugins],
    [build static plugins @<:@default=no@:>@]),
  [AS_CASE(
    [$enableval], [no], [], [yes], [],
    [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
  [enable_static_plugins=no])
AC_MSG_RESULT([$enable_static_plugins])
if test "x$enable_static_plugins" = xyes; then
  AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
    [Define if static plugins should be built])
  GST_PLUGIN_LIBTOOLFLAGS=""
else
  GST_PLUGIN_LIBTOOLFLAGS="--tag=disable-static"
fi
AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")

195
196
197
198
199
200
dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
dnl needed only on Windows, but it doesn't hurt to have it everywhere.
if test x$enable_static = xyes -a x$enable_shared = xno; then
  GST_OBJ_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
fi

201
202
dnl building of tests
AC_ARG_ENABLE(tests,
203
  AS_HELP_STRING([--disable-tests],[disable building test apps]),
204
205
206
207
208
209
  [
    case "${enableval}" in
      yes) BUILD_TESTS=yes ;;
      no)  BUILD_TESTS=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
    esac
210
  ],
211
212
213
214
215
[BUILD_TESTS=yes]) dnl Default value
AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")

dnl tests known to fail
AC_ARG_ENABLE(failing-tests,
216
  AS_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
217
218
219
220
221
222
  [
    case "${enableval}" in
      yes) BUILD_FAILING_TESTS=yes ;;
      no)  BUILD_FAILING_TESTS=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
    esac
223
  ],
224
225
226
227
228
229
  [BUILD_FAILING_TESTS=no]) dnl Default value
AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
if test x$BUILD_FAILING_TESTS = xyes; then
  AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
else
  AC_MSG_WARN([Sissy ! By asking to not build the tests known to fail, you hereby waive your right to customer support.  If you do not agree with this EULA, please press Ctrl-C before the next line is printed.  By allowing the next line to be printed, you expressly acknowledge your acceptance of this EULA.])
230
231
fi

232
233
dnl building of benchmarks
AC_ARG_ENABLE(benchmarks,
234
  AS_HELP_STRING([--disable-benchmarks],[disable building benchmarks apps]),
235
236
237
238
239
240
241
242
243
244
245
246
  [
    case "${enableval}" in
      yes) BUILD_BENCHMARKS=yes ;;
      no)  BUILD_BENCHMARKS=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --disable-benchmarks) ;;
    esac
  ],
[BUILD_BENCHMARKS=yes]) dnl Default value
AM_CONDITIONAL(BUILD_BENCHMARKS, test "x$BUILD_BENCHMARKS" = "xyes")

dnl building of tools
AC_ARG_ENABLE(tools,
247
  AS_HELP_STRING([--disable-tools],[disable building tools]),
248
249
250
251
252
253
254
255
256
257
  [
    case "${enableval}" in
      yes) BUILD_TOOLS=yes ;;
      no)  BUILD_TOOLS=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --disable-tools) ;;
    esac
  ],
[BUILD_TOOLS=yes]) dnl Default value
AM_CONDITIONAL(BUILD_TOOLS, test "x$BUILD_TOOLS" = "xyes")

258
259
dnl poison destroyed objects
AC_ARG_ENABLE(poisoning,
260
  AS_HELP_STRING([--enable-poisoning],[enable poisoning of deallocated objects]),
261
262
263
264
265
266
  [
    case "${enableval}" in
      yes) USE_POISONING=yes ;;
      no)  USE_POISONING=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --enable-poisoning) ;;
    esac
267
  ],
268
269
270
271
272
273
  [USE_POISONING=no]) dnl Default value
if test "x$USE_POISONING" = xyes; then
  AC_DEFINE(USE_POISONING, 1,
    [Define if we should poison deallocated memory])
fi

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
dnl PTP support parts
AC_MSG_CHECKING([whether PTP support can be enabled])
case "$host_os" in
  *android*)
    dnl Can't run on Android because of permissions
    HAVE_PTP=no
    ;;
  mingw*|pw32*|cygwin*)
    dnl Not ported to Windows yet
    HAVE_PTP=no
    ;;
  darwin*)
    dnl Can't run on iOS because of permissions
    AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_PTP="no", HAVE_PTP="yes", [-])
    ;;
  linux*|darwin*|solaris*|netbsd*|freebsd*|openbsd*|kfreebsd*|dragonfly*|gnu*)
    HAVE_PTP=yes
    ;;
  *)
    HAVE_PTP=no
    ;;
esac
AC_MSG_RESULT([$HAVE_PTP])

dnl user/group to change to in gst-ptp-helper
AC_ARG_WITH([ptp-helper-setuid-user],
  AS_HELP_STRING([--with-ptp-helper-setuid-user],[User to switch to when installing gst-ptp-helper setuid root]),
  [
    if test "x$withval" != "x"
    then
      AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_USER, "$withval", [PTP helper setuid user])
    fi
  ], []
)

dnl group/group to change to in gst-ptp-helper
AC_ARG_WITH([ptp-helper-setuid-group],
  AS_HELP_STRING([--with-ptp-helper-setuid-group],[Group to switch to when installing gst-ptp-helper setuid root]),
  [
    if test "x$withval" != "x"
    then
      AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_GROUP, "$withval", [PTP helper setuid group])
    fi
  ], []
)

AC_ARG_WITH(
  ptp-helper-permissions,
  AC_HELP_STRING(
    [--with-ptp-helper-permissions],
    [how to gain PTP permissions (none, setuid-root, capabilities, auto)]),
    [],
    [with_ptp_helper_permissions=auto])

gst_ptp_have_cap=no
AG_GST_CHECK_LIBHEADER(CAP, cap,
                       cap_init, ,
                       sys/capability.h,
                       CAP_LIBS="-lcap"
                       AC_SUBST(CAP_LIBS)
                       gst_ptp_have_cap=yes)

AC_PATH_PROG([SETCAP], [setcap], [no], [$PATH:/usr/bin:/bin:/usr/sbin:/sbin])

if test "x$HAVE_PTP" = "xyes"; then
AC_DEFINE(HAVE_PTP, 1, [PTP support available])

341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
AC_MSG_CHECKING([for SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
    [[
        #include <sys/ioctl.h>
        #include <net/if.h>
    ]],
    [[
        struct ifreq ifr;
        struct ifconf ifc;
        ioctl(0, SIOCGIFCONF, &ifc);
        ioctl(0, SIOCGIFFLAGS, &ifr);
        ioctl(0, SIOCGIFHWADDR, &ifr);
        int dummy = ifr.ifr_hwaddr.sa_data[0];
    ]])], [
        AC_MSG_RESULT(yes)
        AC_DEFINE(HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR, 1, [SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available])
    ], [
        AC_MSG_RESULT(no)
])

AC_MSG_CHECKING([for getifaddrs() and AF_LINK])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
    [[
        #include <ifaddrs.h>
        #include <net/if.h>
        #include <net/if_dl.h>
    ]],
    [[
        struct ifaddrs *ifaddr;
        getifaddrs(&ifaddr);
        int dummy = (ifaddr->ifa_flags & IFF_LOOPBACK) && ifaddr->ifa_addr->sa_family != AF_LINK;
    ]])], [
        AC_MSG_RESULT(yes)
        AC_DEFINE(HAVE_GETIFADDRS_AF_LINK, 1, [getifaddrs() and AF_LINK is available])
    ], [
        AC_MSG_RESULT(no)
    ])

379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
AC_MSG_CHECKING([how to install gst-ptp-helper])
if test "x$with_ptp_helper_permissions" = "xauto"; then
    if test "x$gst_ptp_have_cap" = "xyes" -a "x$SETCAP" != "xno"; then
        with_ptp_helper_permissions="capabilities"
    else
        with_ptp_helper_permissions="setuid-root"
    fi
fi
AC_MSG_RESULT([$with_ptp_helper_permissions])

case "$with_ptp_helper_permissions" in
  none)
    ;;
  setuid-root)
     AC_DEFINE(HAVE_PTP_HELPER_SETUID, 1,
        [Use setuid-root for permissions in PTP helper])
    ;;
  capabilities)
     AC_DEFINE(HAVE_PTP_HELPER_CAPABILITIES, 1,
        [Use capabilities for permissions in PTP helper])
    ;;
  *)
    AC_MSG_ERROR(Invalid parameter [$with_ptp_helper_permissions])
    ;;
esac

fi

AM_CONDITIONAL(HAVE_PTP, test "x$HAVE_PTP" = "xyes")
AM_CONDITIONAL(HAVE_PTP_HELPER_SETUID, test "x$with_ptp_helper_permissions" = "xsetuid-root")
AM_CONDITIONAL(HAVE_PTP_HELPER_CAPABILITIES, test "x$with_ptp_helper_permissions" = "xcapabilities")

411
dnl *** checks for platform ***
412
413
414
415
416

dnl * hardware/architecture *

dnl common/m4/gst-arch.m4
dnl check CPU type
417
AG_GST_ARCH
418

Julien Moutte Moutte's avatar
Julien Moutte Moutte committed
419
dnl check for platform specific settings
420
AG_GST_PLATFORM
421

422
423
424
425
426
427
428
429
430
431
dnl * software *

dnl check for large file support
dnl affected plugins must include config.h
AC_SYS_LARGEFILE

dnl *** checks for programs ***

dnl find a compiler
AC_PROG_CC
432
AC_PROG_CC_STDC
433

434
435
436
dnl check if the compiler supports '-c' and '-o' options
AM_PROG_CC_C_O

437
438
439
dnl find an assembler
AM_PROG_AS

440
dnl determine if c++ is available on this system
441
442
443
444
AC_PROG_CXX
dnl CXX may be set to some default even if no c++ compiler is available
dnl (thanks autotools!), so just try to compile some c++ code to make sure
AC_LANG_PUSH([C++])
445
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ class Foo { int bar; };]], [[]])],[working_cxx=yes],[working_cxx=no])
446
447
AC_LANG_POP([C++])
AC_MSG_NOTICE([working c++ compiler found: $working_cxx])
448
AM_CONDITIONAL(HAVE_CXX, test "x$working_cxx" = "xyes")
449

Stefan Kost's avatar
   
Stefan Kost committed
450
dnl Perl is used in building documentation and in the version checks
451
452
453
454
455
AC_PATH_PROG(PERL_PATH, perl, no)
if test x$PERL_PATH = xno; then
  AC_MSG_ERROR(Could not find perl)
fi

Stefan Kost's avatar
   
Stefan Kost committed
456
dnl we require flex and bison for building the parser
457
458
459
460
if test "x$GST_DISABLE_PARSE" != xyes; then
  AG_GST_BISON_CHECK
  AG_GST_FLEX_CHECK
fi
Stefan Kost's avatar
   
Stefan Kost committed
461

462
463
AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
464

465
dnl check for gobject-introspection
466
GOBJECT_INTROSPECTION_CHECK([1.31.1])
467

468
dnl check for documentation tools
469
GTK_DOC_CHECK([1.12])
470
AG_GST_PLUGIN_DOCS([1.12])
471
472
473

dnl *** checks for libraries ***

474
dnl check for libm, for sin()
475
LT_LIB_M
476
477
AC_SUBST(LIBM)

478
479
480
481
482
483
dnl *** checks for header files ***

dnl check if we have ANSI C header files
AC_HEADER_STDC

dnl Check for ucontext.h
484
AC_CHECK_HEADERS([ucontext.h], [], [], [AC_INCLUDES_DEFAULT])
485
486

dnl Check for sys/socket.h
487
AC_CHECK_HEADERS([sys/socket.h], [HAVE_SYS_SOCKET_H=yes], [HAVE_SYS_SOCKET_H=no], [AC_INCLUDES_DEFAULT])
488
AM_CONDITIONAL(HAVE_SYS_SOCKET_H, test "x$HAVE_SYS_SOCKET_H" = "xyes")
489
490

dnl check for sys/times.h for tests/examples/adapter/
491
492
AC_CHECK_HEADERS([sys/times.h], [HAVE_SYS_TIMES_H=yes], [HAVE_SYS_TIME_H=no], [AC_INCLUDES_DEFAULT])
AC_CHECK_HEADERS([unistd.h], [HAVE_UNISTD_H=yes], [HAVE_UNISTD_H=no], [AC_INCLUDES_DEFAULT])
493
494
495
AM_CONDITIONAL(HAVE_SYS_TIMES_H_AND_UNISTD_H, test "x$HAVE_SYS_TIMES_H" = "xyes" -a "x$HAVE_UNISTD_H" = "xyes")

dnl Check for process.h for getpid() on win32
496
AC_CHECK_HEADERS([process.h], [], [], [AC_INCLUDES_DEFAULT])
497

498
dnl Check for sys/utsname.h for uname
499
AC_CHECK_HEADERS([sys/utsname.h], [], [], [AC_INCLUDES_DEFAULT])
500

501
dnl Check for stdio_ext.f for __fbufsize
502
AC_CHECK_HEADERS([stdio_ext.h], [], [], [AC_INCLUDES_DEFAULT])
503

504
dnl check for pthreads
505
506
507
508
dnl without arguments AX_PTHREAD() will do AC_DEFINE(HAVE_PTHREAD)
dnl which later checks use in their test code
AX_PTHREAD()
AM_CONDITIONAL(HAVE_PTHREAD, test "x$ax_pthread_ok" = "xyes")
509

510
dnl check for sys/prctl for setting thread name on Linux
511
AC_CHECK_HEADERS([sys/prctl.h], [], [], [AC_INCLUDES_DEFAULT])
512

513
514
515
516
517
518
519
520
521
522
523
524
dnl check for pthread_setname_np(const char*)
dnl which is present on OS X 10.6, iOS 3.2 and above
AC_MSG_CHECKING(for pthread_setname_np(const char*))
AC_LINK_IFELSE(
    [AC_LANG_PROGRAM(
        [#include <pthread.h>],
        [pthread_setname_np("example")])],
    [AC_MSG_RESULT(yes)
     AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID,1,
        [Have function pthread_setname_np(const char*)])],
    [AC_MSG_RESULT(no)])

525
526
527
dnl check for sys/uio.h for writev()
AC_CHECK_HEADERS([sys/uio.h], [], [], [AC_INCLUDES_DEFAULT])

528
529
530
dnl Check for valgrind.h
dnl separate from HAVE_VALGRIND because you can have the program, but not
dnl the dev package
531
AC_CHECK_HEADERS([valgrind/valgrind.h], [], [], [AC_INCLUDES_DEFAULT])
532

533
dnl used in gst/gstpoll.c
534
AC_CHECK_HEADERS([winsock2.h], [HAVE_WINSOCK2_H=yes], [HAVE_WINSOCK2_H=no], [AC_INCLUDES_DEFAULT])
535
AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes")
536
537
538
539
540
if test "x$HAVE_WINSOCK2_H" = "xyes"; then
  WIN32_LIBS="-lws2_32"
  AC_SUBST(WIN32_LIBS)
fi

541
dnl check for GMP/GSL, used by the gst_util_uint64_scale unit test only
542
543
544
545
546
547
548
549
550
551
552
553
554
555
if test "x$BUILD_TESTS" = "xyes"; then
  AG_GST_CHECK_LIBHEADER(GMP, gmp,
                         __gmpz_init_set_d, ,
                         gmp.h,
                         GMP_LIBS="-lgmp"
                         AC_SUBST(GMP_LIBS)
                         AC_DEFINE(HAVE_GMP, [1],[Have GMP library]))
  AG_GST_CHECK_LIBHEADER(GSL, gsl,
                         gsl_rng_uniform_int, -lgslcblas,
                         gsl/gsl_rng.h,
                         GSL_LIBS="-lgsl -lgslcblas"
                         AC_SUBST(GSL_LIBS)
                         AC_DEFINE(HAVE_GSL, [1],[Have GSL library]))
fi
556

557
558
559
560
561
562
dnl *** checks for types/defines ***

dnl *** checks for structures ***

dnl *** checks for compiler characteristics ***

563
dnl check if the compiler supports __uint128_t (gcc)
564
565
dnl Actually check for 128-bit division, since that's what we use
dnl uint128_t for.
566
AC_CACHE_CHECK(for __uint128_t, gst_cv_uint128_t,
567
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[
568
569
570
571
      static __uint128_t v1 = 100;
      static __uint128_t v2 = 10;
      static __uint128_t u;
      u = v1 / v2;
572
    ]])],[
573
      gst_cv_uint128_t=yes
574
    ],[
575
576
577
578
579
580
581
      gst_cv_uint128_t=no
    ])
)
if test x$gst_cv_uint128_t = xyes; then
  AC_DEFINE(HAVE_UINT128_T, 1, [Have __uint128_t type])
fi

Thiago Santos's avatar
Thiago Santos committed
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
dnl *** checking for tm_gmtoff ***
AC_MSG_CHECKING([for tm_gmtoff])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
	#include <time.h>
	int main(void) {
	  struct tm t;
	  t.tm_gmtoff = 0;
	  exit(0);
	}]])],
  [have_tm_gmtoff=yes
   AC_DEFINE(HAVE_TM_GMTOFF,1,[Have tm_gmtoff field in struct tm])],
  [have_tm_gmtoff=no],
  [have_tm_gmtoff="no (cross compiling)"])
AC_MSG_RESULT($have_tm_gmtoff)


598
599
dnl *** checks for library functions ***

600
601
AC_CHECK_FUNCS([strcasestr])

Thiago Santos's avatar
Thiago Santos committed
602
AC_CHECK_FUNCS([gmtime_r])
603
AC_CHECK_FUNCS([localtime_r])
604
AC_CHECK_FUNCS([sigaction])
Stefan Sauer's avatar
Stefan Sauer committed
605
AC_CHECK_FUNCS([getrusage])
606
AM_CONDITIONAL(HAVE_GETRUSAGE, test "x$ac_cv_func_getrusage" = "xyes")
Stefan Sauer's avatar
Stefan Sauer committed
607
AC_CHECK_HEADERS([sys/resource.h])
608
609
610
611
612
613
614
615
616

dnl check for fseeko()
AC_FUNC_FSEEKO
dnl check for ftello()
AC_CHECK_FUNCS([ftello])

AC_CHECK_FUNCS([fgetpos])
AC_CHECK_FUNCS([fsetpos])

617
dnl check for poll(), ppoll() and pselect()
618
619
AC_CHECK_HEADERS([sys/poll.h], [], [], [AC_INCLUDES_DEFAULT])
AC_CHECK_HEADERS([poll.h], [], [], [AC_INCLUDES_DEFAULT])
620
621
622
623
AC_CHECK_FUNCS([poll])
AC_CHECK_FUNCS([ppoll])
AC_CHECK_FUNCS([pselect])

624
625
626
627
628
629
630
631
dnl check for socketpair()
AC_CHECK_FUNC(socketpair, [], [
  AC_CHECK_LIB(socket, socketpair, [
    SOCKET_LIBS="-lsocket"
    AC_SUBST(SOCKET_LIBS)
  ])
])

632
633
634
635
636
637
638
639
640
641
642
dnl ****************************************
dnl *** GLib POLL* compatibility defines ***
dnl ****************************************

AC_MSG_CHECKING([for broken poll])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
	#include <stdlib.h>
	#include <fcntl.h>
	#ifdef HAVE_SYS_POLL_H
	#include <sys/poll.h>
	#endif
643
644
645
	#ifdef HAVE_POLL_H
	#include <poll.h>
	#endif
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
	int main(void) {
	  struct pollfd fds[1];
	  int fd;
	  fd = open("/dev/null", 1);
	  fds[0].fd = fd;
	  fds[0].events = POLLIN;
	  fds[0].revents = 0;
	  if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
		exit(1);  /* Does not work for devices -- fail */
	  }
	  exit(0);
	}]])],
  [broken_poll=no],
  [broken_poll=yes
   AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
  [broken_poll="no (cross compiling)"])
AC_MSG_RESULT($broken_poll)

664
dnl check for getpagesize()
665
666
AC_CHECK_FUNCS([getpagesize])

667
dnl Check for POSIX timers
668
669
CLOCK_GETTIME_FOUND="no"
AC_CHECK_FUNC(clock_gettime, [CLOCK_GETTIME_FOUND="yes"], [
670
  AC_CHECK_LIB(rt, clock_gettime, [
671
    CLOCK_GETTIME_FOUND="yes"
672
    LIBS="$LIBS -lrt"
673
674
  ], [
    AC_CHECK_LIB(pthread, clock_gettime, [
675
      CLOCK_GETTIME_FOUND="yes"
676
677
      LIBS="$LIBS -lpthread"
    ])
678
679
680
  ])
])

681
682
683
684
685
686
687
688
689
# With XCode 8, clock_gettime will be incorrectly detected as being available
# regardless of what version of OS X you target because the symbol is available
# in the .tbd file as a weak symbol.
# See: https://bugzilla.gnome.org/show_bug.cgi?id=772451 
#
# We cannot simply do AC_CHECK_FUNCS with -Wl,-no_weak_imports because the
# autoconf check does its own prototype declaration that doesn't trigger that
# compiler flag.
#
690
691
# It's only starting from macOS 10.12 and iOS 10.0 that clock_gettime is
# actually available, so we can unconditionally disable it for older versions.
692
693
694
695
case "$host_os" in
  darwin*)
    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <AvailabilityMacros.h>
696
697
698
699
700
701
702
703
704
#include <TargetConditionals.h>
#if defined(TARGET_OS_MAC)
#  if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
#    error "Not compiling for OS X 10.12 or later"
#  endif
#else
#  if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0
#    error "Not compiling for iOS 10.0 or later"
#  endif
705
706
707
708
709
710
711
712
713
714
715
716
717
718
#endif
    ]])], [], [
    if test "$CLOCK_GETTIME_FOUND" = "yes"; then
      AC_MSG_NOTICE([Disabling incorrectly detected clock_gettime on OS X])
    fi
    CLOCK_GETTIME_FOUND="no"
    ])
    ;;
esac

if test "$CLOCK_GETTIME_FOUND" = "yes"; then
  AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Have clock_gettime])
fi

719
AC_CACHE_CHECK(for posix timers, gst_cv_posix_timers,
720
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
721
722
723
724
#include <time.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
725
    ]], [[
726
727
#if !defined(_POSIX_TIMERS) || _POSIX_TIMERS < 0 || !defined(CLOCK_REALTIME)
#error Either _POSIX_TIMERS or CLOCK_REALTIME not defined
728
#endif
729
    ]])],[
730
      gst_cv_posix_timers=yes
731
    ],[
732
733
734
      gst_cv_posix_timers=no
    ])
)
735
736
737
738
739
740
741
742
743
744

if test "$gst_cv_posix_timers" = "yes"; then
  AC_DEFINE(HAVE_POSIX_TIMERS,1,[Have posix timers])
  GST_HAVE_POSIX_TIMERS_DEFINE="#define GST_HAVE_POSIX_TIMERS 1"
else
  GST_HAVE_POSIX_TIMERS_DEFINE="#define GST_HAVE_POSIX_TIMERS 0"
fi
AC_SUBST(GST_HAVE_POSIX_TIMERS_DEFINE)
AM_CONDITIONAL(GST_HAVE_POSIX_TIMERS, test "$gst_cv_posix_timers" = "yes")

745
AC_CACHE_CHECK(for monotonic clock, gst_cv_monotonic_clock,
746
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
747
748
749
750
#include <time.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
751
    ]], [[
752
753
#if !defined(_POSIX_MONOTONIC_CLOCK) || _POSIX_MONOTONIC_CLOCK < 0 || !defined(CLOCK_MONOTONIC)
#error Either _POSIX_MONOTONIC_CLOCK or CLOCK_MONOTONIC not defined
754
#endif
755
    ]])],[
756
      gst_cv_monotonic_clock=yes
757
    ],[
758
759
760
      gst_cv_monotonic_clock=no
    ])
)
761
762
763
764
765
766
767
768
769
770

if test "$gst_cv_monotonic_clock" = "yes"; then
  AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock])
  GST_HAVE_MONOTONIC_CLOCK_DEFINE="#define GST_HAVE_MONOTONIC_CLOCK 1"
else
  GST_HAVE_MONOTONIC_CLOCK_DEFINE="#define GST_HAVE_MONOTONIC_CLOCK 0"
fi
AC_SUBST(GST_HAVE_MONOTONIC_CLOCK_DEFINE)
AM_CONDITIONAL(GST_HAVE_MONOTONIC_CLOCK, test "$gst_cv_monotonic_clock" = "yes")

Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
771
dnl Check for a way to display the function name in debug output
772
AG_GST_CHECK_FUNCTION
773

774
775
776
777
dnl test if we have dladdr(); we use it for debugging; see gst/gstinfo.c
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -D_GNU_SOURCE"
AC_CHECK_LIB(dl, dladdr,
778
779
   AC_DEFINE(HAVE_DLADDR, 1, [Defined if we have dladdr ()])
   LIBS="$LIBS -ldl")
780
CFLAGS="$save_cflags"
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
781

782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
dnl Check printf stuff
if test "x${GST_DISABLE_GST_DEBUG}" != "xyes"; then
  AC_TYPE_LONG_LONG_INT
  AC_TYPE_UNSIGNED_LONG_LONG_INT

  if test x$ac_cv_type_long_long_int$ac_cv_type_unsigned_long_long_int = xyesyes; then
    AC_DEFINE([HAVE_LONG_LONG], [1], [Define to 1 if the system has the type long long])
  fi

  dnl /usr/share/aclocal/inttypes_h.m4 - ships with gettext apparently
  gl_AC_HEADER_INTTYPES_H

  dnl /usr/share/aclocal/stdint_h.m4 - ships with gettext apparently
  gl_AC_HEADER_STDINT_H

  AC_CHECK_TYPES(ptrdiff_t)

  AC_TYPE_INTMAX_T
  AC_TYPE_SIZE_T
fi

803
dnl *** checks for dependency libraries ***
804

805
dnl GLib
806
GLIB_REQ=2.40.0
807
AG_GST_GLIB_CHECK([$GLIB_REQ])
808

809
dnl Check for documentation xrefs
810
811
812
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
AC_SUBST(GLIB_PREFIX)

813
814
815
816
817
818
819
820
821
822
dnl GTK is optional and only used in examples
HAVE_GTK=no
GTK_REQ=3.10
if test "x$BUILD_EXAMPLES" = "xyes"; then
  PKG_CHECK_MODULES(GTK, gtk+-3.0 >= $GTK_REQ, HAVE_GTK=yes, HAVE_GTK=no)
  AC_SUBST(GTK_LIBS)
  AC_SUBST(GTK_CFLAGS)
fi
AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")

823
dnl libunwind is optionally used by the leaks tracer
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
AC_ARG_WITH([unwind],[AS_HELP_STRING([--with-unwind=yes|no|auto],[use libunwind])],
            [], [with_unwind=auto])
if [ test "x${with_unwind}" != "xno" ]; then
  PKG_CHECK_MODULES(UNWIND, [libunwind],
      [
        HAVE_UNWIND=yes
        AC_DEFINE(HAVE_UNWIND, 1, [libunwind available])
        UNWIND_REQUIRE=libunwind
        AC_SUBST(UNWIND_REQUIRE)
      ],
      [
        HAVE_UNWIND=no
        if [ test "x${with_unwind}" = "xyes" ]; then
          AC_MSG_ERROR([could not find libunwind])
        fi
      ])
else
  HAVE_UNWIND=no
842
843
844
fi

dnl libdw is optionally used to add source lines and numbers to backtraces
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
AC_ARG_WITH([dw],[AS_HELP_STRING([--with-dw=yes|no|auto],[use libdw])],
            [], [with_dw=auto])
if [ test "x${with_dw}" != "xno" ]; then
  PKG_CHECK_MODULES(DW, [libdw],
      [
        HAVE_DW=yes
        AC_DEFINE(HAVE_DW, 1, [libdw available])
        DW_REQUIRE=libdw
        AC_SUBST(DW_REQUIRE)
      ],
      [
        HAVE_DW=no
        if [ test "x${with_dw}" = "xyes" ]; then
          AC_MSG_ERROR([could not find libdw])
        fi
      ])
else
  HAVE_DW=no
863
fi
864
865
866
867
868
869
870
871

dnl Check for backtrace() from libc
AC_CHECK_FUNC(backtrace, [
  AC_CHECK_HEADERS([execinfo.h], [
    AC_DEFINE(HAVE_BACKTRACE,1,[Have backtrace])
  ], [], [])
])

872
873
dnl building of unit test libraries
AC_ARG_ENABLE(check,
874
  AS_HELP_STRING([--disable-check],[disable building unit test libraries]),
875
876
877
878
879
880
  [
    case "${enableval}" in
      yes) BUILD_CHECK=yes ;;
      no)  BUILD_CHECK=no ;;
      *)   AC_MSG_ERROR(bad value ${enableval} for --disable-check) ;;
    esac
881
882
883
884
885
886
887
  ], [
    dnl Default value
    case $host_os in
      mingw* | msvc* | mks*) BUILD_CHECK=no ;;
      *) BUILD_CHECK=yes ;;
    esac
])
888
889
890
dnl bit of a misnomer, but keep the conditional named like this so we don't
dnl have to change too much elsewhere
AM_CONDITIONAL(HAVE_CHECK, test "x$BUILD_CHECK" = "xyes")
891

892
893
894
dnl configure the desired memory alignment
AC_ARG_WITH([memory-alignment],
  AS_HELP_STRING([--with-memory-alignment],[8,N,malloc,pagesize (default is 32)]),
895
896
897
  [
    if test "x$withval" = "xyes"
    then
898
      AC_DEFINE(MEMORY_ALIGNMENT, 32, [Memory alignment to use])
899
900
    else
      case "${withval}" in
901
902
903
        malloc) AC_DEFINE(MEMORY_ALIGNMENT_MALLOC, 1, [Memory alignment by malloc default]) ;;
        pagesize)  AC_DEFINE(MEMORY_ALIGNMENT_PAGESIZE, 1, [Memory alignment by pagesize]) ;;
        *)   AC_DEFINE_UNQUOTED(MEMORY_ALIGNMENT, ${withval}, [Memory alignment to use]) ;;
904
905
906
      esac
    fi
  ], [
907
    AC_DEFINE(MEMORY_ALIGNMENT_MALLOC, 1, [Memory alignment by malloc default])
908
909
  ]
)
910

911
912
913
dnl Check for -Bsymbolic-functions linker flag used to avoid
dnl intra-library PLT jumps, if available.
AC_ARG_ENABLE(Bsymbolic,
914
              [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
915
              [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
916
917
               AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
               LDFLAGS=-Wl,-Bsymbolic-functions
918
919
               LIBS=
               AC_TRY_LINK([], [return 0],
920
                           AC_MSG_RESULT(yes)
921
                           enable_Bsymbolic=yes,
922
                           AC_MSG_RESULT(no)
923
924
                           enable_Bsymbolic=no)
               LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
925
926


927
dnl *** set variables based on configure arguments
928

929
dnl set license and copyright notice
930
GST_LICENSE="LGPL"
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
931
AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
932
933
AC_SUBST(GST_LICENSE)

934
dnl define LIBDIR, GST_DATADIR so we can inform people where we live
935
936
AS_AC_EXPAND(LIBDIR, $libdir)
AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
937
AS_AC_EXPAND(DATADIR, $datadir)
938
AC_DEFINE_UNQUOTED(GST_DATADIR, "$DATADIR", [data dir])
939

940
dnl set location of plugin directory
941
AG_GST_SET_PLUGINDIR
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
942

943
944
945
946
947
948
dnl make sure it doesn't complain about unused variables if debugging is disabled
NO_WARNINGS=""
if test "x${GST_DISABLE_GST_DEBUG}" = "xyes"; then
  NO_WARNINGS="-Wno-unused"
fi

949
dnl define an ERROR_CFLAGS Makefile variable
950
AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [-Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return -Wno-multichar -Wnested-externs $NO_WARNINGS])
951

952
953
954
955
dnl special warning flags for gst/printf
AS_COMPILER_FLAG([-Wno-format-nonliteral], [PRINTF_CFLAGS="-Wno-format-nonliteral"])
AC_SUBST(PRINTF_CFLAGS)

956
dnl define correct level for debugging messages
957
AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
958

959
dnl *** finalize CFLAGS, LDFLAGS, LIBS
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
960

961
dnl Overview:
962
963
964
965
dnl GST_OPTION_CFLAGS:  common cflags for profiling, debugging, errors, ...
dnl GST_ALL_*:          vars shared by all built objects
dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
dnl GST_OBJ_*:          additional vars to link to the core library
966
967
968
969
970
971
972
973
974
975
dnl			include GST_ALL_*
dnl GST_LT_LDFLAGS:	library versioning of our libraries
dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins

dnl GST_OPTION_CFLAGS
if test "x$USE_DEBUG" = xyes; then
   PROFILE_CFLAGS="-g"
fi
AC_SUBST(PROFILE_CFLAGS)

976
977
978
# GST_DISABLE_DEPRECATED: hide the visibility of deprecated
# functionality from the API that gstreamer uses
# GST_REMOVE_DEPRECATED: don't compile deprecated functionality (breaks ABI)
979
if test "x$PACKAGE_VERSION_NANO" = "x1"; then
980
  dnl Define _only_ when compiling from git (not for pre-releases or releases)
981
982
983
984
  DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
else
  DEPRECATED_CFLAGS=""
fi
985
986
AC_SUBST(DEPRECATED_CFLAGS)

987
988
dnl every flag in GST_OPTION_CFLAGS can be overridden at make time via e.g.
dnl make DEPRECATED_CFLAGS=''
989
GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
990
GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
991
992
GST_OPTION_CFLAGS="$GST_OPTION_CFLAGS"
GST_OPTION_CXXFLAGS="$GST_OPTION_CXXFLAGS"
993
AC_SUBST(GST_OPTION_CFLAGS)
994
AC_SUBST(GST_OPTION_CXXFLAGS)
995
996
997

dnl GST_ALL_*
dnl vars common to for all internal objects (core libs, elements, applications)
998
999
1000
dnl CFLAGS:
dnl - src and build dirs need to be added because every piece that gets built
dnl   will need the GStreamer source and generated headers
1001
dnl LIBS: XML doesn't need to be added because we don't explicitly use symbols
1002
dnl       from LibXML except for in the core library
1003
1004
GST_ALL_CXXFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir) -I\$(top_builddir)/libs -I\$(top_builddir) $GLIB_CFLAGS \$(GLIB_EXTRA_CFLAGS) $XML_CFLAGS \$(GST_OPTION_CXXFLAGS) \$(ERROR_CXXFLAGS)"
GST_ALL_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir) -I\$(top_builddir)/libs -I\$(top_builddir) $GLIB_CFLAGS \$(GLIB_EXTRA_CFLAGS) $XML_CFLAGS \$(GST_OPTION_CFLAGS) \$(ERROR_CFLAGS)"
1005

1006
1007
dnl FIXME: check if LTLIBINTL is needed everywhere
dnl I presume it is given that it contains the symbols that _() stuff maps to
1008
GST_ALL_LIBS="$GLIB_LIBS $LTLIBINTL \$(GCOV_LIBS)"
1009

1010
1011
dnl LDFLAGS really should only contain flags, not libs - they get added before
dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
1012
GST_ALL_LDFLAGS="-no-undefined"
1013
if test "x${enable_Bsymbolic}" = "xyes"; then
1014
1015
  GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
fi
1016

1017
AC_SUBST(GST_ALL_CFLAGS)
1018
AC_SUBST(GST_ALL_CXXFLAGS)
1019
1020
1021
AC_SUBST(GST_ALL_LIBS)
AC_SUBST(GST_ALL_LDFLAGS)

1022
1023
1024
dnl GST_LIB_LDFLAGS
dnl linker flags shared by all libraries
dnl LDFLAGS modifier defining exported symbols from built libraries
1025
GST_LIB_LDFLAGS="-export-symbols-regex \^[_]?\(gst_\|Gst\|GST_\).*"
1026
1027
AC_SUBST(GST_LIB_LDFLAGS)

1028
1029
dnl GST_OBJ_*
dnl default vars for all internal objects built on libgstreamer
1030
dnl includes GST_ALL_*
1031
1032
GST_OBJ_CFLAGS="\$(GST_ALL_CFLAGS) $GST_OBJ_STATIC_CFLAGS"
GST_OBJ_CXXFLAGS="\$(GST_ALL_CXXFLAGS) $GST_OBJ_STATIC_CFLAGS"
Sebastian Dröge's avatar
Sebastian Dröge committed
1033
GST_OBJ_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_API_VERSION.la \$(GST_ALL_LIBS)"
1034
AC_SUBST(GST_OBJ_CFLAGS)
1035
AC_SUBST(GST_OBJ_CXXFLAGS)
1036
1037
1038
AC_SUBST(GST_OBJ_LIBS)

dnl GST_PLUGIN_LDFLAGS
1039
dnl LDFLAGS for plugins; includes GST_ALL_LDFLAGS
1040
GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
1041
AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1042

1043
dnl plugin scanner locations
Sebastian Dröge's avatar
Sebastian Dröge committed
1044
AS_AC_EXPAND(GST_PLUGIN_SCANNER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-plugin-scanner)
1045
AC_DEFINE_UNQUOTED(GST_PLUGIN_SCANNER_INSTALLED,
1046
    "$GST_PLUGIN_SCANNER_INSTALLED", [location of the installed gst-plugin-scanner])
1047
AC_SUBST(GST_PLUGIN_SCANNER_INSTALLED)
1048

1049
1050
1051
1052
1053
1054
dnl completion helper locations
AS_AC_EXPAND(GST_COMPLETION_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-completion-helper)
AC_DEFINE_UNQUOTED(GST_COMPLETION_HELPER_INSTALLED,
    "$GST_COMPLETION_HELPER_INSTALLED", [location of the installed gst-completion-helper])
AC_SUBST(GST_COMPLETION_HELPER_INSTALLED)

1055
1056
1057
1058
1059
1060
dnl ptp helper locations
AS_AC_EXPAND(GST_PTP_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-ptp-helper)
AC_DEFINE_UNQUOTED(GST_PTP_HELPER_INSTALLED,
    "$GST_PTP_HELPER_INSTALLED", [location of the installed gst-ptp-helper])
AC_SUBST(GST_PTP_HELPER_INSTALLED)

1061
1062
dnl things for our internal libcheck (must be called even if building
dnl libcheck is disabled because it defines conditionals)
1063
AG_GST_CHECK_CHECKS
1064

1065
AC_CONFIG_FILES(
1066
Makefile
1067
data/Makefile
1068
data/bash-completion/helpers/gst
1069
gst/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1070
1071
1072
gst/gstconfig.h
gst/gstversion.h
gst/parse/Makefile
1073
gst/printf/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1074
1075
libs/Makefile
libs/gst/Makefile
1076
1077
libs/gst/base/Makefile
libs/gst/check/Makefile
1078
libs/gst/check/libcheck/Makefile
1079
libs/gst/check/internal-check.h:libs/gst/check/libcheck/check.h.in
1080
libs/gst/controller/Makefile
1081
libs/gst/helpers/Makefile
1082
libs/gst/net/Makefile
1083
1084
plugins/Makefile
plugins/elements/Makefile
1085
plugins/tracers/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1086
1087
po/Makefile.in
tests/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1088
tests/benchmarks/Makefile
1089
tests/check/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1090
tests/misc/Makefile
1091
tests/examples/Makefile
1092
tests/examples/adapter/Makefile
1093
tests/examples/controller/Makefile
1094
tests/examples/stepping/Makefile
1095
tests/examples/helloworld/Makefile
Wim Taymans's avatar
Wim Taymans committed
1096
tests/examples/memory/Makefile
1097
tests/examples/netclock/Makefile
1098
tests/examples/ptp/Makefile
1099
tests/examples/streamiddemux/Makefile
1100
tests/examples/streams/Makefile
1101
tools/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1102
1103
common/Makefile
common/m4/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1104
1105
docs/Makefile
docs/gst/Makefile
1106
docs/gst/gstreamer.types
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1107
docs/libs/Makefile
1108
docs/plugins/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1109
docs/version.entities
1110
m4/Makefile
1111
pkgconfig/Makefile
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
1112
1113
1114
stamp.h
pkgconfig/gstreamer.pc
pkgconfig/gstreamer-uninstalled.pc
Andy Wingo Wingo's avatar
Andy Wingo Wingo committed
1115
1116
pkgconfig/gstreamer-base.pc
pkgconfig/gstreamer-base-uninstalled.pc
1117
1118
pkgconfig/gstreamer-check.pc
pkgconfig/gstreamer-check-uninstalled.pc
1119
1120
pkgconfig/gstreamer-controller.pc
pkgconfig/gstreamer-controller-uninstalled.pc
Andy Wingo Wingo's avatar
Andy Wingo Wingo committed
1121
1122
pkgconfig/gstreamer-net.pc
pkgconfig/gstreamer-net-uninstalled.pc
1123
)
1124

1125
AC_OUTPUT
Stefan Kost's avatar
Stefan Kost committed
1126
1127

dnl negate for output
1128
if test "x${GST_DISABLE_GST_DEBUG}" = "xno"; then enable_gst_debug="yes"; fi
1129
if test "x${GST_DISABLE_GST_TRACER_HOOKS}" = "xno"; then enable_gst_tracer_hooks="yes"; fi
Stefan Kost's avatar
Stefan Kost committed
1130
1131
1132
if test "x${GST_DISABLE_PARSE}" = "xno"; then enable_parse="yes"; fi
if test "x${GST_DISABLE_OPTION_PARSING}" = "xno"; then enable_option_parsing="yes"; fi
if test "x${GST_DISABLE_PLUGIN}" = "xno"; then enable_plugin="yes"; fi
1133
if test "x${GST_DISABLE_REGISTRY}" = "xno"; then enable_registry="yes"; fi
Stefan Kost's avatar
Stefan Kost committed
1134
1135
1136
1137
1138
1139
1140

echo "

Configuration
	Version                    : ${VERSION}
	Source code location       : ${srcdir}
	Prefix                     : ${prefix}
1141
	Compiler                   : ${CC}
Stefan Kost's avatar
Stefan Kost committed
1142
1143
1144
	Package name               : ${GST_PACKAGE_NAME}
	Package origin             : ${GST_PACKAGE_ORIGIN}

1145
	API Documentation          : ${enable_gtk_doc}
Stefan Kost's avatar
Stefan Kost committed
1146

1147
1148
	Debug logging              : ${enable_gst_debug}
	Tracing subsystem hooks    : ${enable_gst_tracer_hooks}
Stefan Kost's avatar
Stefan Kost committed
1149
1150
	Command-line parser        : ${enable_parse}
	Option parsing in gst_init : ${enable_option_parsing}
1151
1152
	Plugin registry            : ${enable_registry}
	Plugin support	           : ${enable_plugin}
1153
	Static plugins             : ${enable_static_plugins}
1154
	Unit testing support       : ${BUILD_CHECK}
1155
	PTP clock support          : ${HAVE_PTP}
1156
	libunwind support          : ${HAVE_UNWIND}
1157
	libdw support              : ${HAVE_DW}
Stefan Kost's avatar
Stefan Kost committed
1158
1159
1160
1161

	Debug                      : ${USE_DEBUG}
	Profiling                  : ${USE_PROFILING}

1162
	Building benchmarks        : ${BUILD_BENCHMARKS}
Stefan Kost's avatar
Stefan Kost committed
1163
1164
1165
	Building examples          : ${BUILD_EXAMPLES}
	Building test apps         : ${BUILD_TESTS}
	Building tests that fail   : ${BUILD_FAILING_TESTS}
1166
	Building tools             : ${BUILD_TOOLS}
Stefan Kost's avatar
Stefan Kost committed
1167
"