blob: 018a7ce064e0513ddaba3185c15de2f6062cb835 [file] [log] [blame]
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
])