some fixes and organizational adjustments to assert code, parsers/lexers, and build...
[cvc5.git] / config / antlr.m4
1 ##
2 # Check for ANTLR's runantlr script. Will set ANTLR to the location of the
3 # runantlr script
4 ##
5 AC_DEFUN([AC_PROG_ANTLR], [
6
7 # Get the location of the runantlr script
8 AC_ARG_WITH(
9 [antlr],
10 AC_HELP_STRING(
11 [--with-antlr=RUNANTLR],
12 [location of the ANTLR's `runantlr` script]
13 ),
14 ANTLR="$withval",
15 )
16
17 # Check the existance of the runantlr script
18 if test -z "$ANTLR"; then
19 AC_CHECK_PROGS(ANTLR, [runantlr antlr])
20 else
21 AC_CHECK_PROG(ANTLR, "$ANTLR", "$ANTLR", [])
22 fi
23 if test no$ANTLR = "no";
24 then
25 AC_MSG_WARN(
26 [Couldn't find the runantlr script, make sure that the parser code has
27 been generated already. To obtain ANTLR see <http://www.antlr.org/>.]
28 )
29 AC_MSG_RESULT(no)
30 fi
31
32 # Define the ANTL related variables
33 AC_SUBST(ANTLR)
34 ])
35
36 ##
37 # Check the existnace of the ANTLR C++ runtime library and headers
38 # Will set ANTLR_CPPFLAGS and ANTLR_LIBS to the location of the ANTLR headers
39 # and library respectively
40 ##
41 AC_DEFUN([AC_LIB_ANTLR],[
42
43 # Get the location of the ANTLR c++ includes and libraries
44 AC_ARG_WITH(
45 [antlr-prefix],
46 AC_HELP_STRING(
47 [--with-antlr-prefix=PATH],
48 [set the search path for ANTLR headers and libraries to `PATH/include`
49 and `PATH/lib`. By default we look in /usr, /usr/local, /opt and
50 /opt/local.
51 ]
52 ),
53 ANTLR_PREFIXES="$withval",
54 ANTLR_PREFIXES="/usr/local /usr /opt/local /opt"
55 )
56
57 AC_MSG_CHECKING(for antlr C++ runtime library)
58
59 # Use C++ and remember the variables we are changing
60 AC_LANG_PUSH(C++)
61 OLD_CPPFLAGS="$CPPFLAGS"
62 OLD_LIBS="$LIBS"
63
64 # Try all the includes/libs set in ANTLR_PREFIXES
65 for antlr_prefix in $ANTLR_PREFIXES
66 do
67 CPPFLAGS="$OLD_CPPFLAGS -I$antlr_prefix/include"
68 LIBS="$OLD_LIBS -L$antlr_prefix/lib -lantlr-pic"
69 AC_LINK_IFELSE(
70 [
71 #include <antlr/CommonAST.hpp>
72 class MyAST : public ANTLR_USE_NAMESPACE(antlr)CommonAST {
73 };
74 int main() {
75 MyAST ast;
76 }
77 ],
78 [
79 AC_MSG_RESULT(found in $antlr_prefix)
80 ANTLR_INCLUDES="-I$antlr_prefix/include"
81 ANTLR_LDFLAGS="-L$antlr_prefix/lib -lantlr-pic"
82 break
83 ],
84 [
85 CPPFLAGS="$OLD_CPPFLAGS -I$antlr_prefix/include"
86 LIBS="$OLD_LIBS -L$antlr_prefix/lib -lantlr"
87 AC_LINK_IFELSE(
88 [
89 #include <antlr/CommonAST.hpp>
90 class MyAST : public ANTLR_USE_NAMESPACE(antlr)CommonAST {
91 };
92 int main() {
93 MyAST ast;
94 }
95 ],
96 [
97 AC_MSG_RESULT(found in $antlr_prefix)
98 ANTLR_INCLUDES="-I$antlr_prefix/include"
99 ANTLR_LDFLAGS="-L$antlr_prefix/lib -lantlr"
100 break
101 ],
102 [
103 AC_MSG_RESULT(no)
104 AC_MSG_ERROR([ANTLR C++ runtime not found, see <http://www.antlr.org/>])
105 ]
106 )
107 ]
108 )
109 done
110
111 # Return the old compile variables and pop the language.
112 LIBS="$OLD_LIBS"
113 CPPFLAGS="$OLD_CPPFLAGS"
114 AC_LANG_POP()
115
116 # Define the ANTLR include/libs variables
117 AC_SUBST(ANTLR_INCLUDES)
118 AC_SUBST(ANTLR_LDFLAGS)
119 ])