diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2022-05-29 16:08:31 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2022-06-09 22:15:42 +0200 |
commit | 80db51ae3f7d5fbfb52eee4505f615ea4edba62d (patch) | |
tree | 8460f40daf54d253bb48fec3085fc8384313941e | |
parent | b74bd9e24e1205b7449404fd05172664b211d82c (diff) |
Use derived dependency task targets instead of 'raw' depends strings for linkage.
-rw-r--r-- | src/task_ar.cc | 14 | ||||
-rw-r--r-- | src/task_ld.cc | 20 | ||||
-rw-r--r-- | src/task_so.cc | 14 |
3 files changed, 7 insertions, 41 deletions
diff --git a/src/task_ar.cc b/src/task_ar.cc index 0763c04..086ffa1 100644 --- a/src/task_ar.cc +++ b/src/task_ar.cc @@ -81,22 +81,12 @@ bool TaskAR::dirtyInner() int TaskAR::runInner() { - std::string objectlist; - for(const auto& objectFile : objectFiles) - { - if(!objectlist.empty()) - { - objectlist += " "; - } - objectlist += objectFile.string(); - } - std::vector<std::string> args; args.push_back("rcs"); args.push_back(targetFile.string()); - for(const auto& objectFile : objectFiles) + for(const auto& task : getDependsTasks()) { - args.push_back(objectFile.string()); + args.push_back(task->target()); } { // Write flags to file. diff --git a/src/task_ld.cc b/src/task_ld.cc index 918fdee..600de8e 100644 --- a/src/task_ld.cc +++ b/src/task_ld.cc @@ -100,31 +100,17 @@ bool TaskLD::dirtyInner() int TaskLD::runInner() { - std::string objectlist; - for(const auto& objectFile : objectFiles) - { - if(!objectlist.empty()) - { - objectlist += " "; - } - objectlist += objectFile.string(); - } - std::vector<std::string> args; - for(const auto& objectFile : objectFiles) - { - args.push_back(objectFile.string()); - } - - for(const auto& depFile : depFiles) + for(const auto& dep : getDependsTasks()) { + std::filesystem::path depFile = dep->target(); if(depFile.extension() == ".so") { args.push_back(std::string("-L") + settings.builddir); auto lib = depFile.stem().string().substr(3); // strip 'lib' prefix args.push_back(std::string("-l") + lib); } - else if(depFile.extension() == ".a") + else if(depFile.extension() == ".a" || depFile.extension() == ".o") { args.push_back(depFile.string()); } diff --git a/src/task_so.cc b/src/task_so.cc index 430c3e1..44340dd 100644 --- a/src/task_so.cc +++ b/src/task_so.cc @@ -81,16 +81,6 @@ bool TaskSO::dirtyInner() int TaskSO::runInner() { - std::string objectlist; - for(const auto& objectFile : objectFiles) - { - if(!objectlist.empty()) - { - objectlist += " "; - } - objectlist += objectFile.string(); - } - std::vector<std::string> args; args.push_back("-fPIC"); @@ -99,9 +89,9 @@ int TaskSO::runInner() args.push_back("-o"); args.push_back(targetFile.string()); - for(const auto& objectFile : objectFiles) + for(const auto& task : getDependsTasks()) { - args.push_back(objectFile.string()); + args.push_back(task->target()); } for(const auto& depFile : depFiles) |