configure.ac 15.8 KB
Newer Older
1
AC_PREREQ(2.69)
2

3
dnl initialize autoconf
4 5
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
Sebastian Dröge's avatar
Sebastian Dröge committed
6
AC_INIT(GStreamer libav, 1.8.0,
7
    http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
8
    gst-libav)
9

10 11
AG_GST_INIT

12
dnl initialize automake
13
AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
Thomas Vander Stichele's avatar
Thomas Vander Stichele committed
14

15 16
dnl define PACKAGE_VERSION_* variables
AS_VERSION
17

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

dnl can autoconf find the source ?
22
AC_CONFIG_SRCDIR([ext/libav/gstav.c])
23 24

dnl define the output header for config
25
AC_CONFIG_HEADERS([config.h])
26 27

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

30 31
dnl sets host_* variables
AC_CANONICAL_HOST
32

33 34
dnl use pretty build output by default
AM_SILENT_RULES([yes])
35

36
dnl our libraries and install dirs use major.minor as a version
Sebastian Dröge's avatar
Sebastian Dröge committed
37
GST_API_VERSION=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
38
dnl we override it here if we need to for the release candidate of new series
Sebastian Dröge's avatar
Sebastian Dröge committed
39 40
GST_API_VERSION=1.0
AC_SUBST(GST_API_VERSION)
41

42
AG_GST_LIBTOOL_PREPARE
Sebastian Dröge's avatar
Sebastian Dröge committed
43
AS_LIBTOOL(GST, 800, 0, 800)
44 45

dnl *** required versions of GStreamer stuff ***
Sebastian Dröge's avatar
Sebastian Dröge committed
46 47
GST_REQ=1.8.0
GST_PBREQ=1.8.0
48

Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
49
ORC_REQ=0.4.16
50
ORC_CHECK([$ORC_REQ])
51 52 53 54 55

dnl *** autotools stuff ****

dnl allow for different autotools
AS_AUTOTOOLS_ALTERNATE
56 57

dnl Add parameters for aclocal
58 59 60 61
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")

dnl *** check for arguments to configure ***

62
AG_GST_ARG_DISABLE_FATAL_WARNINGS
63
AG_GST_ARG_ENABLE_EXTRA_CHECKS
64

65
AG_GST_ARG_WITH_PKG_CONFIG_PATH
66 67 68
AG_GST_ARG_WITH_PACKAGE_NAME
AG_GST_ARG_WITH_PACKAGE_ORIGIN
AG_GST_ARG_VALGRIND
69
AG_GST_ARG_GCOV
70 71 72 73 74 75 76

dnl *** checks for platform ***

dnl * hardware/architecture *

dnl common/m4/gst-arch.m4
dnl check CPU type
77
AG_GST_ARCH
78 79

dnl *** checks for programs ***
80

81
dnl find a compiler
82
AC_PROG_CC
83
AC_PROG_CC_STDC
84

85 86 87
dnl check if the compiler supports '-c' and '-o' options
AM_PROG_CC_C_O

88 89 90
AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")

91
dnl check for documentation tools
92
GTK_DOC_CHECK([1.12])
93
AG_GST_PLUGIN_DOCS([1.12])
94

95
dnl *** checks for libraries ***
96

97
dnl check for libm, for sin()
98
LT_LIB_M
99 100
AC_SUBST(LIBM)

101
dnl *** checks for header files ***
102

103 104
dnl check if we have ANSI C header files
AC_HEADER_STDC
105

106
dnl *** checks for types/defines ***
107

108 109 110 111 112 113 114 115
dnl *** checks for structures ***

dnl *** checks for compiler characteristics ***

dnl *** checks for library functions ***

dnl *** checks for dependancy libraries ***

116 117 118 119 120
dnl GLib is required
GLIB_REQ=2.40.0
AC_SUBST([GLIB_REQ])
AG_GST_GLIB_CHECK([$GLIB_REQ])

121
dnl checks for gstreamer
122
dnl uninstalled is selected preferentially -- see pkg-config(1)
Sebastian Dröge's avatar
Sebastian Dröge committed
123 124
AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
125
AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
Sebastian Dröge's avatar
Sebastian Dröge committed
126
AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
127
AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
128

129 130 131
AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)

