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.0 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.0) dnl AC_CHECK_LIBMCPU(0.4.0,,,CFLAGS="$CFLAGS -DHAVE_LIBMCPU $LIBMCPU_CFLAGS") dnl AC_CHECK_LIBMCPU(0.4.0,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 ])