diff options
author | Daniel Dunbar <daniel@zuster.org> | 2008-11-08 03:25:47 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2008-11-08 03:25:47 +0000 |
commit | 06ad209fb1fc995bae9dfe74706e03b8632a1a1b (patch) | |
tree | 8eff3e8a836bc7ade4982a902af2c92edc630c01 | |
parent | 813a6408219c6cbf721d71a690d38af3dd6e8e53 (diff) | |
download | bcm5719-llvm-06ad209fb1fc995bae9dfe74706e03b8632a1a1b.tar.gz bcm5719-llvm-06ad209fb1fc995bae9dfe74706e03b8632a1a1b.zip |
Add LLVMC2 tool definitions for Objective-C and Objective-C++.
llvm-svn: 58885
-rw-r--r-- | llvm/include/llvm/CompilerDriver/Tools.td | 34 | ||||
-rw-r--r-- | llvm/test/LLVMC/hello.m | 12 | ||||
-rw-r--r-- | llvm/test/LLVMC/hello.mm | 8 | ||||
-rw-r--r-- | llvm/tools/llvmc2/plugins/Base/Base.td | 14 |
4 files changed, 66 insertions, 2 deletions
diff --git a/llvm/include/llvm/CompilerDriver/Tools.td b/llvm/include/llvm/CompilerDriver/Tools.td index 1a466a2735d..7bd6dd4d940 100644 --- a/llvm/include/llvm/CompilerDriver/Tools.td +++ b/llvm/include/llvm/CompilerDriver/Tools.td @@ -44,6 +44,38 @@ def llvm_gcc_cpp : Tool< (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"), + (default), + "llvm-gcc -c -x objective-c $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation)), + (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"), + (default), + "llvm-gcc -c -x objective-c++ $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation)), + (sink) +]>; + def opt : Tool< [(in_language "llvm-bitcode"), (out_language "llvm-bitcode"), @@ -109,6 +141,8 @@ def llvm_gcc_cpp_linker : Tool< def LanguageMap : LanguageMap< [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>, LangToSuffixes<"c", ["c"]>, + LangToSuffixes<"objective-c++", ["mm"]>, + LangToSuffixes<"objective-c", ["m"]>, LangToSuffixes<"assembler", ["s"]>, LangToSuffixes<"llvm-assembler", ["ll"]>, LangToSuffixes<"llvm-bitcode", ["bc"]>, diff --git a/llvm/test/LLVMC/hello.m b/llvm/test/LLVMC/hello.m new file mode 100644 index 00000000000..bf917bcdea7 --- /dev/null +++ b/llvm/test/LLVMC/hello.m @@ -0,0 +1,12 @@ +/* + * Check that we can compile helloworld + * RUN: llvmc2 %s -o %t + * RUN: ./%t | grep hello + */ + +#include <stdio.h> + +int main() { + printf("hello\n"); + return 0; +} diff --git a/llvm/test/LLVMC/hello.mm b/llvm/test/LLVMC/hello.mm new file mode 100644 index 00000000000..5f14a94ccca --- /dev/null +++ b/llvm/test/LLVMC/hello.mm @@ -0,0 +1,8 @@ +// Test that we can compile Objective-C++ code. +// RUN: llvmc2 %s -o %t +// RUN: ./%t | grep hello +#include <iostream> + +int main() { + std::cout << "hello" << '\n'; +} diff --git a/llvm/tools/llvmc2/plugins/Base/Base.td b/llvm/tools/llvmc2/plugins/Base/Base.td index 0a43d0fd533..158520c278e 100644 --- a/llvm/tools/llvmc2/plugins/Base/Base.td +++ b/llvm/tools/llvmc2/plugins/Base/Base.td @@ -20,14 +20,20 @@ def CompilationGraph : CompilationGraph<[ Edge<root, llvm_gcc_c>, Edge<root, llvm_gcc_assembler>, Edge<root, llvm_gcc_cpp>, + Edge<root, llvm_gcc_m>, + Edge<root, llvm_gcc_mxx>, Edge<root, llvm_as>, Edge<llvm_gcc_c, llc>, Edge<llvm_gcc_cpp, llc>, + Edge<llvm_gcc_m, llc>, + Edge<llvm_gcc_mxx, llc>, Edge<llvm_as, llc>, OptionalEdge<llvm_gcc_c, opt, (case (switch_on "opt"), (inc_weight))>, OptionalEdge<llvm_gcc_cpp, opt, (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<llvm_gcc_m, opt, (case (switch_on "opt"), (inc_weight))>, + OptionalEdge<llvm_gcc_mxx, opt, (case (switch_on "opt"), (inc_weight))>, OptionalEdge<llvm_as, opt, (case (switch_on "opt"), (inc_weight))>, Edge<opt, llc>, @@ -35,7 +41,9 @@ def CompilationGraph : CompilationGraph<[ Edge<llvm_gcc_assembler, llvm_gcc_linker>, OptionalEdge<llvm_gcc_assembler, llvm_gcc_cpp_linker, (case - (input_languages_contain "c++"), (inc_weight), + (or (input_languages_contain "c++"), + (input_languages_contain "objective-c++")), + (inc_weight), (or (parameter_equals "linker", "g++"), (parameter_equals "linker", "c++")), (inc_weight))>, @@ -43,7 +51,9 @@ def CompilationGraph : CompilationGraph<[ Edge<root, llvm_gcc_linker>, OptionalEdge<root, llvm_gcc_cpp_linker, (case - (input_languages_contain "c++"), (inc_weight), + (or (input_languages_contain "c++"), + (input_languages_contain "objective-c++")), + (inc_weight), (or (parameter_equals "linker", "g++"), (parameter_equals "linker", "c++")), (inc_weight))> ]>; |