handle pencil independent pragmas
[pet.git] / configure.ac
blob8ac9063d465ca54e6c18612b1e06e4bc871eab9f
1 AC_INIT([pet], [0.04], [isl-development@googlegroups.com])
2 AC_CONFIG_AUX_DIR([build-aux])
3 AC_CONFIG_MACRO_DIR([m4])
4 AM_INIT_AUTOMAKE([foreign])
5 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
6 AC_SUBST(versioninfo)
7 versioninfo=4:0:0
9 AC_PROG_CC
10 AC_PROG_CXX
11 AC_PROG_GREP
12 AC_PROG_LIBTOOL
14 AC_SUBST(CLANG_CXXFLAGS)
15 AC_SUBST(CLANG_LDFLAGS)
16 AC_SUBST(CLANG_LIBS)
17 AX_SUBMODULE(clang,system,system)
18 llvm_config="llvm-config"
19 AC_CHECK_PROG([llvm_config_found], ["$llvm_config"], [yes])
20 if test "x$with_clang_prefix" != "x"; then
21         llvm_config="$with_clang_prefix/bin/llvm-config"
22         if test -x "$llvm_config"; then
23                 llvm_config_found=yes
24         fi
26 if test "$llvm_config_found" != yes; then
27         AC_MSG_ERROR([llvm-config not found])
29 CLANG_CXXFLAGS=`$llvm_config --cxxflags`
30 CLANG_LDFLAGS=`$llvm_config --ldflags`
31 targets=`$llvm_config --targets-built`
32 components="$targets asmparser bitreader support mc"
33 $llvm_config --components | $GREP option > /dev/null 2> /dev/null
34 if test $? -eq 0; then
35         components="$components option"
37 CLANG_LIBS=`$llvm_config --libs $components`
38 systemlibs=`$llvm_config --system-libs 2> /dev/null | tail -1`
39 if test $? -eq 0; then
40         CLANG_LIBS="$CLANG_LIBS $systemlibs"
42 CLANG_PREFIX=`$llvm_config --prefix`
43 AC_DEFINE_UNQUOTED(CLANG_PREFIX, ["$CLANG_PREFIX"], [Clang installation prefix])
45 SAVE_CPPFLAGS="$CPPFLAGS"
46 CPPFLAGS="$CLANG_CXXFLAGS $CPPFLAGS"
47 AC_LANG_PUSH(C++)
48 AC_CHECK_HEADER([clang/Basic/SourceLocation.h], [],
49         [AC_ERROR([clang header file not found])])
50 AC_EGREP_HEADER([getDefaultTargetTriple], [llvm/Support/Host.h], [],
51         [AC_DEFINE([getDefaultTargetTriple], [getHostTriple],
52         [Define to getHostTriple for older versions of clang])])
53 AC_EGREP_HEADER([getExpansionLineNumber], [clang/Basic/SourceLocation.h], [],
54         [AC_DEFINE([getExpansionLineNumber], [getInstantiationLineNumber],
55         [Define to getInstantiationLineNumber for older versions of clang])])
56 AC_EGREP_HEADER([getExpansionColumnNumber], [clang/Basic/SourceLocation.h], [],
57         [AC_DEFINE([getExpansionColumnNumber], [getInstantiationColumnNumber],
58         [Define to getInstantiationColumnNumber for older versions of clang])])
59 AC_EGREP_HEADER([getExpansionLoc], [clang/Basic/SourceManager.h], [],
60         [AC_DEFINE([getExpansionLoc], [getInstantiationLoc],
61         [Define to getInstantiationLoc for older versions of clang])])
62 AC_EGREP_HEADER([DiagnosticConsumer], [clang/Basic/Diagnostic.h], [],
63         [AC_DEFINE([DiagnosticConsumer], [DiagnosticClient],
64         [Define to DiagnosticClient for older versions of clang])])
65 AC_EGREP_HEADER([DiagnosticsEngine], [clang/Basic/Diagnostic.h],
66         [AC_DEFINE([DiagnosticInfo], [Diagnostic],
67         [Define to Diagnostic for newer versions of clang])],
68         [AC_DEFINE([DiagnosticsEngine], [Diagnostic],
69         [Define to Diagnostic for older versions of clang])])
70 AC_EGREP_HEADER([ArrayRef], [clang/Driver/Driver.h],
71         [AC_DEFINE([USE_ARRAYREF], [],
72                 [Define if Driver::BuildCompilation takes ArrayRef])])
73 AC_EGREP_HEADER([CXXIsProduction], [clang/Driver/Driver.h],
74         [AC_DEFINE([HAVE_CXXISPRODUCTION], [],
75                 [Define if Driver constructor takes CXXIsProduction argument])])
76 AC_EGREP_HEADER([ IsProduction], [clang/Driver/Driver.h],
77         [AC_DEFINE([HAVE_ISPRODUCTION], [],
78                 [Define if Driver constructor takes IsProduction argument])])
79 AC_EGREP_HEADER([void HandleTopLevelDecl\(], [clang/AST/ASTConsumer.h],
80         [AC_DEFINE([HandleTopLevelDeclReturn], [void],
81                    [Return type of HandleTopLevelDeclReturn])
82          AC_DEFINE([HandleTopLevelDeclContinue], [],
83                    [Return type of HandleTopLevelDeclReturn])],
84         [AC_DEFINE([HandleTopLevelDeclReturn], [bool],
85                    [Return type of HandleTopLevelDeclReturn])
86          AC_DEFINE([HandleTopLevelDeclContinue], [true],
87                    [Return type of HandleTopLevelDeclReturn])])
88 AC_EGREP_HEADER([isEnclosingLocal,], [clang/AST/Expr.h],
89         [AC_DEFINE([DECLREFEXPR_CREATE_REQUIRES_BOOL], [],
90             [Define if DeclRefExpr::Create takes isEnclosingLocal argument])])
91 AC_EGREP_HEADER([HasTemplateKWAndArgsInfo], [clang/AST/Expr.h],
92         [AC_DEFINE([DECLREFEXPR_CREATE_REQUIRES_SOURCELOCATION], [],
93                 [Define if DeclRefExpr::Create takes SourceLocation argument])])
94 AC_CHECK_HEADER([clang/Basic/DiagnosticOptions.h],
95         [AC_DEFINE([HAVE_BASIC_DIAGNOSTICOPTIONS_H], [],
96                    [Define if clang/Basic/DiagnosticOptions.h exists])])
97 AC_CHECK_HEADER([clang/Lex/HeaderSearchOptions.h],
98         [AC_DEFINE([HAVE_LEX_HEADERSEARCHOPTIONS_H], [],
99                    [Define if clang/Lex/HeaderSearchOptions.h exists])], [],
100         [#include <clang/Basic/LLVM.h>])
101 AC_CHECK_HEADER([clang/Lex/PreprocessorOptions.h],
102         [AC_DEFINE([HAVE_LEX_PREPROCESSOROPTIONS_H], [],
103                    [Define if clang/Lex/PreprocessorOptions.h exists])], [],
104         [#include <clang/Basic/LLVM.h>])
105 AC_TRY_COMPILE([#include <clang/Basic/TargetInfo.h>], [
106         using namespace clang;
107         TargetOptions *TO;
108         DiagnosticsEngine *Diags;
109         TargetInfo::CreateTargetInfo(*Diags, TO);
110 ], [AC_DEFINE([CREATETARGETINFO_TAKES_POINTER], [],
111               [Define if TargetInfo::CreateTargetInfo takes pointer])])
112 AC_EGREP_HEADER([getLangOpts], [clang/Lex/Preprocessor.h], [],
113         [AC_DEFINE([getLangOpts], [getLangOptions],
114         [Define to getLangOptions for older versions of clang])])
115 AC_EGREP_HEADER([findLocationAfterToken], [clang/Lex/Lexer.h],
116         [AC_DEFINE([HAVE_FINDLOCATIONAFTERTOKEN], [],
117         [Define if SourceManager has findLocationAfterToken method])])
118 AC_EGREP_HEADER([translateLineCol], [clang/Basic/SourceManager.h],
119         [AC_DEFINE([HAVE_TRANSLATELINECOL], [],
120         [Define if SourceManager has translateLineCol method])])
121 AC_TRY_COMPILE([#include <clang/Frontend/CompilerInstance.h>], [
122         using namespace clang;
123         DiagnosticConsumer *client;
124         CompilerInstance *Clang;
125         Clang->createDiagnostics(client);
126 ], [], [AC_DEFINE([CREATEDIAGNOSTICS_TAKES_ARG], [],
127         [Define if CompilerInstance::createDiagnostics takes argc and argv])])
128 AC_TRY_COMPILE([#include <clang/Lex/HeaderSearchOptions.h>], [
129         using namespace clang;
130         HeaderSearchOptions HSO;
131         HSO.AddPath("", frontend::Angled, false, false);
132 ], [AC_DEFINE([ADDPATH_TAKES_4_ARGUMENTS], [],
133         [Define if HeaderSearchOptions::AddPath takes 4 arguments])])
134 AC_EGREP_HEADER([getLocWithOffset], [clang/Basic/SourceLocation.h], [],
135         [AC_DEFINE([getLocWithOffset], [getFileLocWithOffset],
136         [Define to getFileLocWithOffset for older versions of clang])])
137 AC_LANG_POP
138 CPPFLAGS="$SAVE_CPPFLAGS"
140 SAVE_LDFLAGS="$LDFLAGS"
141 LDFLAGS="$CLANG_LDFLAGS $LDFLAGS"
142 AC_SUBST(LIB_CLANG_EDIT)
143 AC_CHECK_LIB([clangEdit], [main], [LIB_CLANG_EDIT=-lclangEdit], [])
144 LDFLAGS="$SAVE_LDFLAGS"
146 AX_SUBMODULE(isl,build|bundled|system,bundled)
147 AM_CONDITIONAL(BUNDLED_ISL, test $with_isl = bundled)
149 AC_SUBST(ISL_CFLAGS)
150 AC_SUBST(ISL_LIBS)
151 AC_SUBST(ISL_SRCDIR)
152 case "$with_isl" in
153 bundled)
154         ISL_CFLAGS="-I\$(top_srcdir)/isl/include -I\$(top_builddir)/isl/include"
155         ISL_CFLAGS="$ISL_CFLAGS"
156         ISL_SRCDIR="$srcdir/isl"
157         ;;
158 build)
159         ISL_SRCDIR="$isl_srcdir"
160         ISL_BUILDDIR=`echo @abs_builddir@ | $with_isl_builddir/config.status --file=-`
161         ISL_CFLAGS="-I$isl_srcdir/include -I$ISL_BUILDDIR/include"
162         ISL_CFLAGS="$ISL_CFLAGS"
163         ISL_LIBS="$with_isl_builddir/libisl.la"
164         ;;
165 system)
166         PKG_CHECK_MODULES([ISL], [isl])
167         PACKAGE_CFLAGS_ISL="$ISL_CFLAGS"
168 esac
170 AX_SUBMODULE(libyaml,system|no,system)
171 AC_SUBST(LIBYAML_CPPFLAGS)
172 AC_SUBST(LIBYAML_LDFLAGS)
173 if test "x$with_libyaml_prefix" != "x"; then
174         LIBYAML_CPPFLAGS="-I$with_libyaml_prefix/include"
176 if test "x$with_libyaml_exec_prefix" != "x"; then
177         LIBYAML_LDFLAGS="-L$with_libyaml_exec_prefix/lib"
180 if test "$with_libyaml" = "system"; then
181         SAVE_CPPFLAGS=$CPPFLAGS
182         CPPFLAGS="$CPPFLAGS $LIBYAML_CPPFLAGS"
183         AC_CHECK_HEADER([yaml.h],[],[with_libyaml="no"])
184         CPPFLAGS="$SAVE_CPPFLAGS"
187 AC_SUBST(extra_bin_programs)
188 AC_SUBST(extra_noinst_programs)
189 AC_SUBST(extra_tests)
191 if test "$with_libyaml" != "no"; then
192         extra_bin_programs="pet"
193         extra_noinst_programs="pet_scop_cmp"
194         extra_tests="pet_test.sh"
196 if test "$with_isl" != "system"; then
197         extra_tests="$extra_tests codegen_test.sh"
200 PACKAGE_CFLAGS="$PACKAGE_CFLAGS_ISL"
201 PACKAGE_LIBS="-lpet -lisl"
202 AX_CREATE_PKGCONFIG_INFO
204 AX_DETECT_GIT_HEAD
205 echo '#define GIT_HEAD_ID "'$GIT_HEAD_ID'"' > gitversion.h
207 AC_CONFIG_HEADERS(config.h)
208 AC_CONFIG_FILES(Makefile)
209 AC_CONFIG_FILES([pet_test.sh], [chmod +x pet_test.sh])
210 AC_CONFIG_FILES([codegen_test.sh], [chmod +x codegen_test.sh])
211 if test $with_isl = bundled; then
212         AC_CONFIG_SUBDIRS(isl)
214 AC_OUTPUT