summaryrefslogtreecommitdiff
path: root/plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-12 21:41:34 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-12 21:51:54 +0100
commit131ad1a8f9aeebee3a7560e09c73cdbba8573feb (patch)
tree78fbe4d0dc0cb8d6eaf8799d53b6ecb748ad3155 /plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4
parent9ae08cc0f9bed7a62801e2526537fcffe14e53a9 (diff)
sid player is now real plugin (dynamically loaded)
ported sid code to new API moved to different md5 library added more md5 functions to plugin API
Diffstat (limited to 'plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4')
-rw-r--r--plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4550
1 files changed, 550 insertions, 0 deletions
diff --git a/plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4 b/plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4
new file mode 100644
index 00000000..bd607f73
--- /dev/null
+++ b/plugins/sid/sidplay-libs/libsidutils/unix/my_macros.m4
@@ -0,0 +1,550 @@
+dnl -------------------------------------------------------------------------
+dnl Try to find a file (or one of more files in a list of dirs).
+dnl $1=files
+dnl $2=dirs to search
+dnl $3=found dir
+dnl [$4=found file]
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_FIND_FILE,
+[
+ $3=NO
+ for i in $2; do
+ for j in $1; do
+ if test -r "$i/$j"; then
+ $3=$i
+ if test "$4" != ""; then
+ $4=$j
+ fi
+ break 2
+ fi
+ done
+ done
+])
+
+
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_SUBST_DEF,
+[
+ eval "$1=\"#define $1\""
+ AC_SUBST($1)
+])
+
+AC_DEFUN(MY_SUBST_UNDEF,
+[
+ eval "$1=\"#undef $1\""
+ AC_SUBST($1)
+])
+
+AC_DEFUN(MY_SUBST,
+[
+ eval "$1=$2"
+ AC_SUBST($1)
+])
+
+
+
+
+
+dnl -------------------------------------------------------------------------
+dnl Check whether compiler has a working ``bool'' type.
+dnl Will substitute @HAVE_BOOL@ with either a def or undef line.
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_CHECK_BOOL,
+[
+ AC_MSG_CHECKING([for bool])
+ AC_CACHE_VAL(test_cv_have_bool,
+ [
+ AC_TRY_COMPILE(
+ [],
+ [bool aBool = true;],
+ [test_cv_have_bool=yes],
+ [test_cv_have_bool=no]
+ )
+ ])
+ AC_MSG_RESULT($test_cv_have_bool)
+ if test "$test_cv_have_bool" = yes; then
+ AC_DEFINE(HAVE_BOOL,,[Define if the C++ compiler supports BOOL])
+ fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Check whether C++ library has member ios::bin instead of ios::binary.
+dnl Will substitute @HAVE_IOS_BIN@ with either a def or undef line.
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_CHECK_IOS_BIN,
+[
+ AC_MSG_CHECKING([whether standard member ios::binary is available])
+ AC_CACHE_VAL(test_cv_have_ios_binary,
+ [
+ AC_TRY_COMPILE(
+ [#include <fstream.h>],
+ [ifstream myTest(ios::in|ios::binary);],
+ [test_cv_have_ios_binary=yes],
+ [test_cv_have_ios_binary=no]
+ )
+ ])
+ AC_MSG_RESULT($test_cv_have_ios_binary)
+ if test "$test_cv_have_ios_binary" = yes; then
+ AC_DEFINE(HAVE_IOS_BIN,,
+ [Define if standard member ``ios::binary'' is called ``ios::bin''.]
+ )
+ fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Check whether C++ library has member ios::bin instead of ios::binary.
+dnl Will substitute @HAVE_IOS_OPENMODE@ with either a def or undef line.
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_CHECK_IOS_OPENMODE,
+[
+ AC_MSG_CHECKING([whether standard member ios::openmode is available])
+ AC_CACHE_VAL(test_cv_have_ios_openmode,
+ [
+ AC_TRY_COMPILE(
+ [#include <fstream.h>
+ #include <iomanip.h>],
+ [ios::openmode myTest = ios::in;],
+ [test_cv_have_ios_openmode=yes],
+ [test_cv_have_ios_openmode=no]
+ )
+ ])
+ AC_MSG_RESULT($test_cv_have_ios_openmode)
+ if test "$test_cv_have_ios_openmode" = yes; then
+ AC_DEFINE(HAVE_IOS_OPENMODE,,
+ [Define if ``ios::openmode'' is supported.]
+ )
+ fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Check whether C++ environment provides the "nothrow allocator".
+dnl Will substitute @HAVE_EXCEPTIONS@ if test code compiles.
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_CHECK_EXCEPTIONS,
+[
+ AC_MSG_CHECKING([whether exceptions are available])
+ AC_CACHE_VAL(test_cv_have_exceptions,
+ [
+ AC_TRY_COMPILE(
+ [#include <new.h>],
+ [char* buf = new(nothrow) char[1024];],
+ [test_cv_have_exceptions=yes],
+ [test_cv_have_exceptions=no]
+ )
+ ])
+ AC_MSG_RESULT($test_cv_have_exceptions)
+ if test "$test_cv_have_exceptions" = yes; then
+ AC_DEFINE(HAVE_EXCEPTIONS,,
+ [Define if your C++ compiler implements exception-handling.]
+ )
+ fi
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Pass C++ compiler options to libtool which supports C only.
+dnl -------------------------------------------------------------------------
+
+AC_DEFUN(MY_CONFIG_LIBTOOL,
+[
+ my_save_cc=$CC
+ my_save_cflags=$CFLAGS
+ CC=$CXX
+ CFLAGS=$CXXFLAGS
+ AM_PROG_LIBTOOL
+ CC=$my_save_cc
+ CFLAGS=$my_save_cflags
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Library compile test using libtool
+dnl $1 = CXXFLAGS
+dnl $2 = LDFLAGS
+dnl $3 = include header
+dnl $4 = program to compile
+dnl $5 = variable name to store result
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_TRY_COMPILE,
+[
+ my_save_cxxflags=$CXXFLAGS
+ my_save_ldflags=$LDFLAGS
+ my_save_cxx=$CXX
+
+ CXXFLAGS="$CXXFLAGS $1"
+ LDFLAGS="$LDFLAGS $2"
+ CXX="${SHELL-/bin/sh} ${srcdir}/libtool $CXX"
+
+ AC_TRY_LINK(
+ [#include <$3>],
+ [$4;],
+ [$5=YES],
+ [$5=NO]
+ )
+
+ CXXFLAGS=$my_save_cxxflags
+ LDFLAGS=$my_save_ldflags
+ CXX=$my_save_cxx
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Expand prefix variable and others relying on it
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_EXPAND_PREFIX,
+[
+ # Expand prefix/exec_prefix
+ my_save_prefix="$prefix"
+ my_save_exec_prefix="$exec_prefix"
+ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+ my_def_prefix=$prefix
+ my_def_exec_prefix=$exec_prefix
+ eval my_def_includedir=$includedir
+ eval my_def_libdir=$libdir
+ # Restore old prefix
+ prefix="$my_save_prefix"
+ exec_prefix="$my_save_exec_prefix"
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Find pkg-config on the system
+dnl Returns path to program in variable PKG_CONFIG
+dnl Modifies PKG_CONFIG_PATH to contain default install prefix
+dnl $1 - Version
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_CONFIG_PKG_CONFIG,
+[
+ dnl Find pkg-config
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, NO)
+ if test "$PKG_CONFIG" = NO; then
+ AC_MSG_ERROR([
+pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/
+ ])
+ fi
+
+ if ! pkg-config --atleast-pkgconfig-version $1 ; then
+ AC_MSG_ERROR([
+pkg-config too old; version $1 or better required
+ ])
+ fi
+
+ if test "$my_def_prefix" = ""; then
+ MY_EXPAND_PREFIX
+ fi
+
+ # Now add libdir to the pkgconfig search path using
+ # expanded prefix
+ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$my_def_libdir/pkgconfig"
+ export PKG_CONFIG_PATH
+ my_save_pkg_config_path="$PKG_CONFIG_PATH"
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Find library on the system using pkgconfig. You will automatically
+dnl get LDFLAGS & CXXFLAGS using modified include and library paths if
+dnl necessary. Other variables will be obtained with the original intended
+dnl install paths. Results in uppercase output variables $library_$variable.
+dnl $1 - library
+dnl $2 - version
+dnl $3 - variables
+dnl $4 - library header
+dnl $5 - program body
+dnl [$6 - used header]
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_FIND_PKG_CONFIG_LIB,
+[
+ dnl Check if pkg-config is configured
+ if test "$PKG_CONFIG" = ""; then
+ MY_CONFIG_PKG_CONFIG(0.5)
+ fi
+
+ AC_MSG_CHECKING([for working $1 library and headers])
+
+ dnl Be pessimistic.
+ my_includedir=NO
+ my_libdir=NO
+ my_uname=LIB`echo $1 | tr [a-z] [A-Z]`
+
+ AC_ARG_WITH($1,
+ [ --with-$1=DIR
+ where the $1 is located],
+ [my_includedir="$withval"
+ my_libdir="$withval"]
+ )
+
+ AC_ARG_WITH($1-includes,
+ [ --with-$1-includes=DIR
+ where the $1 includes are located],
+ [my_includedir="$withval"]
+ )
+
+ AC_ARG_WITH($1-library,
+ [ --with-$1-library=DIR
+ where the $1 library is installed],
+ [my_libdir="$withval"]
+ )
+
+ # Find paths to headers & package config.
+ if test "$my_includedir" != NO; then
+ my_dirs="$my_includedir $my_includedir/include"
+ MY_FIND_FILE($4,$my_dirs,my_includedir,my_header)
+ else
+ my_dirs=`$PKG_CONFIG --variable=includedir lib$1`
+ MY_FIND_FILE($4,$my_dirs,my_includedir,my_header)
+ fi
+
+ dnl find libs
+ if test "$my_libdir" != NO; then
+ my_dirs="$my_libdir $my_libdir/lib $my_libdir/src"
+ MY_FIND_FILE(lib$1.la,$my_dirs,my_libdir)
+ if test "$my_libdir" = NO; then
+ AC_MSG_ERROR([
+Unable to locate lib$1 library in:
+ $my_dirs
+Please check your installation!
+ ])
+ fi
+ PKG_CONFIG_PATH="$my_libdir:$my_libdir/pkgconfig:$my_libdir/../unix"
+ export PKG_CONFIG_PATH
+ else
+ my_libdir=`$PKG_CONFIG --variable=libdir lib$1`
+ fi
+
+ dnl See if pkg-config locates the library
+ if $PKG_CONFIG --atleast-version=$2 lib$1; then
+ :
+ else
+ AC_MSG_ERROR([
+pkg-config couldn't locate lib$1 $2 in:
+ $PKG_CONFIG_PATH
+Please check your installation!
+ ])
+ fi
+
+ dnl Get cflags and ldflags seperatly
+ my_cxxflags=`$PKG_CONFIG --define-variable=includedir=$my_includedir --cflags lib$1`
+ my_ldflags=`$PKG_CONFIG --define-variable=libdir=$my_libdir --libs lib$1`
+ eval ${my_uname}_CXXFLAGS=\"$my_cxxflags\"
+ eval ${my_uname}_LDFLAGS=\"$my_ldflags\"
+
+ if test "$3" != ""; then
+ my_vars="$3"
+ for my_var in $my_vars; do
+ my_out=${my_uname}_`echo $my_var | tr [a-z] [A-Z]`
+ eval $my_out=\`$PKG_CONFIG --variable=$my_var lib$1\`
+ done
+ fi
+
+ AC_MSG_RESULT([$my_libdir, $my_includedir])
+
+ dnl Check if found library works
+ MY_TRY_COMPILE($my_cxxflags,$my_ldflags,$my_header,$5,my_works)
+ if test "$my_works" = NO; then
+ AC_MSG_ERROR([
+$1 build test failed with found library and header files.
+Please check your installation!
+ ])
+ fi
+
+ dnl Optional parameter - return used header
+ if test "$6" != ""; then
+ $6=$my_header
+ fi
+
+ dnl Restore path for next library
+ PKG_CONFIG_PATH=$my_save_pkg_config_path
+ export PKG_CONFIG_PATH
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Find library on the system. You will automatically LDFLAGS & CXXFLAGS.
+dnl Results in uppercase output variables $library_$variable.
+dnl $1 - library
+dnl $2 - additional include paths
+dnl $3 - additional library paths
+dnl $4 - library header
+dnl $5 - program body
+dnl [$6 - used header]
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_FIND_LIB,
+[
+ AC_MSG_CHECKING([for working $1 library and headers])
+
+ if test "$my_def_prefix" = ""; then
+ MY_EXPAND_PREFIX
+ fi
+
+ dnl Be pessimistic.
+ my_libdir=""
+ my_includedir=""
+ my_uname=LIB`echo $1 | tr [a-z] [A-Z]`
+
+ AC_ARG_WITH($1,
+ [ --with-$1=DIR
+ where the $1 is located],
+ [my_includedir="$withval"
+ my_libdir="$withval"
+ ]
+ )
+
+ AC_ARG_WITH($1-includes,
+ [ --with-$1-includes=DIR
+ where the $1 includes are located],
+ [my_includedir="$withval"]
+ )
+
+ AC_ARG_WITH($1-library,
+ [ --with-$1-library=DIR
+ where the $1 library is installed],
+ [my_libdir="$withval"]
+ )
+
+ # Test compilation with library and headers in standard path.
+ my_ldflags="-l$1"
+ my_cxxflags=""
+ my_works=NO
+
+ # Use library path given by user (if any).
+ if test "$my_libdir" != ""; then
+ my_dirs="$my_libdir $my_libdir/lib $my_libdir/src"
+ MY_FIND_FILE(lib$1.la,$my_dirs,my_libdir)
+ my_ldflags="$my_libdir/lib$1.la"
+ fi
+
+ if test "$my_libdir" != NO; then
+ # Use include path given by user (if any).
+ if test "$my_includedir" != ""; then
+ my_dirs="$my_includedir $my_includedir/include"
+ MY_FIND_FILE($4,$my_dirs,my_includedir,my_header)
+ if test "$my_includedir" != NO; then
+ my_cxxflags="-I$my_includedir"
+ # Run test compilation.
+ MY_TRY_COMPILE($my_cxxflags,$my_ldflags,$my_header,$5,my_works)
+ fi
+ else
+ # Header files are on the system so run compile tests until
+ # we find the correct one
+ for i in $4; do
+ MY_TRY_COMPILE($my_cxxflags,$my_ldflags,$i,$5,my_works)
+ if test "$my_works" != NO; then
+ my_header="$i"
+ break
+ fi
+ done
+ fi
+ fi
+
+ if test "$my_works" = NO; then
+ # Test compilation failed.
+ # Need to search for library and headers
+ # Search common locations where header files might be stored.
+ my_dirs="$2 $my_def_includedir $my_def_prefix/include \
+ /usr/include /usr/local/include /usr/lib/$1/include \
+ /usr/local/lib/$1/include"
+ MY_FIND_FILE($4,$my_dirs,my_includedir,my_header)
+ my_cxxflags="-I$my_includedir"
+
+ # Search common locations where library might be stored.
+ my_dirs="$3 $my_def_libdir $my_def_prefix/lib \
+ /usr/lib /usr/local/lib /usr/lib/$1/lib /usr/local/lib/$1/lib"
+ MY_FIND_FILE(lib$1.la,$my_dirs,my_libdir)
+ my_ldflags="$my_libdir/lib$1.la"
+
+ if test "$my_includedir" != NO && test "$my_libdir" != NO; then
+ # Test compilation with found paths.
+ MY_TRY_COMPILE($my_cxxflags,$my_ldflags,$my_header,$5,my_works)
+ fi
+
+ AC_MSG_RESULT([library $my_libdir, headers $my_includedir])
+ if test "$my_works" = NO; then
+ AC_MSG_ERROR([
+$1 build test failed with found library and header files.
+Please check your installation!
+ ])
+ fi
+ else
+ AC_MSG_RESULT(yes)
+ fi
+
+ eval ${my_uname}_CXXFLAGS=\"$my_cxxflags\"
+ eval ${my_uname}_LDFLAGS=\"$my_ldflags\"
+
+ dnl Optional parameter - return used header
+ if test "$6" != ""; then
+ $6=$my_header
+ fi
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Find library on the system. This is used to find libraries that are not
+dnl built/installed. The include, lib path must be provided individually and it
+dnl is not possible to validate the library path.
+dnl $1 - library
+dnl $2 - library header
+dnl [$3 - used header]
+dnl -------------------------------------------------------------------------
+AC_DEFUN(MY_FIND_LIB_NO_CHECK,
+[
+ AC_MSG_CHECKING([for $1 library and headers])
+
+ my_libdir=""
+ my_includedir=""
+ my_uname=LIB`echo $1 | tr [a-z] [A-Z]`
+
+ AC_ARG_WITH($1-includes,
+ [ --with-$1-includes=DIR
+ where the $1 includes are located],
+ [my_includedir="$withval"]
+ )
+
+ AC_ARG_WITH($1-library,
+ [ --with-$1-library=DIR
+ where the $1 library is installed],
+ [my_libdir="$withval"]
+ )
+
+ dnl Both paths must be provided
+ if test "$my_libdir" = ""; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+$1 library path not supplied!
+ ])
+ fi
+
+ if test "$my_includedir" = ""; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+$1 include path not supplied!
+ ])
+ fi
+
+ dnl Check the include path
+ my_dirs="$my_includedir"
+ MY_FIND_FILE($2,$my_dirs,my_includedir,my_header)
+
+ if test "$my_includedir" = NO; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+$1 headers not found!
+ ])
+ fi
+
+ AC_MSG_RESULT(yes)
+ eval ${my_uname}_CXXFLAGS=\"-I$my_includedir\"
+ eval ${my_uname}_LDFLAGS=\"$my_libdir/lib$1.la\"
+
+ dnl Optional parameter - return used header
+ if test "$3" != ""; then
+ $3=$my_header
+ fi
+])