summaryrefslogtreecommitdiff
path: root/tools/llvmc/examples/mcc16/Main.cpp
diff options
context:
space:
mode:
authorMikhail Glushenkov <foldr@codedgers.com>2010-10-23 07:33:02 +0000
committerMikhail Glushenkov <foldr@codedgers.com>2010-10-23 07:33:02 +0000
commit086976d76c01d28e3457e0df805e930e3348109a (patch)
treefccd4a43c638631ff5d83fa1f8aeec3f7e74a26e /tools/llvmc/examples/mcc16/Main.cpp
parenta73e5864951b2d4f50166d0155b8b99e4e7af535 (diff)
downloadllvm-086976d76c01d28e3457e0df805e930e3348109a.tar.gz
llvm-086976d76c01d28e3457e0df805e930e3348109a.tar.bz2
llvm-086976d76c01d28e3457e0df805e930e3348109a.tar.xz
Resurrect mcc16, it is useful as an example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117198 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvmc/examples/mcc16/Main.cpp')
-rw-r--r--tools/llvmc/examples/mcc16/Main.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/llvmc/examples/mcc16/Main.cpp b/tools/llvmc/examples/mcc16/Main.cpp
new file mode 100644
index 0000000000..55ae912839
--- /dev/null
+++ b/tools/llvmc/examples/mcc16/Main.cpp
@@ -0,0 +1,57 @@
+//===--- Main.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open
+// Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Usually this file just includes CompilerDriver/Main.inc, but here we apply
+// some trickery to make the built-in '-save-temps' option hidden and enable
+// '--temp-dir' by default.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/CompilerDriver/BuiltinOptions.h"
+#include "llvm/CompilerDriver/Main.h"
+
+#include "llvm/System/Path.h"
+#include "llvm/Config/config.h"
+
+#include <iostream>
+
+#include "PIC16.inc"
+
+namespace {
+
+// Modify the PACKAGE_VERSION to use build number in top level configure file.
+void PIC16VersionPrinter(void) {
+ std::cout << "MPLAB C16 1.0 " << PACKAGE_VERSION << "\n";
+}
+
+}
+
+int main(int argc, char** argv) {
+
+ // HACK
+ SaveTemps.setHiddenFlag(llvm::cl::Hidden);
+ TempDirname.setHiddenFlag(llvm::cl::Hidden);
+ Languages.setHiddenFlag(llvm::cl::Hidden);
+ DryRun.setHiddenFlag(llvm::cl::Hidden);
+
+ llvm::cl::SetVersionPrinter(PIC16VersionPrinter);
+
+ // Ask for a standard temp dir, but just cache its basename., and delete it.
+ llvm::sys::Path tempDir;
+ tempDir = llvm::sys::Path::GetTemporaryDirectory();
+ TempDirname = tempDir.getBasename();
+ tempDir.eraseFromDisk(true);
+
+ // We are creating a temp dir in current dir, with the cached name.
+ // But before that remove if one already exists with that name..
+ tempDir = TempDirname;
+ tempDir.eraseFromDisk(true);
+
+ return llvmc::Main(argc, argv);
+}