From e943994f881a060b184aeee869a32a464f504a62 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 23 Jul 2012 21:37:13 +0300 Subject: [PATCH] Add a parameter to suppress the use of system path in VirtualFileSyste::find_* --- source/virtualfilesystem.cpp | 21 +++++++++++++-------- source/virtualfilesystem.h | 10 ++++++---- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/source/virtualfilesystem.cpp b/source/virtualfilesystem.cpp index c012301..ec23ef5 100644 --- a/source/virtualfilesystem.cpp +++ b/source/virtualfilesystem.cpp @@ -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 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::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 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(); diff --git a/source/virtualfilesystem.h b/source/virtualfilesystem.h index 045f9b5..21f3ec2 100644 --- a/source/virtualfilesystem.h +++ b/source/virtualfilesystem.h @@ -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 -- 2.43.0