Add a way to access argv[0] in hooks.

llvm-svn: 74483
This commit is contained in:
Mikhail Glushenkov 2009-06-30 00:16:00 +00:00
parent f40b590721
commit 3fcdada6b4
2 changed files with 27 additions and 0 deletions

View File

@ -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);

View File

@ -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 />