132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
dnl Check for -Bsymbolic-functions linker flag used to avoid
dnl intra-library PLT jumps, if available.
AC_ARG_ENABLE(Bsymbolic,
              [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
              [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
               AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
               LDFLAGS=-Wl,-Bsymbolic-functions
               LIBS=
               AC_TRY_LINK([], [return 0],
                           AC_MSG_RESULT(yes)
                           enable_Bsymbolic=yes,
                           AC_MSG_RESULT(no)
                           enable_Bsymbolic=no)
               LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])

147 148 149
dnl *** set variables based on configure arguments ***

dnl set location of plugin directory
150
AG_GST_SET_PLUGINDIR
151

152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
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")

174
dnl define an ERROR_CFLAGS Makefile variable
175
AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
176 177
    -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
    -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
Wim Taymans's avatar
Wim Taymans committed
178
    -Winit-self -Wmissing-include-dirs -Waddress
179
    -Waggregate-return -Wno-multichar -Wnested-externs ])
180 181

dnl define correct level for debugging messages
182
AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
183 184 185 186 187 188 189 190 191 192 193 194 195 196

dnl *** finalize CFLAGS, LDFLAGS, LIBS ***

dnl Overview:
dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
dnl GST_*:              flags shared by built objects to link against GStreamer
dnl GST_ALL_LDFLAGS:    linker flags shared by all
dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
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"
197
fi
198
AC_SUBST(PROFILE_CFLAGS)
199

200
if test "x$GST_GIT" = "xyes"; then
201 202 203 204
  DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
else
  DEPRECATED_CFLAGS=""
fi
205
AC_SUBST(DEPRECATED_CFLAGS)
206

207
dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
208
GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
209

210
AC_SUBST(GST_OPTION_CFLAGS)
211

212 213 214 215
dnl FIXME: do we want to rename to GST_ALL_* ?
dnl prefer internal headers to already installed ones
dnl also add builddir include for enumtypes and marshal
dnl add GST_OPTION_CFLAGS, but overridable
216
GST_CFLAGS="$GST_CFLAGS"
217
GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
218 219
AC_SUBST(GST_CFLAGS)
AC_SUBST(GST_LIBS)
220

221
GST_ALL_LDFLAGS="-no-undefined"
222 223 224
if test "x${enable_Bsymbolic}" = "xyes"; then
  GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
fi
225 226
AC_SUBST(GST_ALL_LDFLAGS)

227 228
dnl this really should only contain flags, not libs - they get added before
dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
229
GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
230
AC_SUBST(GST_PLUGIN_LDFLAGS)
231

232 233 234 235 236 237 238 239 240 241 242 243
dnl Add MacOSX specific flags
AC_CANONICAL_HOST
case $host_os in
     darwin*)
	DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
	;;
     *)
        DARWIN_LDFLAGS=""
	;;
esac
AC_SUBST(DARWIN_LDFLAGS)

244
dnl *** Check for bz2
245 246 247 248 249 250 251 252
save_LIBS=$LIBS
LIBS="$LIBS -lbz2"
AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
AC_MSG_RESULT($HAVE_BZ2)
LIBS=$save_LIBS
AM_CONDITIONAL(HAVE_BZ2, test "x$HAVE_BZ2" = "xyes")
if test "x$HAVE_BZ2" = "xno"; then
253 254
  AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
fi
255

256 257 258 259 260 261 262 263 264 265 266 267
dnl *** Check for lzma
save_LIBS=$LIBS
LIBS="$LIBS -llzma"
AC_MSG_CHECKING([for lzma_version_string in -llzma])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <lzma.h>]], [[const char *version = lzma_version_string ();]])],[HAVE_LZMA=yes],[HAVE_LZMA=no])
AC_MSG_RESULT($HAVE_LZMA)
LIBS=$save_LIBS
AM_CONDITIONAL(HAVE_LZMA, test "x$HAVE_LZMA" = "xyes")
if test "x$HAVE_LZMA" = "xno"; then
    AC_WARN([lzma not found, tiff reader will not be able to read lzma files])
fi

268 269 270 271 272
AC_ARG_ENABLE(gpl,
              [AC_HELP_STRING([--enable-gpl], [build a GPL licensed gst-libav])])
