summaryrefslogtreecommitdiff
path: root/autoconf
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2010-11-10 16:31:34 +0000
committerTobias Grosser <grosser@fim.uni-passau.de>2010-11-10 16:31:34 +0000
commita84b56771371cf1cd03812baff69164e7192115a (patch)
treecfdf1d2de2c070bf1d65c39507aff12c418261da /autoconf
parent6c43de46ffc6d699f2421706e2d4d8d793d596fa (diff)
downloadllvm-a84b56771371cf1cd03812baff69164e7192115a.tar.gz
llvm-a84b56771371cf1cd03812baff69164e7192115a.tar.bz2
llvm-a84b56771371cf1cd03812baff69164e7192115a.tar.xz
Detect if llvm-gcc is built on dragonegg.
Store the flags needed to disable optimizations and to emit LLVM-IR depending on the version of llvm-gcc used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118684 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'autoconf')
-rw-r--r--autoconf/configure.ac30
1 files changed, 29 insertions, 1 deletions
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index 5fa85d0ab5..1d5fa154fc 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -1414,12 +1414,37 @@ fi
dnl Check, whether __dso_handle is present
AC_CHECK_FUNCS([__dso_handle])
+dnl Check wether llvm-gcc is based on dragonegg
+AC_CACHE_CHECK([whether llvm-gcc is dragonegg],[llvm_cv_llvmgcc_dragonegg],
+[llvm_cv_llvmgcc_dragonegg="no"
+if test -x "$LLVMGCC" ; then
+ cp /dev/null conftest.c
+ "$LLVMGCC" -fplugin-arg-dragonegg-emit-ir -S -o - conftest.c | \
+ grep 'target datalayout =' > /dev/null 2>&1
+ if test $? -eq 0 ; then
+ llvm_cv_llvmgcc_dragonegg="yes"
+ fi
+ rm conftest.c
+fi])
+
+dnl Set the flags needed to emit LLVM IR and to disable optimizations
+dnl in llvmgcc
+if test "$llvm_cv_llvmgcc_dragonegg" = "yes" ; then
+ LLVMCC_EMITIR_FLAG="-fplugin-arg-dragonegg-emit-ir"
+ LLVMGCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-disable-llvm-optzns"
+else
+ LLVMCC_EMITIR_FLAG="-emit-llvm"
+ LLVMGCC_DISABLEOPT_FLAGS="-mllvm -disable-llvm-optzns"
+fi
+
+AC_SUBST(LLVMCC_EMITIR_FLAG)
+
dnl See if the llvm-gcc executable can compile to LLVM assembly
AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity],
[llvm_cv_llvmgcc_sanity="no"
if test -x "$LLVMGCC" ; then
cp /dev/null conftest.c
- "$LLVMGCC" -emit-llvm -S -o - conftest.c | \
+ "$LLVMGCC" "$LLVMCC_EMITIR_FLAG" -S -o - conftest.c | \
grep 'target datalayout =' > /dev/null 2>&1
if test $? -eq 0 ; then
llvm_cv_llvmgcc_sanity="yes"
@@ -1428,6 +1453,7 @@ if test -x "$LLVMGCC" ; then
fi])
dnl Since we have a sane llvm-gcc, identify it and its sub-tools
+dnl Furthermore, add some information about the tools
if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then
AC_MSG_CHECKING([llvm-gcc component support])
llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1`
@@ -1438,6 +1464,8 @@ if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then
AC_SUBST(LLVMGCCDIR,$llvmgccdir)
llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
+ AC_SUBST(LLVMGCC_DRAGONEGG,$llvm_cv_llvmgcc_dragonegg)
+ AC_SUBST(LLVMGCC_DISABLEOPT_FLAGS)
AC_MSG_RESULT([ok])
fi