aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Glushenkov <foldr@codedgers.com>2009-04-21 19:46:10 +0000
committerMikhail Glushenkov <foldr@codedgers.com>2009-04-21 19:46:10 +0000
commit4558f481b83a3c14ad5f1077b053a748a3203059 (patch)
tree4c57b74b9bbe4de19d3dba798f7a7db187dacaf7
parent1d85a1f00bb9554873578d509b0b3aaf1d1d868f (diff)
Support --with-llvmgccdir and friends in llvmc, take 2.
Should now work when building with objdir != srcdir and when llvm-gcc is not available. Thanks to Duncan Sands for testing and advice! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69700 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Makefile.rules3
-rw-r--r--autoconf/configure.ac22
-rwxr-xr-xconfigure32
-rw-r--r--tools/llvmc/plugins/Base/Base.td.in (renamed from tools/llvmc/plugins/Base/Base.td)14
4 files changed, 62 insertions, 9 deletions
diff --git a/Makefile.rules b/Makefile.rules
index cfa2f0cd87..6658edce04 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -1466,7 +1466,8 @@ endif # TARGET
ifdef LLVMC_BUILD_AUTOGENERATED_INC
-LLVMCPluginSrc := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td))
+LLVMCPluginSrc := $(sort $(strip $(wildcard $(PROJ_SRC_DIR)/*.td)) \
+ $(strip $(wildcard $(PROJ_OBJ_DIR)/*.td)))
TDFiles := $(LLVMCPluginSrc) \
$(strip $(wildcard $(LLVM_SRC_ROOT)/include/llvm/CompilerDriver/*.td))
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index a55968956b..9847b44a18 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -472,6 +472,14 @@ AC_ARG_WITH(llvmgxx,
LLVMGXX=$with_llvmgxx
WITH_LLVMGCCDIR="",)
+if test -n "$LLVMGCC"; then
+ LLVMGCCCOMMAND="$LLVMGCC"
+fi
+
+if test -n "$LLVMGXX"; then
+ LLVMGXXCOMMAND="$LLVMGXX"
+fi
+
if test -n "$LLVMGCC" && test -z "$LLVMGXX"; then
AC_MSG_ERROR([Invalid llvm-g++. Use --with-llvmgxx when --with-llvmgcc is used]);
fi
@@ -663,22 +671,33 @@ if test "$lt_cv_dlopen_self" = "yes" ; then
[Define if dlopen(0) will open the symbols of the program])
fi
+
if test "$WITH_LLVMGCCDIR" = "default" ; then
LLVMGCC="llvm-gcc${EXEEXT}"
LLVMGXX="llvm-g++${EXEEXT}"
+ LLVMGCCCOMMAND="$LLVMGCC"
+ LLVMGXXCOMMAND="$LLVMGXX"
+ AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
+ AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
AC_PATH_PROG(LLVMGCC, $LLVMGCC, [])
AC_PATH_PROG(LLVMGXX, $LLVMGXX, [])
else
if test -z "$LLVMGCC"; then
LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}"
+ LLVMGCCCOMMAND="$LLVMGCC"
fi
if test -z "$LLVMGXX"; then
LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}"
+ LLVMGXXCOMMAND="$LLVMGXX"
fi
+
AC_SUBST(LLVMGCC,$LLVMGCC)
AC_SUBST(LLVMGXX,$LLVMGXX)
+ AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
+ AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
fi
+
AC_MSG_CHECKING([tool compatibility])
dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
@@ -1065,6 +1084,9 @@ AC_CONFIG_FILES([llvm.spec])
dnl Configure doxygen's configuration file
AC_CONFIG_FILES([docs/doxygen.cfg])
+dnl Configure llvmc's Base plugin
+AC_CONFIG_FILES([tools/llvmc/plugins/Base/Base.td])
+
dnl Do the first stage of configuration for llvm-config.in.
AC_CONFIG_FILES([tools/llvm-config/llvm-config.in])
diff --git a/configure b/configure
index b98a6c5bd5..88a4cd2eb2 100755
--- a/configure
+++ b/configure
@@ -899,6 +899,8 @@ ac_ct_F77
LIBTOOL
LLVMGCC
LLVMGXX
+LLVMGCCCOMMAND
+LLVMGXXCOMMAND
USE_UDIS86
HAVE_PTHREAD
HUGE_VAL_SANITY
@@ -5003,6 +5005,13 @@ if test "${with_llvmgxx+set}" = set; then
WITH_LLVMGCCDIR=""
fi
+if test -n "$LLVMGCC"; then
+ LLVMGCCCOMMAND="$LLVMGCC"
+fi
+
+if test -n "$LLVMGXX"; then
+ LLVMGXXCOMMAND="$LLVMGXX"
+fi
if test -n "$LLVMGCC" && test -z "$LLVMGXX"; then
{ { echo "$as_me:$LINENO: error: Invalid llvm-g++. Use --with-llvmgxx when --with-llvmgcc is used" >&5
@@ -26810,6 +26819,13 @@ fi
if test "$WITH_LLVMGCCDIR" = "default" ; then
LLVMGCC="llvm-gcc${EXEEXT}"
LLVMGXX="llvm-g++${EXEEXT}"
+ LLVMGCCCOMMAND="$LLVMGCC"
+ LLVMGXXCOMMAND="$LLVMGXX"
+
+ LLVMGCCCOMMAND=$LLVMGCCCOMMAND
+
+ LLVMGXXCOMMAND=$LLVMGXXCOMMAND
+
# Extract the first word of "$LLVMGCC", so it can be a program name with args.
set dummy $LLVMGCC; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -26893,16 +26909,24 @@ fi
else
if test -z "$LLVMGCC"; then
LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}"
+ LLVMGCCCOMMAND="$LLVMGCC"
fi
if test -z "$LLVMGXX"; then
LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}"
+ LLVMGXXCOMMAND="$LLVMGXX"
fi
+
LLVMGCC=$LLVMGCC
LLVMGXX=$LLVMGXX
+ LLVMGCCCOMMAND=$LLVMGCCCOMMAND
+
+ LLVMGXXCOMMAND=$LLVMGXXCOMMAND
+
fi
+
{ echo "$as_me:$LINENO: checking tool compatibility" >&5
echo $ECHO_N "checking tool compatibility... $ECHO_C" >&6; }
@@ -34003,6 +34027,9 @@ ac_config_files="$ac_config_files llvm.spec"
ac_config_files="$ac_config_files docs/doxygen.cfg"
+ac_config_files="$ac_config_files tools/llvmc/plugins/Base/Base.td"
+
+
ac_config_files="$ac_config_files tools/llvm-config/llvm-config.in"
@@ -34617,6 +34644,7 @@ do
"Makefile.config") CONFIG_FILES="$CONFIG_FILES Makefile.config" ;;
"llvm.spec") CONFIG_FILES="$CONFIG_FILES llvm.spec" ;;
"docs/doxygen.cfg") CONFIG_FILES="$CONFIG_FILES docs/doxygen.cfg" ;;
+ "tools/llvmc/plugins/Base/Base.td") CONFIG_FILES="$CONFIG_FILES tools/llvmc/plugins/Base/Base.td" ;;
"tools/llvm-config/llvm-config.in") CONFIG_FILES="$CONFIG_FILES tools/llvm-config/llvm-config.in" ;;
"setup") CONFIG_COMMANDS="$CONFIG_COMMANDS setup" ;;
"Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS Makefile" ;;
@@ -34878,6 +34906,8 @@ ac_ct_F77!$ac_ct_F77$ac_delim
LIBTOOL!$LIBTOOL$ac_delim
LLVMGCC!$LLVMGCC$ac_delim
LLVMGXX!$LLVMGXX$ac_delim
+LLVMGCCCOMMAND!$LLVMGCCCOMMAND$ac_delim
+LLVMGXXCOMMAND!$LLVMGXXCOMMAND$ac_delim
USE_UDIS86!$USE_UDIS86$ac_delim
HAVE_PTHREAD!$HAVE_PTHREAD$ac_delim
HUGE_VAL_SANITY!$HUGE_VAL_SANITY$ac_delim
@@ -34911,7 +34941,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 77; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 79; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/tools/llvmc/plugins/Base/Base.td b/tools/llvmc/plugins/Base/Base.td.in
index ec6f87cfc7..757078a236 100644
--- a/tools/llvmc/plugins/Base/Base.td
+++ b/tools/llvmc/plugins/Base/Base.td.in
@@ -80,10 +80,10 @@ class llvm_gcc_based <string cmd_prefix, string in_lang, string E_ext> : Tool<
(sink)
]>;
-def llvm_gcc_c : llvm_gcc_based<"llvm-gcc -x c", "c", "i">;
-def llvm_gcc_cpp : llvm_gcc_based<"llvm-g++ -x c++", "c++", "i">;
-def llvm_gcc_m : llvm_gcc_based<"llvm-gcc -x objective-c", "objective-c", "mi">;
-def llvm_gcc_mxx : llvm_gcc_based<"llvm-gcc -x objective-c++",
+def llvm_gcc_c : llvm_gcc_based<"@LLVMGCCCOMMAND@ -x c", "c", "i">;
+def llvm_gcc_cpp : llvm_gcc_based<"@LLVMGXXCOMMAND@ -x c++", "c++", "i">;
+def llvm_gcc_m : llvm_gcc_based<"@LLVMGCCCOMMAND@ -x objective-c", "objective-c", "mi">;
+def llvm_gcc_mxx : llvm_gcc_based<"@LLVMGCCCOMMAND@ -x objective-c++",
"objective-c++", "mi">;
def opt : Tool<
@@ -105,7 +105,7 @@ def llvm_gcc_assembler : Tool<
[(in_language "assembler"),
(out_language "object-code"),
(output_suffix "o"),
- (cmd_line "llvm-gcc -c -x assembler $INFILE -o $OUTFILE"),
+ (cmd_line "@LLVMGCCCOMMAND@ -c -x assembler $INFILE -o $OUTFILE"),
(actions (case
(switch_on "c"), (stop_compilation),
(not_empty "Wa,"), (unpack_values "Wa,")))
@@ -136,9 +136,9 @@ class llvm_gcc_based_linker <string cmd_prefix> : Tool<
]>;
// Default linker
-def llvm_gcc_linker : llvm_gcc_based_linker<"llvm-gcc">;
+def llvm_gcc_linker : llvm_gcc_based_linker<"@LLVMGCCCOMMAND@">;
// Alternative linker for C++
-def llvm_gcc_cpp_linker : llvm_gcc_based_linker<"llvm-g++">;
+def llvm_gcc_cpp_linker : llvm_gcc_based_linker<"@LLVMGXXCOMMAND@">;
// Language map