Home | History | Annotate | Download | only in m4
      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