diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2008-10-02 21:15:05 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2008-10-02 21:15:05 +0000 |
commit | e4a5ea3130129124a9d88e5e27d8bcf26f147fa0 (patch) | |
tree | d6e05c63cbcdec28213f5462d45b770dfa5cfcda /include/llvm/CompilerDriver/Tools.td | |
parent | 88ab90b4757e481b627bb61b0eaca5ed2aa22b4d (diff) |
Build system tweaks to make it more convenient for the plugin authors.
Plugins can be now compiled in with a slight Makefile change.
For example, to compile the new Clang driver, use:
cd $LLVMC2_DIR
make TOOLNAME=ccc2 BUILTIN_PLUGINS=Clang
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56967 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CompilerDriver/Tools.td')
-rw-r--r-- | include/llvm/CompilerDriver/Tools.td | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/include/llvm/CompilerDriver/Tools.td b/include/llvm/CompilerDriver/Tools.td new file mode 100644 index 0000000000..1a466a2735 --- /dev/null +++ b/include/llvm/CompilerDriver/Tools.td @@ -0,0 +1,117 @@ +//===- Tools.td - Tools description for LLVMC2 -------------*- tablegen -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains descriptions of the various build tools run by llvmc2. +// +//===----------------------------------------------------------------------===// + +def llvm_gcc_c : Tool< +[(in_language "c"), + (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", + (default), + "llvm-gcc -E -x c++ $INFILE"), + (default), + "llvm-gcc -c -x c $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation), + (help "Stop after the preprocessing stage, do not run the compiler")), + (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"), + (default), + "llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation)), + (sink) +]>; + +def opt : Tool< +[(in_language "llvm-bitcode"), + (out_language "llvm-bitcode"), + (switch_option "opt", (help "Enable opt")), + (output_suffix "bc"), + (cmd_line "opt -f $INFILE -o $OUTFILE") +]>; + +def llvm_as : Tool< +[(in_language "llvm-assembler"), + (out_language "llvm-bitcode"), + (output_suffix "bc"), + (cmd_line "llvm-as $INFILE -o $OUTFILE") +]>; + +def llc : Tool< +[(in_language "llvm-bitcode"), + (out_language "assembler"), + (output_suffix "s"), + (switch_option "S", (stop_compilation), + (help "Stop after compilation, do not assemble")), + (cmd_line "llc -f $INFILE -o $OUTFILE") +]>; + +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"), + (switch_option "c", (stop_compilation), + (help "Compile and assemble, but do not link")), + (prefix_list_option "Wa,", (unpack_values), (help "Pass options to assembler")) +]>; + +// Default linker +def llvm_gcc_linker : Tool< +[(in_language "object-code"), + (out_language "executable"), + (output_suffix "out"), + (cmd_line "llvm-gcc $INFILE -o $OUTFILE"), + (join), + (prefix_list_option "L", (forward), (help "Add a directory to link path")), + (prefix_list_option "l", (forward), (help "Search a library when linking")), + (prefix_list_option "Wl,", (unpack_values), (help "Pass options to linker")) +]>; + +// Alternative linker for C++ +def llvm_gcc_cpp_linker : Tool< +[(in_language "object-code"), + (out_language "executable"), + (output_suffix "out"), + (cmd_line "llvm-g++ $INFILE -o $OUTFILE"), + (join), + (parameter_option "linker", + (help "Choose linker (possible values: gcc, g++)")), + (prefix_list_option "L", (forward)), + (prefix_list_option "l", (forward)), + (prefix_list_option "Wl,", (unpack_values)) +]>; + +// Language map + +def LanguageMap : LanguageMap< + [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>, + LangToSuffixes<"c", ["c"]>, + LangToSuffixes<"assembler", ["s"]>, + LangToSuffixes<"llvm-assembler", ["ll"]>, + LangToSuffixes<"llvm-bitcode", ["bc"]>, + LangToSuffixes<"object-code", ["o"]>, + LangToSuffixes<"executable", ["out"]> + ]>; |