diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2009-04-21 19:46:10 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2009-04-21 19:46:10 +0000 |
commit | 4558f481b83a3c14ad5f1077b053a748a3203059 (patch) | |
tree | 4c57b74b9bbe4de19d3dba798f7a7db187dacaf7 | |
parent | 1d85a1f00bb9554873578d509b0b3aaf1d1d868f (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.rules | 3 | ||||
-rw-r--r-- | autoconf/configure.ac | 22 | ||||
-rwxr-xr-x | configure | 32 | ||||
-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]) @@ -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 |