Mercurial > projects > ldc
diff gen/programs.cpp @ 1299:847b767b2d0b
Factor out the code to find gcc, and add a command-line option to override the
default executable name.
This should help cross-compilation by allowing a cross-gcc to be specified from
the configuration file instead of only through the CC environment variable.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Mon, 04 May 2009 13:32:16 +0200 |
parents | |
children | a376776e2301 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/programs.cpp Mon May 04 13:32:16 2009 +0200 @@ -0,0 +1,41 @@ +#include "gen/programs.h" + +#include "llvm/Support/CommandLine.h" +#include "llvm/System/Program.h" + +#include "root.h" // error(char*) +#include "mars.h" // fatal() + +using namespace llvm; + +static cl::opt<std::string> gcc("gcc", + cl::desc("GCC to use for assembling and linking"), + cl::Hidden, + cl::ZeroOrMore); + + +sys::Path getGcc() { + const char *cc = NULL; + + if (gcc.getNumOccurrences() > 0 && gcc.length() > 0) + cc = gcc.c_str(); + + if (!cc) +#if !_WIN32 + cc = getenv("CC"); + if (!cc) +#endif + cc = "gcc"; + + sys::Path path = sys::Program::FindProgramByName(cc); + if (path.empty() && !cc) { + if (cc) { + path.set(cc); + } else { + error("failed to locate gcc"); + fatal(); + } + } + + return path; +}