]> git.tdb.fi Git - builder.git/commitdiff
Revert to default system path for GnuCompiler is autodetection fails
authorMikko Rasa <tdb@tdb.fi>
Sun, 3 Dec 2017 09:13:29 +0000 (11:13 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sun, 3 Dec 2017 10:50:30 +0000 (12:50 +0200)
source/gnucompiler.cpp

index 8d0bca7c6470cc229ee02874ab9ec04f4620c2ce..16e7ccac1d88da73a34776e288980b295f4f0747 100644 (file)
@@ -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");
        }
 }