diff --git a/gen/linker.cpp b/gen/linker.cpp index 778b87b6..12ec1bb6 100644 --- a/gen/linker.cpp +++ b/gen/linker.cpp @@ -204,18 +204,25 @@ int linkObjToExecutable(const char* argv0) // error string std::string errstr; + const char *cc; +#if !_WIN32 + cc = getenv("CC"); + if (!cc) +#endif + cc = "gcc"; + // find gcc for linking - llvm::sys::Path gcc = llvm::sys::Program::FindProgramByName("gcc"); + llvm::sys::Path gcc = llvm::sys::Program::FindProgramByName(cc); if (gcc.isEmpty()) { - gcc.set("gcc"); + gcc.set(cc); } // build arguments std::vector args; // first the program name ?? - args.push_back("gcc"); + args.push_back(cc); // object files for (int i = 0; i < global.params.objfiles->dim; i++) diff --git a/gen/toobj.cpp b/gen/toobj.cpp index d00556ec..1ae0411c 100644 --- a/gen/toobj.cpp +++ b/gen/toobj.cpp @@ -326,7 +326,14 @@ void assemble(const llvm::sys::Path& asmpath, const llvm::sys::Path& objpath) { using namespace llvm; - sys::Path gcc = llvm::sys::Program::FindProgramByName("gcc"); + const char *cc; +#if !_WIN32 + cc = getenv("CC"); + if (!cc) +#endif + cc = "gcc"; + + sys::Path gcc = llvm::sys::Program::FindProgramByName(cc); if (gcc.empty()) { error("failed to locate gcc");