summaryrefslogtreecommitdiff
path: root/libmcpu.m4
diff options
context:
space:
mode:
Diffstat (limited to 'libmcpu.m4')
-rw-r--r--libmcpu.m4231
1 files changed, 231 insertions, 0 deletions
diff --git a/libmcpu.m4 b/libmcpu.m4
new file mode 100644
index 0000000..f81a1a6
--- /dev/null
+++ b/libmcpu.m4
@@ -0,0 +1,231 @@
+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 <<EOT | sed -e 's/^[[ ]]*/ | /' -e 's/>>/ /' 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 <libmcpu.h>
+ ]])], _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 <libmcpu.h>
+
+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
+])
+