AM_CONDITIONAL(GST_LIBAV_ENABLE_GPL, test "x$enable_gpl" = "xyes")
if test "x$enable_gpl" = "xyes"; then
  AC_DEFINE([GST_LIBAV_ENABLE_GPL], [], [Defined if building a GPL-licensed version of gst-libav])
273 274
fi

275
dnl *** configure external libs ***
276

277
HAVE_LIBAV_UNINSTALLED=1
278

279 280
AC_ARG_WITH(system-libav,
            [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
281

282
if test "x$with_system_libav" = "xyes"; then
283
  PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec libavutil)
LRN's avatar
LRN committed
284
  PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
285
  saved_CPPFLAGS="$CPPFLAGS"
286
  CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
287
  AC_CHECK_HEADERS([avi.h])
288 289
  AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
  HAVE_LIBAV_UNINSTALLED=0
290
  AC_MSG_NOTICE([Using system-installed libav code])
291 292 293 294 295 296 297 298 299 300 301
  AC_MSG_CHECKING([whether libav is provided by FFmpeg])
  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
    #include <libavcodec/avcodec.h>
    ]],[[
        #if LIBAVCODEC_VERSION_MICRO >= 100
        /* FFmpeg uses 100+ as its micro version */
        #else
        #error libav provider should be FFmpeg
        #endif
    ]])], [is_ffmpeg=yes], [is_ffmpeg=no])
  AC_MSG_RESULT([$is_ffmpeg])
302
  CPPFLAGS="$saved_CPPFLAGS"
303 304 305
  if test "$is_ffmpeg" = no; then
    AC_MSG_ERROR([Uncompatible libavcodec found])
  fi
306
else
307
  AC_MSG_NOTICE([Using local Libav snapshot])
308
  
309
  dnl libgstlibav.la: include dirs
310
  LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
311
                -I \$(top_builddir)/gst-libs/ext/libav \
312
                 -Wno-deprecated-declarations"
313

314 315
  LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
              \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
316
              \$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \
317
              \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \
318 319 320 321 322
              \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
  if test "x$enable_static_plugins" = xyes; then
      dnl with static linking we can't use the .a archive directly as they would
      dnl be included in the final libgstlibav.a as a file and won't be usable.
      dnl libav*.a must be copied to the final destination too
323
      LIBAV_LIBS="-lavformat -lavcodec -lswresample -lavutil -lavfilter"
324 325 326 327
  else
      dnl libgstlibav.la: libs to statically link to
      LIBAV_LIBS="$LIBAV_DEPS"
  fi
328

329
  dnl
330
  SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
331
                  -I \$(top_builddir)/gst-libs/ext/libav \
332 333
                  -Wno-deprecated-declarations"

334
  SWSCALE_DEPS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
335
                \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
336 337 338 339
  if test "x$enable_static_plugins" = xyes; then
      dnl with static linking we can't use the .a archive directly as they would
      dnl be included in the final libgstswscale.a as a file and won't be usable.
      dnl libav*.a must be copied to the final destination too
340
      SWSCALE_LIBS="-lswscale -lavutil"
341 342 343 344
  else
      dnl libgstswscale.la: libs to statically link to
      SWSCALE_LIBS="$SWSCALE_DEPS"
  fi
345

346
  LIBAV_SUBDIRS=gst-libs
347
  AC_DEFINE(HAVE_AVI_H)
348
  AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
349

350 351 352 353
  AC_ARG_WITH(libav-extra-configure, 
      AC_HELP_STRING([--with-libav-extra-configure="xxx"],
      [extra configure options for internal libav ./configure script]),,
      with_libav=no)
354

355
  # basic arguments
356
  emblibav_configure_args="--prefix=$prefix"
357

358
  # Enable pic and static so that we get .a files, but with PIC code.
359 360
  emblibav_configure_args="$emblibav_configure_args \
        --enable-static --enable-pic \
361
        --disable-avdevice --disable-postproc \
362
        --disable-programs --disable-ffserver --disable-ffplay --disable-ffprobe --disable-ffmpeg \
363 364 365 366
        --disable-encoder=flac --disable-protocols --disable-devices \
        --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
        --disable-filters --disable-doc --disable-vda --disable-d3d11va --disable-dxva2 \
        --disable-iconv --enable-optimizations"
367

