]> git.tdb.fi Git - builder.git/commitdiff
Add a parameter to suppress the use of system path in VirtualFileSyste::find_*
authorMikko Rasa <tdb@tdb.fi>
Mon, 23 Jul 2012 18:37:13 +0000 (21:37 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 23 Jul 2012 18:37:13 +0000 (21:37 +0300)
source/virtualfilesystem.cpp
source/virtualfilesystem.h

index c0123015fcd0d78c0d1bc77e772d74fbfcb01a1e..ec23ef5a2e1fbf3d1c944a14dbda85e2258319d3 100644 (file)
@@ -35,16 +35,19 @@ void VirtualFileSystem::register_path(const FS::Path &path, FileTarget *t)
        builder.get_logger().log("vfs", format("Path %s registered to %s", path, t->get_name()));
 }
 
-FileTarget *VirtualFileSystem::find_header(const string &name, const SearchPath &path)
+FileTarget *VirtualFileSystem::find_header(const string &name, const SearchPath &path, bool use_syspath)
 {
        // XXX This will cause trouble with multiple architectures in a single build
        const Tool *tool = builder.get_toolchain().get_tool_for_suffix(FS::extpart(FS::basename(name)), true);
        if(!tool)
                return 0;
-       const Tool::SearchPath &syspath = tool->get_system_path();
 
        list<FS::Path> combined_path(path.begin(), path.end());
-       combined_path.insert(combined_path.end(), syspath.begin(), syspath.end());
+       if(use_syspath)
+       {
+               const Tool::SearchPath &syspath = tool->get_system_path();
+               combined_path.insert(combined_path.end(), syspath.begin(), syspath.end());
+       }
 
        for(list<FS::Path>::const_iterator i=combined_path.begin(); i!=combined_path.end(); ++i)
        {
@@ -66,13 +69,15 @@ FileTarget *VirtualFileSystem::find_header(const string &name, const SearchPath
        return 0;
 }
 
-FileTarget *VirtualFileSystem::find_library(const string &lib, const SearchPath &path, BuildInfo::LibraryMode mode)
+FileTarget *VirtualFileSystem::find_library(const string &lib, const SearchPath &path, BuildInfo::LibraryMode mode, bool use_syspath)
 {
-       const Tool &linker = builder.get_toolchain().get_tool("LINK");
-       const Tool::SearchPath &syspath = linker.get_system_path();
-
        list<FS::Path> combined_path(path.begin(), path.end());
-       combined_path.insert(combined_path.end(), syspath.begin(), syspath.end());
+       if(use_syspath)
+       {
+               const Tool &linker = builder.get_toolchain().get_tool("LINK");
+               const Tool::SearchPath &syspath = linker.get_system_path();
+               combined_path.insert(combined_path.end(), syspath.begin(), syspath.end());
+       }
 
        const Architecture &arch = builder.get_current_arch();
 
index 045f9b5057bcdb2b3514736147f83c015d97afd5..21f3ec25ac0168e6f81c5d273d30e601fbb3272e 100644 (file)
@@ -39,14 +39,16 @@ public:
        void register_path(const Msp::FS::Path &, FileTarget *);
 
        /** Locates a source file.  If a file is found but no target is associated
-       with it, a new package-less target is created with the appropriate tool. */
-       FileTarget *find_header(const std::string &, const SearchPath &);
+       with it, a new package-less target is created with the appropriate tool.  If
+       use_syspath is true, the system path reported by the tool is also searched. */
+       FileTarget *find_header(const std::string &, const SearchPath &, bool use_syspath = true);
 
        /** Locates a library.  The library name should be the same as what would be
        used in linking with the library.  If a file is found but no target is
        associated with it, a new package-less target of appropriate type is
-       created. */
-       FileTarget *find_library(const std::string &, const SearchPath &, BuildInfo::LibraryMode);
+       created.  If use_syspath is true, the system path reported by the LINK tool
+       is also searched. */
+       FileTarget *find_library(const std::string &, const SearchPath &, BuildInfo::LibraryMode, bool use_syspath = true);
 
        /** Locates a binary.  The normal search path for binaries is used (usually
        this means the PATH environment variable).  If a file is found but no target