diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2008-11-26 10:56:56 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2008-11-26 10:56:56 +0000 |
commit | 8aede71775465841b3ce02b901c72a27ca4e20e0 (patch) | |
tree | 163cf609b8b5268aec3279e2d621ca5476b6489e /include/llvm/CompilerDriver | |
parent | 5ca18a17b1f186cd6e7e2660c064e0854976a741 (diff) | |
download | external_llvm-8aede71775465841b3ce02b901c72a27ca4e20e0.zip external_llvm-8aede71775465841b3ce02b901c72a27ca4e20e0.tar.gz external_llvm-8aede71775465841b3ce02b901c72a27ca4e20e0.tar.bz2 |
Refactor Tools.td to remove repetition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60100 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CompilerDriver')
-rw-r--r-- | include/llvm/CompilerDriver/Tools.td | 78 |
1 files changed, 10 insertions, 68 deletions
diff --git a/include/llvm/CompilerDriver/Tools.td b/include/llvm/CompilerDriver/Tools.td index 930092d..f0c2226 100644 --- a/include/llvm/CompilerDriver/Tools.td +++ b/include/llvm/CompilerDriver/Tools.td @@ -11,20 +11,20 @@ // //===----------------------------------------------------------------------===// -def llvm_gcc_c : Tool< -[(in_language "c"), +class llvm_gcc_based <string cmd_prefix, string in_lang> : Tool< +[(in_language in_lang), (out_language "llvm-bitcode"), (output_suffix "bc"), (cmd_line (case (switch_on "E"), (case (not_empty "o"), - "llvm-gcc -E -x c++ $INFILE -o $OUTFILE", + !strconcat(cmd_prefix, " -E $INFILE -o $OUTFILE"), (default), - "llvm-gcc -E -x c++ $INFILE"), + !strconcat(cmd_prefix, " -E $INFILE")), (switch_on "fsyntax-only"), - "llvm-gcc -fsyntax-only -x c $INFILE", + !strconcat(cmd_prefix, " -fsyntax-only $INFILE"), (default), - "llvm-gcc -c -x c $INFILE -o $OUTFILE -emit-llvm")), + !strconcat(cmd_prefix, " -c $INFILE -o $OUTFILE -emit-llvm"))), (switch_option "emit-llvm", (stop_compilation), (help "Emit LLVM intermediate files instead of native object files")), (switch_option "E", (stop_compilation), @@ -36,68 +36,10 @@ def llvm_gcc_c : Tool< (sink) ]>; -def llvm_gcc_cpp : Tool< -[(in_language "c++"), - (out_language "llvm-bitcode"), - (output_suffix "bc"), - (cmd_line (case - (switch_on "E"), - (case (not_empty "o"), - "llvm-g++ -E -x c++ $INFILE -o $OUTFILE", - (default), - "llvm-g++ -E -x c++ $INFILE"), - (switch_on "fsyntax-only"), - "llvm-g++ -fsyntax-only -x c++ $INFILE", - (default), - "llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")), - (switch_option "emit-llvm", (stop_compilation)), - (switch_option "E", (stop_compilation)), - (switch_option "fsyntax-only", (stop_compilation)), - (parameter_list_option "include", (forward)), - (sink) -]>; - -def llvm_gcc_m : Tool< -[(in_language "objective-c"), - (out_language "llvm-bitcode"), - (output_suffix "bc"), - (cmd_line (case - (switch_on "E"), - (case (not_empty "o"), - "llvm-gcc -E -x objective-c $INFILE -o $OUTFILE", - (default), - "llvm-gcc -E -x objective-c $INFILE"), - (switch_on "fsyntax-only"), - "llvm-gcc -fsyntax-only -x objective-c $INFILE", - (default), - "llvm-gcc -c -x objective-c $INFILE -o $OUTFILE -emit-llvm")), - (switch_option "emit-llvm", (stop_compilation)), - (switch_option "E", (stop_compilation)), - (switch_option "fsyntax-only", (stop_compilation)), - (parameter_list_option "include", (forward)), - (sink) -]>; - -def llvm_gcc_mxx : Tool< -[(in_language "objective-c++"), - (out_language "llvm-bitcode"), - (output_suffix "bc"), - (cmd_line (case - (switch_on "E"), - (case (not_empty "o"), - "llvm-gcc -E -x objective-c++ $INFILE -o $OUTFILE", - (default), - "llvm-gcc -E -x objective-c++ $INFILE"), - (switch_on "fsyntax-only"), - "llvm-gcc -fsyntax-only -x objective-c++ $INFILE", - (default), - "llvm-gcc -c -x objective-c++ $INFILE -o $OUTFILE -emit-llvm")), - (switch_option "emit-llvm", (stop_compilation)), - (switch_option "E", (stop_compilation)), - (switch_option "fsyntax-only", (stop_compilation)), - (parameter_list_option "include", (forward)), - (sink) -]>; +def llvm_gcc_c : llvm_gcc_based<"llvm-gcc -x c", "c">; +def llvm_gcc_cpp : llvm_gcc_based<"llvm-g++ -x c++", "c++">; +def llvm_gcc_m : llvm_gcc_based<"llvm-gcc -x objective-c", "objective-c">; +def llvm_gcc_mxx : llvm_gcc_based<"llvm-gcc -x objective-c++", "objective-c++">; def opt : Tool< [(in_language "llvm-bitcode"), |