368
  if test "x$enable_gpl" == "xyes"; then
Edward Hervey's avatar
Edward Hervey committed
369
    emblibav_configure_args="$emblibav_configure_args --enable-gpl"
370 371
  fi

372
  # if we are cross-compiling, tell libav so
373 374 375 376
  case $host in
      *android*)
        target_os=linux
      ;;
377 378 379
      *darwin*)
        target_os=darwin
      ;;
380 381 382 383 384
      *)
        target_os=`echo $host_os | sed 's/-gnu//'`
      ;;
  esac

385
  if test "x$cross_compiling" = xyes; then
386
    emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
387
        --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
388 389
  fi

390
  case $host_os in
391
    mingw32*)
392
      emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
393 394
      WIN32_LIBS="-lws2_32"
      ;;
395
    *)
396
      WIN32_LIBS=
397 398
      ;;
  esac
399

400 401 402 403 404
  if test x"$AR" != x; then
    emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
  fi

  if test x"$AS" != x; then
405
    emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
406 407 408 409 410 411 412 413 414 415 416 417 418 419
  fi

  if test x"$CC" != x; then
    emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
  fi

  if test x"$LD" != x; then
    emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
  fi

  if test x"$NM" != x; then
    emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
  fi

420
  dnl checks for extra enable/disable flags
421
  LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
422 423
  # Let's check if we can disable the building of the libav binary
  can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
424
  if test "$can_disable" != ""; then
425
    emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
426 427
  fi
  dnl check if libswscale needs enabling explicitly
428
  can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
429
  if test "$can_enable" != ""; then
430
    emblibav_configure_args="$emblibav_configure_args --enable-swscale"
431 432
  fi

433 434 435
  # append extra configure options to emblibav_configure_args if needed
  if test "x$with_libav_extra_configure" != "xno"; then
    emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
436 437
  fi

438 439 440 441 442 443
  AC_SUBST(LIBAV_CO_DIR)
  AC_SUBST(LIBAV_SVN)
  AC_SUBST(LIBAV_REVISION)
  AC_SUBST(LIBAV_EXTERNALS_REVISION)
  AC_CONFIG_COMMANDS([configure-embedded-libav],
    [echo "Configuring included Libav instance with args $emblibav_configure_args"
444 445 446 447 448 449
     origdir=`pwd`
     dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
     dnl to detect out-of-tree builds
     if test -z "$srcdir" -o "$srcdir" = .; then
       confcmd=./configure
     else
450
       confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
451 452
     fi

453 454
     AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
     cd "$ac_top_build_prefix"gst-libs/ext/libav &&
455
         eval "$confcmd $emblibav_configure_args" ||
456
         AC_MSG_ERROR([Failed to configure embedded Libav tree])
457 458
     cd "$origdir"
    ],
459
    [emblibav_configure_args="$emblibav_configure_args"])
460
  AC_MSG_NOTICE([Using included Libav code])
461
fi
462

463
AC_SUBST(LIBAV_CFLAGS)
464
AC_SUBST(LIBAV_DEPS)
465 466
AC_SUBST(LIBAV_LIBS)
AC_SUBST(LIBAV_SUBDIRS)
467
AC_SUBST(SWSCALE_CFLAGS)
468
AC_SUBST(SWSCALE_DEPS)
469
AC_SUBST(SWSCALE_LIBS)
470
AC_SUBST(WIN32_LIBS)
471
 
472 473
if test x$HAVE_LIBAV_UNINSTALLED = x1; then
  AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
474
fi
475
AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
476

477 478
AC_CONFIG_FILES(
Makefile
Jan Schmidt's avatar
Jan Schmidt committed
479 480
common/Makefile
common/m4/Makefile
481
gst-libav.spec
482
ext/Makefile
483
ext/libav/Makefile
484
ext/libswscale/Makefile
485 486
gst-libs/Makefile
gst-libs/ext/Makefile
487
docs/Makefile
488
docs/plugins/Makefile
489
docs/version.entities
490 491
tests/Makefile
tests/check/Makefile
492
tests/files/Makefile
493 494
pkgconfig/Makefile
pkgconfig/gstreamer-plugins-libav-uninstalled.pc
495 496
)
AC_OUTPUT
497

498
ORC_OUTPUT