From: Mikko Rasa Date: Sun, 3 Dec 2017 09:13:29 +0000 (+0200) Subject: Revert to default system path for GnuCompiler is autodetection fails X-Git-Url: http://git.tdb.fi/?p=builder.git;a=commitdiff_plain;h=d75cd87bdcf889148d50415366d713ed82456945 Revert to default system path for GnuCompiler is autodetection fails --- diff --git a/source/gnucompiler.cpp b/source/gnucompiler.cpp index 8d0bca7..16e7cca 100644 --- a/source/gnucompiler.cpp +++ b/source/gnucompiler.cpp @@ -102,6 +102,9 @@ string GnuCompiler::create_build_signature(const BuildInfo &binfo) const void GnuCompiler::do_prepare() { + bool path_found = false; + const FS::Path &sysroot = build_info.sysroot; + executable = builder.get_vfs().find_binary(command); if(executable) { @@ -111,12 +114,10 @@ void GnuCompiler::do_prepare() argv.push_back("-E"); if(tag=="CXX") argv.push_back("-xc++"); - const FS::Path &sysroot = build_info.sysroot; if(!sysroot.empty()) argv.push_back("--sysroot="+sysroot.str()); argv.push_back("-"); - string prog = FS::basename(executable->get_path()); builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end()))); try { @@ -127,22 +128,34 @@ void GnuCompiler::do_prepare() { string::size_type newline = output.find('\n', start); if(!output.compare(start, 34, "#include <...> search starts here:")) + { record_path = true; + path_found = true; + } else if(!output.compare(start, 19, "End of search list.")) record_path = false; else if(record_path) { FS::Path path = strip(output.substr(start, newline-start)); - builder.get_logger().log("tools", format("Got %s (%s) system path: %s", prog, tag, path)); + builder.get_logger().log("tools", format("Got %s system path: %s", tag, path)); system_path.push_back(path); } start = newline+1; } } catch(const runtime_error &e) - { - problems.push_back("Unable to determine system path"); - } + { } + } + + if(!path_found) + { + builder.get_logger().log("tools", format("No %s system path found, using defaults", tag)); + if(!sysroot.empty()) + system_path.push_back(sysroot/"usr/include"); + else if(architecture->is_native()) + system_path.push_back("/usr/include"); + else + system_path.push_back("/usr/"+architecture->get_cross_prefix()+"/include"); } }