1 dnl 2 dnl @synopsis CHECK_LLVM([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) 3 dnl 4 dnl @summary check LLVM, set up variables: 5 dnl LLVM_CFLAGS="`${LLVM_CONFIG_BIN} --cflags`" 6 dnl LLVM_CPPFLAGS="`${LLVM_CONFIG_BIN} --cxxflags`" 7 dnl LLVM_LDFLAGS="`${LLVM_CONFIG_BIN} --ldflags --libs`" 8 dnl 9 dnl Luba Tang <lubatang (a] gmail.com> 10 11 12 AC_DEFUN([CHECK_LLVM], 13 [dnl 14 15 AC_ARG_WITH( 16 [llvm-config], 17 [AS_HELP_STRING([--with-llvm-config[[=PATH]]], 18 [path to llvm-config (by default, searching in $PATH)])], 19 [llvm_config_path="${withval}"], 20 [llvm_config_path="/usr/"]) 21 22 #Set up ${LLVM_CONFIG_BIN} 23 AC_MSG_CHECKING(for llvm-config) 24 25 if test -x "${llvm_config_path}" -a ! -d "${llvm_config_path}"; then 26 LLVM_CONFIG_BIN=${llvm_config_path} 27 AC_MSG_RESULT([yes]) 28 else 29 AC_MSG_RESULT([no]) 30 llvm_config_path=${PATH} 31 if test -d "${LLVM_BINDIR}"; then 32 llvm_config_path="${llvm_config_path}:${LLVM_BINDIR}" 33 fi 34 AC_PATH_PROG(LLVM_CONFIG_BIN, llvm-config, [no], ${llvm_config_path}) 35 if test "${LLVM_CONFIG_BIN}" = "no"; then 36 ifelse([$3], , , [$3]) 37 AC_MSG_NOTICE([*** The 'llvm-config' is not found!]) 38 AC_MSG_ERROR([*** Please use --with-llvm-config option with the full path of 'llvm-config'.]) 39 fi 40 fi 41 42 dnl Use llvm-config to do: 43 dnl 1. is the minimum version correct? 44 dnl 2. the includedir 45 dnl 3. the flags - cflags, cxxflags, cppflags, ldflags 46 dnl 4. the libs 47 AC_MSG_CHECKING(for llvm - version >= $1) 48 cur_version="`${LLVM_CONFIG_BIN} --version`"; 49 tool_major="`${LLVM_CONFIG_BIN} --version | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\1/'`" 50 tool_minor="`${LLVM_CONFIG_BIN} --version | sed 's/svn//'| sed 's/\([[0-9]]*\).\([[0-9]]*\)/\2/'`" 51 52 require_major="`echo $1 | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\1/'`" 53 require_minor="`echo $1 | sed 's/svn//' | sed 's/\([[0-9]]*\).\([[0-9]]*\)/\2/'`" 54 55 if test "${tool_major}" -lt "${require_major}"; then 56 AC_MSG_RESULT([no]) 57 AC_MSG_ERROR([*** The version of LLVM is too low! (${cur_version}<$1)]) 58 elif test "${tool_major}" -eq "${require_major}"; then 59 if test "${tool_minor}" -lt "${require_minor}"; then 60 AC_MSG_RESULT([no]) 61 AC_MSG_ERROR([*** The version of LLVM is too low! (${cur_version}<$1)]) 62 fi 63 fi 64 AC_MSG_RESULT([yes]) 65 66 LLVM_CFLAGS="`${LLVM_CONFIG_BIN} --cflags`" 67 LLVM_CPPFLAGS="`${LLVM_CONFIG_BIN} --cxxflags`" 68 LLVM_LDFLAGS="`${LLVM_CONFIG_BIN} --libs`" 69 LLVM_LDFLAGS="${LLVM_LDFLAGS} `${LLVM_CONFIG_BIN} --ldflags`" 70 LLVM_LDFLAGS="`echo ${LLVM_LDFLAGS} | sed 's/\n//g'`" 71 LLVM_LDFLAGS="`echo ${LLVM_LDFLAGS} | sed 's/-lgtest_main -lgtest//g'`" 72 LLVM_VERSION=${tool_major} 73 74 AC_SUBST(LLVM_CFLAGS) 75 AC_SUBST(LLVM_CPPFLAGS) 76 AC_SUBST(LLVM_LDFLAGS) 77 AC_SUBST(LLVM_VERSION) 78 ifelse([$2], , , [$2]) 79 80 AC_CACHE_CHECK([type of operating system we're going to host on], 81 [llvm_cv_platform_type], 82 [case $host in 83 *-*-aix*) 84 llvm_cv_platform_type="Unix" ;; 85 *-*-irix*) 86 llvm_cv_platform_type="Unix" ;; 87 *-*-cygwin*) 88 llvm_cv_platform_type="Unix" ;; 89 *-*-darwin*) 90 llvm_cv_platform_type="Unix" ;; 91 *-*-minix*) 92 llvm_cv_platform_type="Unix" ;; 93 *-*-freebsd*) 94 llvm_cv_platform_type="Unix" ;; 95 *-*-openbsd*) 96 llvm_cv_platform_type="Unix" ;; 97 *-*-netbsd*) 98 llvm_cv_platform_type="Unix" ;; 99 *-*-dragonfly*) 100 llvm_cv_platform_type="Unix" ;; 101 *-*-hpux*) 102 llvm_cv_platform_type="Unix" ;; 103 *-*-interix*) 104 llvm_cv_platform_type="Unix" ;; 105 *-*-linux*) 106 llvm_cv_platform_type="Unix" ;; 107 *-*-solaris*) 108 llvm_cv_platform_type="Unix" ;; 109 *-*-auroraux*) 110 llvm_cv_platform_type="Unix" ;; 111 *-*-win32*) 112 llvm_cv_platform_type="Win32" ;; 113 *-*-mingw*) 114 llvm_cv_platform_type="Win32" ;; 115 *-*-haiku*) 116 llvm_cv_platform_type="Unix" ;; 117 *-unknown-eabi*) 118 llvm_cv_platform_type="Unix" ;; 119 *-unknown-elf*) 120 llvm_cv_platform_type="Unix" ;; 121 *) 122 llvm_cv_platform_type="Unknown" ;; 123 esac]) 124 125 dnl Set the "LLVM_ON_*" variables based on llvm_cv_llvm_cv_platform_type 126 dnl This is used by lib/Support to determine the basic kind of implementation 127 dnl to use. 128 case $llvm_cv_platform_type in 129 Unix) 130 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 131 AC_SUBST(LLVM_ON_UNIX,[1]) 132 AC_SUBST(LLVM_ON_WIN32,[0]) 133 ;; 134 Win32) 135 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 136 AC_SUBST(LLVM_ON_UNIX,[0]) 137 AC_SUBST(LLVM_ON_WIN32,[1]) 138 ;; 139 esac 140 ]) 141