mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
For PR495:
Get rid of the difference between file paths and directory paths. The Path class now simply stores a path that can refer to either a file or a directory. This required various changes in the implementation and interface of the class with the corresponding impact to its users. Doxygen comments were also updated to reflect these changes. Interface changes are: appendDirectory -> appendComponent appendFile -> appendComponent elideDirectory -> eraseComponent elideFile -> eraseComponent elideSuffix -> eraseSuffix renameFile -> rename setDirectory -> set setFile -> set Changes pass Dejagnu and llvm-test/SingleSource tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22349 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -69,7 +69,6 @@ Linker::verbose(const std::string& message) {
|
||||
|
||||
void
|
||||
Linker::addPath(const sys::Path& path) {
|
||||
assert(path.isDirectory() && "Can only insert directories into the path");
|
||||
LibPaths.push_back(path);
|
||||
}
|
||||
|
||||
@ -77,7 +76,7 @@ void
|
||||
Linker::addPaths(const std::vector<std::string>& paths) {
|
||||
for (unsigned i = 0; i != paths.size(); ++i) {
|
||||
sys::Path aPath;
|
||||
aPath.setDirectory(paths[i]);
|
||||
aPath.set(paths[i]);
|
||||
LibPaths.push_back(aPath);
|
||||
}
|
||||
}
|
||||
@ -118,26 +117,35 @@ Linker::LoadObject(const sys::Path &FN) {
|
||||
static inline sys::Path IsLibrary(const std::string& Name,
|
||||
const sys::Path& Directory) {
|
||||
|
||||
assert(Directory.isDirectory() && "Need to specify a directory");
|
||||
sys::Path FullPath(Directory);
|
||||
FullPath.appendFile("lib" + Name);
|
||||
|
||||
FullPath.appendSuffix("a");
|
||||
if (FullPath.isArchive())
|
||||
return FullPath;
|
||||
// Make sure the directory actually is a directory in the file system.
|
||||
if (FullPath.isDirectory())
|
||||
{
|
||||
// Try the libX.a form
|
||||
FullPath.appendComponent("lib" + Name);
|
||||
FullPath.appendSuffix("a");
|
||||
if (FullPath.isArchive())
|
||||
return FullPath;
|
||||
|
||||
FullPath.elideSuffix();
|
||||
FullPath.appendSuffix("bca");
|
||||
if (FullPath.isArchive())
|
||||
return FullPath;
|
||||
// Try the libX.bca form
|
||||
FullPath.eraseSuffix();
|
||||
FullPath.appendSuffix("bca");
|
||||
if (FullPath.isArchive())
|
||||
return FullPath;
|
||||
|
||||
FullPath.elideSuffix();
|
||||
FullPath.appendSuffix(&(LTDL_SHLIB_EXT[1]));
|
||||
if (FullPath.isDynamicLibrary()) // Native shared library?
|
||||
return FullPath;
|
||||
if (FullPath.isBytecodeFile()) // .so file containing bytecode?
|
||||
return FullPath;
|
||||
// Try the libX.so form
|
||||
FullPath.eraseSuffix();
|
||||
FullPath.appendSuffix(&(LTDL_SHLIB_EXT[1]));
|
||||
if (FullPath.isDynamicLibrary()) // Native shared library?
|
||||
return FullPath;
|
||||
if (FullPath.isBytecodeFile()) // .so file containing bytecode?
|
||||
return FullPath;
|
||||
|
||||
// Not found .. fall through
|
||||
}
|
||||
|
||||
// Indicate that the library was not found in the directory.
|
||||
FullPath.clear();
|
||||
return FullPath;
|
||||
}
|
||||
|
Reference in New Issue
Block a user