gstreamer/m4/as-avifile.m4
Thomas Vander Stichele 47fa7e3109 shiny new avifile test macro let's give it a ride
Original commit message from CVS:
shiny new avifile test macro
let's give it a ride
2002-08-13 10:25:36 +00:00

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, &micro) != 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
])