- PackageMap::iterator i=packages.find(n);
- if(i!=packages.end())
- return i->second;
-
- list<string> argv;
- argv.push_back("pkg-config");
- argv.push_back("--variable=source");
- argv.push_back(n);
- string srcdir=strip(run_command(argv));
-
- list<Path::Path> dirs;
- if(!srcdir.empty())
- dirs.push_back(srcdir);
-
- string dirname=n;
- if(dirname.compare(0, 3, "msp"))
- dirname.erase(0, 3);
- dirs.push_back(cwd/dirname);
- dirs.push_back(cwd/".."/dirname);
-
- for(list<Path::Path>::iterator j=dirs.begin(); j!=dirs.end(); ++j)
- if(!load_build_file(*j/"Build"))
- {
- i=packages.find(n);
- if(i!=packages.end())
- return i->second;
- return 0;
- }
-
- Package *pkg=Package::create(*this, n);
- packages.insert(PackageMap::value_type(n, pkg));
- new_pkgs.push_back(pkg);