diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2009-06-30 00:16:00 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2009-06-30 00:16:00 +0000 |
commit | 875ace52ee52c9100cf80a1f0229d26b77963a11 (patch) | |
tree | 3c181d261bb571981f4efd0adb0220d73e7e720e | |
parent | 583cf319731fc50aac0413bf2f508f4991c81615 (diff) |
Add a way to access argv[0] in hooks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74483 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CompilerDriver/Main.cpp | 5 | ||||
-rw-r--r-- | tools/llvmc/doc/LLVMC-Reference.rst | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/CompilerDriver/Main.cpp b/lib/CompilerDriver/Main.cpp index 6807a83006..3a2917032e 100644 --- a/lib/CompilerDriver/Main.cpp +++ b/lib/CompilerDriver/Main.cpp @@ -71,11 +71,16 @@ namespace { namespace llvmc { +// Sometimes plugins want to condition on the value in argv[0]. +const char* ProgramName; + int Main(int argc, char** argv) { try { LanguageMap langMap; CompilationGraph graph; + ProgramName = argv[0]; + cl::ParseCommandLineOptions (argc, argv, "LLVM Compiler Driver (Work In Progress)", true); diff --git a/tools/llvmc/doc/LLVMC-Reference.rst b/tools/llvmc/doc/LLVMC-Reference.rst index 329f9ea5eb..ddc54d2a13 100644 --- a/tools/llvmc/doc/LLVMC-Reference.rst +++ b/tools/llvmc/doc/LLVMC-Reference.rst @@ -678,6 +678,28 @@ errors as its status code. .. _Graphviz: http://www.graphviz.org/ .. _Ghostview: http://pages.cs.wisc.edu/~ghost/ +Conditioning on the executable name +----------------------------------- + +For now, the executable name (the value passed to the driver in ``argv[0]``) is +accessible only in the C++ code (i.e. hooks). Use the following code:: + + namespace llvmc { + extern const char* ProgramName; + } + + std::string MyHook() { + //... + if (strcmp(ProgramName, "mydriver") == 0) { + //... + + } + +In general, you're encouraged not to make the behaviour dependent on the +executable file name, and use command-line switches instead. See for example how +the ``Base`` plugin behaves when it needs to choose the correct linker options +(think ``g++`` vs. ``gcc``). + .. raw:: html <hr /> |