summaryrefslogtreecommitdiff
path: root/tools/llvmc2
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvmc2')
-rw-r--r--tools/llvmc2/Example.td9
-rw-r--r--tools/llvmc2/Tools.td25
2 files changed, 20 insertions, 14 deletions
diff --git a/tools/llvmc2/Example.td b/tools/llvmc2/Example.td
index 57629904d1..227090258a 100644
--- a/tools/llvmc2/Example.td
+++ b/tools/llvmc2/Example.td
@@ -33,6 +33,13 @@ def CompilationGraph : CompilationGraph<[
Edge<llc, llvm_gcc_assembler>,
Edge<llvm_gcc_assembler, llvm_gcc_linker>,
+ OptionalEdge<llvm_gcc_assembler, llvm_gcc_cpp_linker,
+ [(parameter_equals "linker", "g++"),
+ (parameter_equals "linker", "c++")]>,
- Edge<root, llvm_gcc_linker>
+
+ Edge<root, llvm_gcc_linker>,
+ OptionalEdge<root, llvm_gcc_cpp_linker,
+ [(parameter_equals "linker", "g++"),
+ (parameter_equals "linker", "c++")]>
]>;
diff --git a/tools/llvmc2/Tools.td b/tools/llvmc2/Tools.td
index 897892415e..e803915da6 100644
--- a/tools/llvmc2/Tools.td
+++ b/tools/llvmc2/Tools.td
@@ -81,19 +81,18 @@ def llvm_gcc_linker : Tool<
]>;
// Alternative linker for C++
-// TOTHINK: how to implement this best?
-// Something like input_file_language can only choose between two languages.
-// def llvm_gcc_cpp_linker : Tool<
-// [(in_language "object-code"),
-// (out_language "executable"),
-// (output_suffix "out"),
-// (cmd_line "llvm-g++ $INFILE -o $OUTFILE"),
-// (join),
-// //(input_file_language "c++"),
-// (prefix_list_option "L", (forward)),
-// (prefix_list_option "l", (forward)),
-// (prefix_list_option "Wl", (unpack_values))
-// ]>;
+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