From 3bf779de600544a668c0a3daeedf8e2fefbb9449 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Thu, 16 Aug 2018 00:22:03 +0000 Subject: [PATCH] [Driver] -print-target-triple and -print-effective-triple options These can be used to print Clang target and effective triple. Differential Revision: https://reviews.llvm.org/D50755 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339834 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Options.td | 4 ++++ lib/Driver/Driver.cpp | 12 ++++++++++++ test/Driver/print-effective-triple.c | 6 ++++++ test/Driver/print-target-triple.c | 6 ++++++ 4 files changed, 28 insertions(+) create mode 100644 test/Driver/print-effective-triple.c create mode 100644 test/Driver/print-target-triple.c diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 601aa87449..18781849bf 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -2348,6 +2348,10 @@ def print_multi_directory : Flag<["-", "--"], "print-multi-directory">; def print_multi_lib : Flag<["-", "--"], "print-multi-lib">; def print_multi_os_directory : Flag<["-", "--"], "print-multi-os-directory">, Flags<[Unsupported]>; +def print_target_triple : Flag<["-", "--"], "print-target-triple">, + HelpText<"Print the normalized target triple">; +def print_effective_triple : Flag<["-", "--"], "print-effective-triple">, + HelpText<"Print the effective target triple">; def print_prog_name_EQ : Joined<["-", "--"], "print-prog-name=">, HelpText<"Print the full program path of ">, MetaVarName<"">; def print_resource_dir : Flag<["-", "--"], "print-resource-dir">, diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 952a716cb6..350ee0e39d 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1672,6 +1672,18 @@ bool Driver::HandleImmediateArgs(const Compilation &C) { } return false; } + + if (C.getArgs().hasArg(options::OPT_print_target_triple)) { + llvm::outs() << TC.getTripleString() << "\n"; + return false; + } + + if (C.getArgs().hasArg(options::OPT_print_effective_triple)) { + const llvm::Triple Triple(TC.ComputeEffectiveClangTriple(C.getArgs())); + llvm::outs() << Triple.getTriple() << "\n"; + return false; + } + return true; } diff --git a/test/Driver/print-effective-triple.c b/test/Driver/print-effective-triple.c new file mode 100644 index 0000000000..65b38748d6 --- /dev/null +++ b/test/Driver/print-effective-triple.c @@ -0,0 +1,6 @@ +// Test that -print-target-triple prints correct triple. + +// RUN: %clang -print-effective-triple 2>&1 \ +// RUN: --target=thumb-linux-gnu \ +// RUN: | FileCheck %s +// CHECK: armv4t-unknown-linux-gnu diff --git a/test/Driver/print-target-triple.c b/test/Driver/print-target-triple.c new file mode 100644 index 0000000000..70b2493a6f --- /dev/null +++ b/test/Driver/print-target-triple.c @@ -0,0 +1,6 @@ +// Test that -print-target-triple prints correct triple. + +// RUN: %clang -print-target-triple 2>&1 \ +// RUN: --target=x86_64-linux-gnu \ +// RUN: | FileCheck %s +// CHECK: x86_64-unknown-linux-gnu -- 2.40.0