Fixed handling of -c option.wq
[oota-llvm.git] / tools / llvmc / example / mcc16 / plugins / PIC16Base / PluginMain.cpp
index 09fb9695e9addb135dfd93bf77cdc7e0befa5217..21a25b3f734b289fe1e7453d748150479cc91cfb 100644 (file)
@@ -1,5 +1,9 @@
 #include "AutoGenerated.inc"
+
 #include "llvm/System/Path.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
 
 namespace llvmc {
   extern char *ProgramName;
@@ -11,19 +15,23 @@ static std::string GetDirSeparator(void) {
 }
 
 namespace hooks {
+// Get the dir where c16 executables reside.
 std::string GetBinDir (void) {
   // Construct a Path object from the program name.  
-  llvm::sys::Path ProgramFullName(llvmc::ProgramName, 
-                                  strlen(llvmc::ProgramName));
+  void *P = (void*) (intptr_t) GetBinDir;
+  sys::Path ProgramFullPath 
+    = sys::Path::GetMainExecutable(llvmc::ProgramName, P);
 
   // Get the dir name for the program. It's last component should be 'bin'.
-  std::string BinDir = ProgramFullName.getDirname();
+  std::string BinDir = ProgramFullPath.getDirname();
 
+  // llvm::errs() << "BinDir: " << BinDir << '\n';
   return BinDir + GetDirSeparator();
 }
 
+// Get the Top-level Installation dir for c16.
 std::string GetInstallDir (void) {
-  llvm::sys::Path BinDirPath = llvm::sys::Path(GetBinDir());
+  sys::Path BinDirPath = sys::Path(GetBinDir());
 
   // Go one more level up to get the install dir.
   std::string InstallDir  = BinDirPath.getDirname();
@@ -31,17 +39,22 @@ std::string GetInstallDir (void) {
   return InstallDir + GetDirSeparator();
 }
 
+// Get the dir where the c16 header files reside.
 std::string GetStdHeadersDir (void) {
   return GetInstallDir() + "include";
 }
 
+// Get the dir where the assembler header files reside.
 std::string GetStdAsmHeadersDir (void) {
   return GetInstallDir() + "inc";
 }
+
+// Get the dir where the linker scripts reside.
 std::string GetStdLinkerScriptsDir (void) {
   return GetInstallDir() + "lkr";
 }
 
+// Get the dir where startup code, intrinsics and lib reside.
 std::string GetStdLibsDir (void) {
   return GetInstallDir() + "lib";
 }