| 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 |
| ]) |