1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
])
|