mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 23:36:38 +00:00
096eca22a2
Original commit message from CVS: shiny new avifile test macro let's give it a ride
150 lines
4.4 KiB
Text
150 lines
4.4 KiB
Text
# AS_AVIFILE 0.1.0
|
|
# CXXFLAGS and LIBS for avifile
|
|
# taken from Autostar Sandbox, http://autostars.sourceforge.net/
|
|
# constructed by careful cross-pollination from various sources and lots of
|
|
# hard labour
|
|
|
|
dnl Usage:
|
|
dnl AS_AVIFILE(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
|
dnl Test for avifile, and defines
|
|
dnl - AVIFILE_CXXFLAGS (C++ compiler flags)
|
|
dnl - AVIFILE_LDFLAGS (linker flags, stripping and path)
|
|
dnl as well as set HAVE_AVIFILE to yes or no
|
|
dnl
|
|
dnl FIXME: should define AVIFILE_VERSION
|
|
dnl
|
|
dnl prerequisites:
|
|
dnl - working C++ compiler
|
|
dnl - usable libstdc++
|
|
dnl - AC_PATH_XTRA
|
|
|
|
AC_DEFUN(AS_AVIFILE,
|
|
[
|
|
HAVE_AVIFILE="no"
|
|
|
|
dnl first look for avifile-config
|
|
AC_PATH_PROG(AVIFILE_CONFIG, avifile-config, no)
|
|
min_avifile_version=ifelse([$1], ,0.7.0,$1)
|
|
if test "x$AVIFILE_CONFIG" != "xno"; then
|
|
dnl now that we have it, we need to save libs and cflags
|
|
AVIFILE_LDFLAGS=`avifile-config --libs`
|
|
AVIFILE_CXXFLAGS=`avifile-config --cflags`
|
|
AC_SUBST(AVIFILE_LDFLAGS)
|
|
AC_SUBST(AVIFILE_CXXFLAGS)
|
|
HAVE_AVIFILE="yes"
|
|
fi
|
|
|
|
dnl we got this far, now start checking if we have the right version
|
|
if test "x$HAVE_AVIFILE" = "xyes";
|
|
then
|
|
AC_MSG_CHECKING(for avifile - version >= $min_avifile_version)
|
|
dnl first get the version number from avifile-config
|
|
avifile_major_version=`$AVIFILE_CONFIG $avifile_args --version | \
|
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
|
avifile_minor_version=`$AVIFILE_CONFIG $avifile_args --version | \
|
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
|
avifile_micro_version=`$AVIFILE_CONFIG $avifile_config_args --version | \
|
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
|
|
|
dnl now run a short C app that tells us if the version is ok or not
|
|
dnl all of this is boilerplate code from other examples
|
|
rm -f conf.avifiletest
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
char*
|
|
my_strdup (char *str)
|
|
{
|
|
char *new_str;
|
|
|
|
if (str)
|
|
{
|
|
new_str = (char *) malloc ((strlen (str) + 1) * sizeof (char));
|
|
strcpy (new_str, str);
|
|
}
|
|
else
|
|
new_str = NULL;
|
|
|
|
return new_str;
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
int major, minor, micro;
|
|
char *tmp_version;
|
|
|
|
system ("touch conf.avifiletest");
|
|
|
|
/* HP/UX 9 (%@#!) writes to sscanf strings */
|
|
tmp_version = my_strdup ("$min_avifile_version");
|
|
if (sscanf (tmp_version, "%d.%d.%d", &major, &minor, µ) != 3)
|
|
{
|
|
printf ("%s, bad version string\n", "$min_avifile_version");
|
|
exit (1);
|
|
}
|
|
if (($avifile_major_version > major) ||
|
|
(($avifile_major_version == major) && ($avifile_minor_version > minor)) ||
|
|
(($avifile_major_version == major) && ($avifile_minor_version == minor) && ($avifile_micro_version >= micro)))
|
|
return 0;
|
|
else
|
|
{
|
|
printf ("\n*** 'avifile-config --version' returned %d.%d.%d, but the minimum version\n", $avifile_major_version, $avifile_minor_version, $avifile_micro_version);
|
|
printf ("*** of AVIFILE required is %d.%d.%d. If avifile-config is correct, then it is\n", major, minor, micro);
|
|
printf ("*** best to upgrade to the required version.\n");
|
|
printf ("*** If avifile-config was wrong, set the environment variable AVIFILE_CONFIG\n");
|
|
printf ("*** to point to the correct copy of avifile-config, and remove the file\n");
|
|
printf ("*** config.cache (if it exists) before re-running configure\n");
|
|
return 1;
|
|
}
|
|
}
|
|
],
|
|
[
|
|
AC_MSG_RESULT(yes)
|
|
HAVE_AVIFILE="yes"
|
|
],
|
|
[
|
|
HAVE_AVIFILE="no"
|
|
])
|
|
fi
|
|
if test "x$HAVE_AVIFILE" = "xyes";
|
|
then
|
|
dnl now try to compile a sample test app
|
|
|
|
dnl first save whatever language we're currently testing in
|
|
dnl AC_LANG_SAVE
|
|
dnl AC_LANG_CPLUSPLUS
|
|
AC_LANG_PUSH(C++)
|
|
ac_save_CXXFLAGS=$CXXFLAGS
|
|
ac_save_LDFLAGS=$LDFLAGS
|
|
dnl add X flags, because it looks like avifile needs libXv and libXxf86vm
|
|
CXXFLAGS="$XXCFLAGS $AVIFILE_CXXFLAGS"
|
|
LDFLAGS="$LDFLAGS $AVIFILE_LDFLAGS $X_LIBS -lXv -lXxf86vm"
|
|
|
|
AC_MSG_CHECKING(compilation of avifile test program)
|
|
dnl try the compile
|
|
AC_TRY_LINK([
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <avifile.h>
|
|
#include <creators.h>
|
|
],[
|
|
/* function body */
|
|
IVideoDecoder *decoder;
|
|
BITMAPINFOHEADER bh;
|
|
|
|
decoder = Creators::CreateVideoDecoder (bh);
|
|
],
|
|
AC_MSG_RESULT(succeeded)
|
|
HAVE_AVIFILE="yes",
|
|
AC_MSG_RESULT(failed)
|
|
HAVE_AVIFILE="no",
|
|
)
|
|
AC_LANG_RESTORE
|
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
|
LDFLAGS="$ac_save_LDFLAGS"
|
|
fi
|
|
])
|
|
|