bool SearchPathOptions::parse(LinkerConfig& pConfig, LinkerScript& pScript) { // set --sysroot if (!m_SysRoot.empty()) { if (exists(m_SysRoot) && is_directory(m_SysRoot)) pScript.setSysroot(m_SysRoot); } // set -L[path] llvm::cl::list<std::string>::iterator sd; llvm::cl::list<std::string>::iterator sdEnd = m_SearchDirList.end(); for (sd = m_SearchDirList.begin(); sd != sdEnd; ++sd) { if (!pScript.directories().insert(*sd)) { // FIXME: need a warning function errs() << "WARNING: can not open search directory `-L" << *sd << "'.\n"; } } // set -no-stdlib pConfig.options().setNoStdlib(m_NoStdlib); // set --rpath [path] llvm::cl::list<std::string>::iterator rp; llvm::cl::list<std::string>::iterator rpEnd = m_RuntimePath.end(); for (rp = m_RuntimePath.begin(); rp != rpEnd; ++rp) { pConfig.options().getRpathList().push_back(*rp); } return true; }