#include "csourcefile.h"
#include "misc.h"
#include "sharedlibrary.h"
-#include "systemlibrary.h"
+#include "staticlibrary.h"
#include "virtualfilesystem.h"
using namespace std;
targets.insert(TargetMap::value_type(path.str(), t));
}
-FileTarget *VirtualFileSystem::find_header(const string &include, const FS::Path &from, const list<string> &path)
+FileTarget *VirtualFileSystem::find_header(const string &name, const SearchPath &path)
{
string hash(8, 0);
- if(include[0]=='\"')
- update_hash(hash, from.str());
for(list<string>::const_iterator i=path.begin(); i!=path.end(); ++i)
update_hash(hash, *i);
- string id = hash+include;
+ string id = hash+name;
TargetMap::iterator i = include_cache.find(id);
if(i!=include_cache.end())
return i->second;
- static string cxx_ver;
- if(cxx_ver.empty())
- {
- // XXX This needs to go elsewhere
- /*StringList argv;
- argv.push_back(current_arch->get_tool("CXX"));
- argv.push_back("--version");
- if(RegMatch m = Regex("[0-9]\\.[0-9.]+").match(run_command(argv)))
- {
- cxx_ver = m[0].str;
- while(!cxx_ver.empty() && !FS::is_dir(FS::Path("/usr/include/c++")/cxx_ver))
- {
- string::size_type dot = cxx_ver.rfind('.');
- if(dot==string::npos)
- break;
- cxx_ver.erase(dot);
- }
- if(verbose>=5)
- IO::print("C++ version is %s\n", cxx_ver);
- }
- else*/
- cxx_ver = "-";
- }
-
- string fn = include.substr(1);
if(builder.get_verbose()>=5)
- IO::print("Looking for include %s from %s with path %s\n", fn, from, join(path.begin(), path.end()));
+ IO::print("Looking for header %s with path %s\n", name, join(path.begin(), path.end()));
SearchPath syspath;
const Architecture &arch = builder.get_current_arch();
syspath.push_back((FS::Path("/usr/include/c++/")/cxx_ver).str());
FileTarget *tgt = 0;
- if(include[0]=='\"')
- tgt = get_header(FS::Path(from)/fn);
- for(list<string>::const_iterator j=path.begin(); (!tgt && j!=path.end()); ++j)
- tgt = get_header(FS::Path(*j)/fn);
- for(list<string>::const_iterator j=syspath.begin(); (!tgt && j!=syspath.end()); ++j)
- tgt = get_header(FS::Path(*j)/fn);
+ for(SearchPath::const_iterator j=path.begin(); (!tgt && j!=path.end()); ++j)
+ tgt = get_header(FS::Path(*j)/name);
+ for(SearchPath::const_iterator j=syspath.begin(); (!tgt && j!=syspath.end()); ++j)
+ tgt = get_header(FS::Path(*j)/name);
include_cache.insert(TargetMap::value_type(id, tgt));
{
FileTarget *tgt = get_target(fn);
if(!tgt)
- return new SystemLibrary(builder, fn.str());
+ return new SharedLibrary(builder, fn);
else if(mode==DYNAMIC || !tgt->get_package())
return tgt;
}
if(FileTarget *tgt = get_target(fn))
return tgt;
else
- return new SystemLibrary(builder, fn.str());
+ return new StaticLibrary(builder, fn);
}
return 0;