[llvm-commits] [gcc-plugin] r82450 - in /gcc-plugin/trunk/utils: ./ target.cpp

Sandeep Patel deeppatel1987 at gmail.com
Mon Sep 21 11:38:33 PDT 2009


Would it make sense to use command line options that resemble those
used with uname?

deep

On Mon, Sep 21, 2009 at 9:40 AM, Duncan Sands <baldrick at free.fr> wrote:
> Author: baldrick
> Date: Mon Sep 21 04:40:06 2009
> New Revision: 82450
>
> URL: http://llvm.org/viewvc/llvm-project?rev=82450&view=rev
> Log:
> Add a helper for printing info extracted from the
> target triple.
>
> Added:
>    gcc-plugin/trunk/utils/
>    gcc-plugin/trunk/utils/target.cpp
>
> Added: gcc-plugin/trunk/utils/target.cpp
> URL: http://llvm.org/viewvc/llvm-project/gcc-plugin/trunk/utils/target.cpp?rev=82450&view=auto
>
> ==============================================================================
> --- gcc-plugin/trunk/utils/target.cpp (added)
> +++ gcc-plugin/trunk/utils/target.cpp Mon Sep 21 04:40:06 2009
> @@ -0,0 +1,68 @@
> +#include <cstring>
> +#include <iostream>
> +
> +#include <llvm/ADT/Triple.h>
> +
> +using namespace llvm;
> +
> +static void PrintTriple(Triple &T) {
> +  std::cout << T.getTriple() << "\n";
> +}
> +static void PrintArchName(Triple &T) {
> +  std::cout << T.getArchName().str() << "\n";
> +}
> +static void PrintVendorName(Triple &T) {
> +  std::cout << T.getVendorName().str() << "\n";
> +}
> +static void PrintOSName(Triple &T) {
> +  std::cout << T.getOSName().str() << "\n";
> +}
> +static void PrintEnvironmentName(Triple &T) {
> +  std::cout << T.getEnvironmentName().str() << "\n";
> +}
> +static void PrintOSAndEnvironmentName(Triple &T) {
> +  std::cout << T.getOSAndEnvironmentName().str() << "\n";
> +}
> +static void PrintArchTypePrefix(Triple &T) {
> +  std::cout << T.getArchTypePrefix(T.getArch()) << "\n";
> +}
> +
> +struct Option {
> +  const char *Name;
> +  void (*Action)(Triple &);
> +};
> +
> +static Option Options[] = {
> +  { "-t", PrintTriple },
> +  { "-a", PrintArchName },
> +  { "-v", PrintVendorName },
> +  { "-o", PrintOSName },
> +  { "-e", PrintEnvironmentName },
> +  { "-oe", PrintOSAndEnvironmentName },
> +  { "-p", PrintArchTypePrefix },
> +  { NULL, NULL }
> +};
> +
> +int main(int argc, char **argv) {
> +  Triple T(TARGET_NAME);
> +
> +  for (int i = 1; i < argc; ++i) {
> +    bool Found = false;
> +    for (Option *O = Options; O->Name; ++O)
> +      if (!strcmp(argv[i], O->Name)) {
> +        Found = true;
> +        O->Action(T);
> +        break;
> +      }
> +    if (!Found) {
> +      std::cerr << "Unknown option \"" << argv[i] << "\"\n";
> +      std::cerr << "Usage: " << argv[0];
> +      for (Option *O = Options; O->Name; ++O)
> +        std::cerr << " " << O->Name;
> +      std::cerr << "\n";
> +      return 1;
> +    }
> +  }
> +
> +  return 0;
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list