summaryrefslogtreecommitdiffstats
path: root/Source/cmComputeLinkDepends.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-05-26 14:56:10 (GMT)
committerBrad King <brad.king@kitware.com>2021-05-29 13:28:36 (GMT)
commit3941555d935afad8343c66f39579bfc611201a6f (patch)
tree4f5b55b32aa25a56fb6f6f10ba896585878e6331 /Source/cmComputeLinkDepends.h
parentf530b3a26729d0820c804e312b72e0061d6eeb4b (diff)
downloadCMake-3941555d935afad8343c66f39579bfc611201a6f.zip
CMake-3941555d935afad8343c66f39579bfc611201a6f.tar.gz
CMake-3941555d935afad8343c66f39579bfc611201a6f.tar.bz2
target_link_libraries: Place $<TARGET_OBJECTS> before libraries
Linkers always use object files explicitly specified on the command line regardless of where they appear. Move them to the front of the list of linked libraries in so that symbols required by the object files can be resolved by any library. Issue: #22149
Diffstat (limited to 'Source/cmComputeLinkDepends.h')
-rw-r--r--Source/cmComputeLinkDepends.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h
index 00fbd59..72316f1 100644
--- a/Source/cmComputeLinkDepends.h
+++ b/Source/cmComputeLinkDepends.h
@@ -66,10 +66,12 @@ private:
std::map<cmLinkItem, int>::iterator AllocateLinkEntry(
cmLinkItem const& item);
int AddLinkEntry(cmLinkItem const& item);
+ void AddLinkObject(cmLinkItem const& item);
void AddVarLinkEntries(int depender_index, const char* value);
void AddDirectLinkEntries();
template <typename T>
void AddLinkEntries(int depender_index, std::vector<T> const& libs);
+ void AddLinkObjects(std::vector<cmLinkItem> const& objs);
cmLinkItem ResolveLinkItem(int depender_index, const std::string& name);
// One entry for each unique item.
@@ -154,6 +156,9 @@ private:
std::set<cmGeneratorTarget const*> OldWrongConfigItems;
void CheckWrongConfigItem(cmLinkItem const& item);
+ // Record of explicitly linked object files.
+ std::vector<int> ObjectEntries;
+
int ComponentOrderId;
cmTargetLinkLibraryType LinkType;
bool HasConfig;