summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4')
-rw-r--r--m4/gtest.m474
-rw-r--r--m4/llvm-target.m465
-rw-r--r--m4/llvm.m4140
3 files changed, 279 insertions, 0 deletions
diff --git a/m4/gtest.m4 b/m4/gtest.m4
new file mode 100644
index 0000000..6598ba7
--- /dev/null
+++ b/m4/gtest.m4
@@ -0,0 +1,74 @@
+dnl GTEST_LIB_CHECK([minimum version [,
+dnl action if found [,action if not found]]])
+dnl
+dnl Check for the presence of the Google Test library, optionally at a minimum
+dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines
+dnl standard variables for substitution including GTEST_CPPFLAGS,
+dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines
+dnl GTEST_VERSION as the version of Google Test found. Finally, it provides
+dnl optional custom action slots in the event GTEST is found or not.
+AC_DEFUN([GTEST_LIB_CHECK],
+[
+dnl Provide a flag to enable or disable Google Test usage.
+AC_ARG_ENABLE([gtest],
+ [AS_HELP_STRING([--enable-gtest],
+ [Enable tests using the Google C++ Testing Framework.
+ (Default is enabled.)])],
+ [],
+ [enable_gtest=])
+AC_ARG_VAR([GTEST_CONFIG],
+ [The exact path of Google Test's 'gtest-config' script.])
+AC_ARG_VAR([GTEST_CPPFLAGS],
+ [C-like preprocessor flags for Google Test.])
+AC_ARG_VAR([GTEST_CXXFLAGS],
+ [C++ compile flags for Google Test.])
+AC_ARG_VAR([GTEST_LDFLAGS],
+ [Linker path and option flags for Google Test.])
+AC_ARG_VAR([GTEST_LIBS],
+ [Library linking flags for Google Test.])
+AC_ARG_VAR([GTEST_VERSION],
+ [The version of Google Test available.])
+HAVE_GTEST="no"
+AS_IF([test "x${enable_gtest}" != "xno"],
+ [AC_MSG_CHECKING([for 'gtest-config'])
+ AS_IF([test "x${enable_gtest}" != "xyes"],
+ [AS_IF([test -x "${enable_gtest}/scripts/gtest-config"],
+ [GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"],
+ [GTEST_CONFIG="${enable_gtest}/bin/gtest-config"])
+ AS_IF([test -x "${GTEST_CONFIG}"], [],
+ [AC_MSG_RESULT([no])
+ AC_MSG_ERROR([dnl
+Unable to locate either a built or installed Google Test.
+The specific location '${enable_gtest}' was provided for a built or installed
+Google Test, but no 'gtest-config' script could be found at this location.])
+ ])],
+ [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
+ AS_IF([test -x "${GTEST_CONFIG}"],
+ [AC_MSG_RESULT([${GTEST_CONFIG}])
+ m4_ifval([$1],
+ [_gtest_min_version="--min-version=$1"
+ AC_MSG_CHECKING([for Google Test at least version >= $1])],
+ [_gtest_min_version="--min-version=0"
+ AC_MSG_CHECKING([for Google Test])])
+ AS_IF([${GTEST_CONFIG} ${_gtest_min_version}],
+ [AC_MSG_RESULT([yes])
+ HAVE_GTEST='yes'],
+ [AC_MSG_RESULT([no])])],
+ [AC_MSG_RESULT([no])])
+ AS_IF([test "x${HAVE_GTEST}" = "xyes"],
+ [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
+ GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
+ GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
+ GTEST_LIBS=`${GTEST_CONFIG} --libs`
+ GTEST_VERSION=`${GTEST_CONFIG} --version`
+ AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])],
+ [AS_IF([test "x${enable_gtest}" = "xyes"],
+ [AC_MSG_ERROR([dnl
+Google Test was enabled, but no viable version could be found.])
+ ])])])
+AC_SUBST([HAVE_GTEST])
+AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"])
+AS_IF([test "x$HAVE_GTEST" = "xyes"],
+ [m4_ifval([$2], [$2])],
+ [m4_ifval([$3], [$3])])
+])
diff --git a/m4/llvm-target.m4 b/m4/llvm-target.m4
new file mode 100644
index 0000000..0dbcd51
--- /dev/null
+++ b/m4/llvm-target.m4
@@ -0,0 +1,65 @@
+dnl
+dnl @synopsis ENUM_LLVM_TARGETS
+dnl
+dnl @summary enumlate LLVM Targets, set up variables:
+dnl LLVM_ENUM_TARGETS
+dnl LLVM_ENUM_LINKERS
+dnl
+dnl Luba Tang <lubatang@mediatek.com>
+
+AC_DEFUN([ENUM_LLVM_TARGETS],
+[dnl
+ dnl from ${LLVM}/autoconf/configure.ac
+ dnl Allow specific targets to be specified for building (or not)
+ TARGETS_TO_BUILD="";
+
+ AC_ARG_ENABLE([targets],
+ [AS_HELP_STRING([--enable-targets],
+ [Build specific host targets: all or target1,target2,... Valid targets are:
+ host, x86, x86_64, sparc, powerpc, alpha, arm, mips, spu,
+ xcore, msp430, systemz, blackfin, ptx, cbe, and cpp (default=all)])],
+ [],
+ [enableval=all])
+
+ case "$enableval" in
+ all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU XCore MSP430 SystemZ Blackfin CBackend CppBackend MBlaze PTX" ;;
+ *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
+ case "$a_target" in
+ x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
+ x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
+ sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
+ powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
+ alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;;
+ arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
+ mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
+ spu) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
+ xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
+ msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
+ systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
+ blackfin) TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;;
+ cbe) TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" ;;
+ cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
+ mblaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
+ ptx) TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
+ *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
+ esac
+ done
+ ;;
+ esac
+ AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
+
+ dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
+ dnl target feature def files.
+ LLVM_ENUM_TARGETS=""
+ LLVM_ENUM_LINKERS=""
+ for target_to_build in $TARGETS_TO_BUILD; do
+ if test -d ${srcdir}/lib/Target/${target_to_build} ; then
+ LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
+ fi
+ if test -f ${srcdir}/lib/Target/${target_to_build}/*LDBackend.cpp ; then
+ LLVM_ENUM_LINKERS="LLVM_LINKER($target_to_build) $LLVM_ENUM_LINKERS";
+ fi
+ done
+ AC_SUBST(LLVM_ENUM_TARGETS)
+ AC_SUBST(LLVM_ENUM_LINKERS)
+])
diff --git a/m4/llvm.m4 b/m4/llvm.m4
new file mode 100644
index 0000000..018a7ce
--- /dev/null
+++ b/m4/llvm.m4
@@ -0,0 +1,140 @@
+dnl
+dnl @synopsis CHECK_LLVM([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl
+dnl @summary check LLVM, set up variables:
+dnl LLVM_CFLAGS="`${LLVM_CONFIG_BIN} --cflags`"
+dnl LLVM_CPPFLAGS="`${LLVM_CONFIG_BIN} --cxxflags`"
+dnl LLVM_LDFLAGS="`${LLVM_CONFIG_BIN} --ldflags --libs`"
+dnl
+dnl Luba Tang <lubatang@gmail.com>
+
+
+AC_DEFUN([CHECK_LLVM],
+[dnl
+
+ AC_ARG_WITH(
+ [llvm-config],
+ [AS_HELP_STRING([--with-llvm-config[[=PATH]]],
+ [path to llvm-config (by default, searching in $PATH)])],
+ [llvm_config_path="${withval}"],
+ [llvm_config_path="/usr/"])
+
+ #Set up ${LLVM_CONFIG_BIN}
+ AC_MSG_CHECKING(for llvm-config)
+
+ if test -x "${llvm_config_path}" -a ! -d "${llvm_config_path}"; then
+ LLVM_CONFIG_BIN=${llvm_config_path}
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ llvm_config_path=${PATH}
+ if test -d "${LLVM_BINDIR}"; then
+ llvm_config_path="${llvm_config_path}:${LLVM_BINDIR}"
+ fi
+ AC_PATH_PROG(LLVM_CONFIG_BIN, llvm-config, [no], ${llvm_config_path})
+ if test "${LLVM_CONFIG_BIN}" = "no"; then
+ ifelse([$3], , , [$3])
+ AC_MSG_NOTICE([*** The 'llvm-config' is not found!])
+ AC_MSG_ERROR([*** Please use --with-llvm-config option with the full path of 'llvm-config'.])
+ fi
+ fi
+
+ dnl Use llvm-config to do:
+ dnl 1. is the minimum version correct?
+ dnl 2. the includedir
+ dnl 3. the flags - cflags, cxxflags, cppflags, ldflags
+ dnl 4. the libs
+ AC_MSG_CHECKING(for llvm - version >= $1)
+ cur_version="`${LLVM_CONFIG_BIN} --version`";
+ tool_major="`${LLVM_CONFIG_BIN} --version | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\1/'`"
+ tool_minor="`${LLVM_CONFIG_BIN} --version | sed 's/svn//'| sed 's/\([[0-9]]*\).\([[0-9]]*\)/\2/'`"
+
+ require_major="`echo $1 | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\1/'`"
+ require_minor="`echo $1 | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\2/'`"
+
+ if test "${tool_major}" -lt "${require_major}"; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([*** The version of LLVM is too low! (${cur_version}<$1)])
+ elif test "${tool_major}" -eq "${require_major}"; then
+ if test "${tool_minor}" -lt "${require_minor}"; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([*** The version of LLVM is too low! (${cur_version}<$1)])
+ fi
+ fi
+ AC_MSG_RESULT([yes])
+
+ LLVM_CFLAGS="`${LLVM_CONFIG_BIN} --cflags`"
+ LLVM_CPPFLAGS="`${LLVM_CONFIG_BIN} --cxxflags`"
+ LLVM_LDFLAGS="`${LLVM_CONFIG_BIN} --libs`"
+ LLVM_LDFLAGS="${LLVM_LDFLAGS} `${LLVM_CONFIG_BIN} --ldflags`"
+ LLVM_LDFLAGS="`echo ${LLVM_LDFLAGS} | sed 's/\n//g'`"
+ LLVM_LDFLAGS="`echo ${LLVM_LDFLAGS} | sed 's/-lgtest_main -lgtest//g'`"
+ LLVM_VERSION=${tool_major}
+
+ AC_SUBST(LLVM_CFLAGS)
+ AC_SUBST(LLVM_CPPFLAGS)
+ AC_SUBST(LLVM_LDFLAGS)
+ AC_SUBST(LLVM_VERSION)
+ ifelse([$2], , , [$2])
+
+ AC_CACHE_CHECK([type of operating system we're going to host on],
+ [llvm_cv_platform_type],
+ [case $host in
+ *-*-aix*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-irix*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-cygwin*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-darwin*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-minix*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-freebsd*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-openbsd*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-netbsd*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-dragonfly*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-hpux*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-interix*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-linux*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-solaris*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-auroraux*)
+ llvm_cv_platform_type="Unix" ;;
+ *-*-win32*)
+ llvm_cv_platform_type="Win32" ;;
+ *-*-mingw*)
+ llvm_cv_platform_type="Win32" ;;
+ *-*-haiku*)
+ llvm_cv_platform_type="Unix" ;;
+ *-unknown-eabi*)
+ llvm_cv_platform_type="Unix" ;;
+ *-unknown-elf*)
+ llvm_cv_platform_type="Unix" ;;
+ *)
+ llvm_cv_platform_type="Unknown" ;;
+ esac])
+
+ dnl Set the "LLVM_ON_*" variables based on llvm_cv_llvm_cv_platform_type
+ dnl This is used by lib/Support to determine the basic kind of implementation
+ dnl to use.
+ case $llvm_cv_platform_type in
+ Unix)
+ AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
+ AC_SUBST(LLVM_ON_UNIX,[1])
+ AC_SUBST(LLVM_ON_WIN32,[0])
+ ;;
+ Win32)
+ AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
+ AC_SUBST(LLVM_ON_UNIX,[0])
+ AC_SUBST(LLVM_ON_WIN32,[1])
+ ;;
+ esac
+])