summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/tools/llvm-cvtres/basic.test4
-rw-r--r--llvm/tools/llvm-cvtres/CMakeLists.txt13
-rw-r--r--llvm/tools/llvm-cvtres/LLVMBuild.txt22
-rw-r--r--llvm/tools/llvm-cvtres/Opts.td11
-rw-r--r--llvm/tools/llvm-cvtres/llvm-cvtres.cpp86
-rw-r--r--llvm/tools/llvm-cvtres/llvm-cvtres.h13
6 files changed, 149 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cvtres/basic.test b/llvm/test/tools/llvm-cvtres/basic.test
new file mode 100644
index 00000000000..fcebef22f65
--- /dev/null
+++ b/llvm/test/tools/llvm-cvtres/basic.test
@@ -0,0 +1,4 @@
+; RUN: llvm-cvtres /h > %t
+; RUN: FileCheck -input-file=%t %s -check-prefix=HELP_TEST
+
+; HELP_TEST: OVERVIEW: Resource Converter
diff --git a/llvm/tools/llvm-cvtres/CMakeLists.txt b/llvm/tools/llvm-cvtres/CMakeLists.txt
new file mode 100644
index 00000000000..52edccac816
--- /dev/null
+++ b/llvm/tools/llvm-cvtres/CMakeLists.txt
@@ -0,0 +1,13 @@
+set(LLVM_LINK_COMPONENTS
+ Option
+ Support
+ )
+
+set(LLVM_TARGET_DEFINITIONS Opts.td)
+
+tablegen(LLVM Opts.inc -gen-opt-parser-defs)
+add_public_tablegen_target(CvtResTableGen)
+
+add_llvm_tool(llvm-cvtres
+ llvm-cvtres.cpp
+ )
diff --git a/llvm/tools/llvm-cvtres/LLVMBuild.txt b/llvm/tools/llvm-cvtres/LLVMBuild.txt
new file mode 100644
index 00000000000..73693bccb0e
--- /dev/null
+++ b/llvm/tools/llvm-cvtres/LLVMBuild.txt
@@ -0,0 +1,22 @@
+;===- ./tools/llvm-cvtres/LLVMBuild.txt ------------------------*- Conf -*--===;
+;
+; The LLVM Compiler Infrastructure
+;
+; This file is distributed under the University of Illinois Open Source
+; License. See LICENSE.TXT for details.
+;
+;===------------------------------------------------------------------------===;
+;
+; This is an LLVMBuild description file for the components in this subdirectory.
+;
+; For more information on the LLVMBuild system, please see:
+;
+; http://llvm.org/docs/LLVMBuild.html
+;
+;===------------------------------------------------------------------------===;
+
+[component_0]
+type = Tool
+name = llvm-cvtres
+parent = Tools
+required_libraries = Option Support
diff --git a/llvm/tools/llvm-cvtres/Opts.td b/llvm/tools/llvm-cvtres/Opts.td
new file mode 100644
index 00000000000..64041bceb03
--- /dev/null
+++ b/llvm/tools/llvm-cvtres/Opts.td
@@ -0,0 +1,11 @@
+include "llvm/Option/OptParser.td"
+
+def DEFINE : Joined<["/"], "DEFINE:">, HelpText<"">, MetaVarName<"symbol">;
+def FOLDDUPS : Flag<["/"], "FOLDDUPS:">, HelpText<"">;
+def MACHINE : Joined<["/"], "MACHINE:">, HelpText<"">, MetaVarName<"{ARM|EBC|IA64|X64|X86}">;
+def NOLOGO : Flag<["/"], "NOLOGO">, HelpText<"">;
+def OUT : Joined<["/"], "OUT:">, HelpText<"">, MetaVarName<"filename">;
+def READONLY : Flag<["/"], "READONLY">, HelpText<"">;
+def VERBOSE : Flag<["/"], "VERBOSE">, HelpText<"">;
+def HELP : Flag<["/"], "HELP">;
+def H : Flag<["/"], "H">, Alias<HELP>;
diff --git a/llvm/tools/llvm-cvtres/llvm-cvtres.cpp b/llvm/tools/llvm-cvtres/llvm-cvtres.cpp
new file mode 100644
index 00000000000..f03e0b772e1
--- /dev/null
+++ b/llvm/tools/llvm-cvtres/llvm-cvtres.cpp
@@ -0,0 +1,86 @@
+//===- llvm-cvtres.cpp - Serialize .res files into .obj ---------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Serialize .res files into .obj files. This is intended to be a
+// platform-independent port of Microsoft's cvtres.exe.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm-cvtres.h"
+
+#include "llvm/Option/Arg.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/Option/Option.h"
+#include "llvm/Support/Error.h"
+#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/PrettyStackTrace.h"
+#include "llvm/Support/Process.h"
+#include "llvm/Support/Signals.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+namespace {
+
+enum ID {
+ OPT_INVALID = 0, // This is not an option ID.
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
+ HELPTEXT, METAVAR) \
+ OPT_##ID,
+#include "Opts.inc"
+#undef OPTION
+};
+
+#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE;
+#include "Opts.inc"
+#undef PREFIX
+
+static const opt::OptTable::Info InfoTable[] = {
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
+ HELPTEXT, METAVAR) \
+ { \
+ PREFIX, NAME, HELPTEXT, \
+ METAVAR, OPT_##ID, opt::Option::KIND##Class, \
+ PARAM, FLAGS, OPT_##GROUP, \
+ OPT_##ALIAS, ALIASARGS},
+#include "Opts.inc"
+#undef OPTION
+};
+
+class CvtResOptTable : public opt::OptTable {
+public:
+ CvtResOptTable() : OptTable(InfoTable, true) {}
+};
+
+static ExitOnError ExitOnErr;
+}
+
+int main(int argc_, const char *argv_[]) {
+ sys::PrintStackTraceOnErrorSignal(argv_[0]);
+ PrettyStackTraceProgram X(argc_, argv_);
+
+ ExitOnErr.setBanner("llvm-cvtres: ");
+
+ SmallVector<const char *, 256> argv;
+ SpecificBumpPtrAllocator<char> ArgAllocator;
+ ExitOnErr(errorCodeToError(sys::Process::GetArgumentVector(
+ argv, makeArrayRef(argv_, argc_), ArgAllocator)));
+
+ llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+
+ CvtResOptTable T;
+ unsigned MAI, MAC;
+ ArrayRef<const char *> ArgsArr = makeArrayRef(argv_, argc_);
+ opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MAI, MAC);
+
+ if (InputArgs.hasArg(OPT_HELP))
+ T.PrintHelp(outs(), "cvtres", "Resource Converter", false);
+
+ return 0;
+}
diff --git a/llvm/tools/llvm-cvtres/llvm-cvtres.h b/llvm/tools/llvm-cvtres/llvm-cvtres.h
new file mode 100644
index 00000000000..eeaba196903
--- /dev/null
+++ b/llvm/tools/llvm-cvtres/llvm-cvtres.h
@@ -0,0 +1,13 @@
+//===- llvm-cvtres.h ------------------------------------------ *- C++ --*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMCVTRES_LLVMCVTRES_H
+#define LLVM_TOOLS_LLVMCVTRES_LLVMCVTRES_H
+
+#endif
OpenPOWER on IntegriCloud