dnl #
dnl # /usr/share/aclocal/libmcpu.m4
dnl #
dnl # Configure paths for libmcpu
dnl # Andrey V.Kosteltsev
dnl ============================================================
dnl
dnl Synopsis:
dnl AC_CHECK_LIBMCPU([MIN-VERSION [, # minimum libmcpu version, e.g. 0.4.1
dnl DEFAULT-WITH-LIBMCPU [, # default value for --with-libmcpu option
dnl ACTION-IF-FOUND [, # action to perform if libmcpu was found
dnl ACTION-IF-NOT-FOUND # action to perform if libmcpu was not found
dnl ]]]])
dnl Examples:
dnl AC_CHECK_LIBMCPU(0.4.1)
dnl AC_CHECK_LIBMCPU(0.4.1,,,CFLAGS="$CFLAGS -DHAVE_LIBMCPU $LIBMCPU_CFLAGS")
dnl AC_CHECK_LIBMCPU(0.4.1,yes,CFLAGS="$CFLAGS -DHAVE_LIBMCPU")
dnl
dnl
dnl If you have to change prefix returned by mcpu-config script or change
dnl location of mcpu-config, you may set environment variable LIBMCPU_CONFIG,
dnl for example:
dnl
dnl # export LIBMCPU_CONFIG="/usr/bin/mcpu-config"
dnl
dnl ============================================================
dnl
dnl ============================================================
dnl auxilliary macros
dnl ============================================================
AC_DEFUN([_AC_LIBMCPU_ERROR], [dnl
AC_MSG_RESULT([*FAILED*])
cat <>/ /' 1>&2
$1
EOT
exit 1
])
AC_DEFUN([_AC_LIBMCPU_VERBOSE], [dnl
if test "x$verbose" = "xyes"; then
AC_MSG_RESULT([ $1])
fi
])
dnl ============================================================
dnl the user macro
dnl ============================================================
AC_DEFUN([AC_CHECK_LIBMCPU], [dnl
dnl
dnl ============================================================
dnl prerequisites
dnl ============================================================
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
dnl
dnl ============================================================
dnl set LIBMCPU_CONFIG variable
dnl ============================================================
if test -z "$LIBMCPU_CONFIG"; then
LIBMCPU_CONFIG='mcpu-config'
fi
dnl
LIBMCPU_CPPFLAGS=''
LIBMCPU_CFLAGS=''
LIBMCPU_LDFLAGS=''
LIBMCPU_LIBS=''
AC_SUBST(LIBMCPU_CPPFLAGS)
AC_SUBST(LIBMCPU_CFLAGS)
AC_SUBST(LIBMCPU_LDFLAGS)
AC_SUBST(LIBMCPU_LIBS)
dnl
dnl ============================================================
dnl command line options
dnl ============================================================
AC_MSG_CHECKING(for libmcpu)
_AC_LIBMCPU_VERBOSE([])
AC_ARG_WITH(libmcpu,dnl
[ --with-libmcpu[=yes|no] Build with libmcpu Library (default=]ifelse([$2],,yes,$2)[)],dnl
,dnl
with_libmcpu="ifelse([$2],,yes,$2)"
)dnl
_AC_LIBMCPU_VERBOSE([+ Command Line Options:])
_AC_LIBMCPU_VERBOSE([ o --with-libmcpu=$with_libmcpu])
dnl
dnl ============================================================
dnl configuration
dnl ============================================================
if test "x$with_libmcpu" != "xno"; then
libmcpu_version=""
libmcpu_location=""
libmcpu_type=""
libmcpu_cppflags=""
libmcpu_cflags=""
libmcpu_ldflags=""
libmcpu_libs=""
if test "x$with_libmcpu" = "xyes"; then
# via config script in $PATH
changequote(, )dnl
libmcpu_version=`($LIBMCPU_CONFIG --version) 2>/dev/null |\
sed -e 's/^.*\([0-9]\.[0-9]*[ab.][0-9]*\).*$/\1/'`
changequote([, ])dnl
if test "x$libmcpu_version" != "x"; then
libmcpu_location=`$LIBMCPU_CONFIG --prefix`
libmcpu_type='installed'
libmcpu_cppflags=`$LIBMCPU_CONFIG --cppflags`
libmcpu_cflags=`$LIBMCPU_CONFIG --cflags`
libmcpu_ldflags=`$LIBMCPU_CONFIG --ldflags`
libmcpu_libs=`$LIBMCPU_CONFIG --libs`
fi
fi
dnl ========================================================
dnl Check whether the found version is sufficiently new
dnl ========================================================
_req_version="ifelse([$1],,1.0.0,$1)"
for _var in libmcpu_version _req_version; do
eval "_val=\"\$${_var}\""
_major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'`
_minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'`
_rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'`
_micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'`
case $_rtype in
"a" ) _rtype=0 ;;
"b" ) _rtype=1 ;;
"." ) _rtype=2 ;;
esac
_hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \
"major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"`
eval "${_var}_hex=\"\$_hex\""
done
_AC_LIBMCPU_VERBOSE([+ Determined Versions:])
_AC_LIBMCPU_VERBOSE([ o existing: $libmcpu_version -> 0x$libmcpu_version_hex])
_AC_LIBMCPU_VERBOSE([ o required: $_req_version -> 0x$_req_version_hex])
_ok=0
if test "x$libmcpu_version_hex" != "x"; then
if test "x$_req_version_hex" != "x"; then
if test $libmcpu_version_hex -ge $_req_version_hex; then
_ok=1
fi
fi
fi
if test "x$_ok" = "x0"; then
_AC_LIBMCPU_ERROR([dnl
Found libmcpu version $libmcpu_version, but required at least version $_req_version.
Upgrade libmcpu under $libmcpu_location to $_req_version or higher first, please.])
fi
dnl ========================================================
dnl Perform libmcpu Sanity Compile Check
dnl ========================================================
_ac_save_CPPFLAGS="$CPPFLAGS"
_ac_save_CFLAGS="$CFLAGS"
_ac_save_LDFLAGS="$LDFLAGS"
_ac_save_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $libmcpu_cppflags"
CFLAGS="$CFLAGS $libmcpu_cflags"
LDFLAGS="$LDFLAGS $libmcpu_ldflags"
LIBS="$LIBS $libmcpu_libs"
_AC_LIBMCPU_VERBOSE([+ Test Build Environment:])
_AC_LIBMCPU_VERBOSE([ o CPPFLAGS="$CPPFLAGS"])
_AC_LIBMCPU_VERBOSE([ o CFLAGS="$CFLAGS"])
_AC_LIBMCPU_VERBOSE([ o LDFLAGS="$LDFLAGS"])
_AC_LIBMCPU_VERBOSE([ o LIBS="$LIBS"])
cross_compile=no
_AC_LIBMCPU_VERBOSE([+ Performing Sanity Checks:])
_AC_LIBMCPU_VERBOSE([ o pre-processor test])
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
#include
]])], _ok=yes, _ok=no)
if test "x$_ok" != "xyes"; then
_AC_LIBMCPU_ERROR([dnl
Found libmcpu $libmcpu_version under $libmcpu_location, but
was unable to perform a sanity pre-processor check. This means
the libmcpu header libmcpu.h was not found.
We used the following build environment:
>> CPP="$CPP"
>> CPPFLAGS="$CPPFLAGS"
See config.log for possibly more details.])
fi
_AC_LIBMCPU_VERBOSE([ o link check])
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include
int main()
{
__cpu_init();
__cpu_free_context();
return( 0 );
}
]])], _ok=yes, _ok=no)
if test "x$_ok" != "xyes"; then
_AC_LIBMCPU_ERROR([dnl
Found libmcpu $libmcpu_version under $libmcpu_location, but
was unable to perform a sanity linker check. This means
the libmcpu library libmcpu.a was not found.
We used the following build environment:
>> CC="$CC"
>> CFLAGS="$CFLAGS"
>> LDFLAGS="$LDFLAGS"
>> LIBS="$LIBS"
See config.log for possibly more details.])
fi
CPPFLAGS="$_ac_save_CPPFLAGS"
CFLAGS="$_ac_save_CFLAGS"
LDFLAGS="$_ac_save_LDFLAGS"
LIBS="$_ac_save_LIBS"
LIBMCPU_CPPFLAGS="$libmcpu_cppflags"
LIBMCPU_CFLAGS="$libmcpu_cflags"
LIBMCPU_LDFLAGS="$libmcpu_ldflags"
LIBMCPU_LIBS="$libmcpu_libs"
AC_SUBST(LIBMCPU_CPPFLAGS)
AC_SUBST(LIBMCPU_CFLAGS)
AC_SUBST(LIBMCPU_LDFLAGS)
AC_SUBST(LIBMCPU_LIBS)
_AC_LIBMCPU_VERBOSE([+ Final Results:])
_AC_LIBMCPU_VERBOSE([ o LIBMCPU_CPPFLAGS="$LIBMCPU_CPPFLAGS"])
_AC_LIBMCPU_VERBOSE([ o LIBMCPU_CFLAGS="$LIBMCPU_CFLAGS"])
_AC_LIBMCPU_VERBOSE([ o LIBMCPU_LDFLAGS="$LIBMCPU_LDFLAGS"])
_AC_LIBMCPU_VERBOSE([ o LIBMCPU_LIBS="$LIBMCPU_LIBS"])
fi
if test "x$with_libmcpu" != "xno"; then
AC_MSG_RESULT([version $libmcpu_version, $libmcpu_type under $libmcpu_location])
ifelse([$3], , :, [$3])
else
AC_MSG_RESULT([no])
ifelse([$4], , :, [$4])
fi
])