diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2002-08-13 10:25:36 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2002-08-13 10:25:36 +0000 |
commit | 1f82b1e46152b5994460a2b8d91461d82e9ca8ad (patch) | |
tree | 914c38a4ae1e86b6e4c702262e4ea9e6b0adfc9d /m4 | |
parent | ab0df2f22ab90ccbcafc5bbad4213e33aa181ef7 (diff) | |
download | gstreamer-plugins-good-1f82b1e46152b5994460a2b8d91461d82e9ca8ad.tar.gz |
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
Diffstat (limited to 'm4')
-rw-r--r-- | m4/as-avifile.m4 | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/m4/as-avifile.m4 b/m4/as-avifile.m4 new file mode 100644 index 000000000..dbe680d25 --- /dev/null +++ b/m4/as-avifile.m4 @@ -0,0 +1,150 @@ +# 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 +]) + |