diff options
author | Brad King <brad.king@kitware.com> | 2018-12-12 13:32:11 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2018-12-12 13:32:17 (GMT) |
commit | 6a6900f61666977948bffa1409d4633799de323c (patch) | |
tree | a0e3ecc319274205b436e5423dfcda850532e5ef | |
parent | 71e74b4ae453473d597ce5a53e2e8e7641dc832a (diff) | |
parent | bab24e782c1bf56ef7263e91e5cf78879699a036 (diff) | |
download | CMake-6a6900f61666977948bffa1409d4633799de323c.zip CMake-6a6900f61666977948bffa1409d4633799de323c.tar.gz CMake-6a6900f61666977948bffa1409d4633799de323c.tar.bz2 |
Merge topic 'object-library-link'
bab24e782c target_link_libraries: Propagate dependencies of object libraries
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2725
-rw-r--r-- | Help/release/dev/object-library-link.rst | 5 | ||||
-rw-r--r-- | Source/cmTargetLinkLibrariesCommand.cxx | 3 | ||||
-rw-r--r-- | Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/ObjectLibrary/TransitiveDependencies.cmake | 7 | ||||
-rw-r--r-- | Tests/RunCMake/ObjectLibrary/exe2.c | 6 |
5 files changed, 21 insertions, 1 deletions
diff --git a/Help/release/dev/object-library-link.rst b/Help/release/dev/object-library-link.rst new file mode 100644 index 0000000..990d915 --- /dev/null +++ b/Help/release/dev/object-library-link.rst @@ -0,0 +1,5 @@ +object-library-link +------------------- + +* Object library linking has been fixed to propagate transitive link + dependencies of object libraries to consuming targets. diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 66cc6ee..eebf7a0 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -451,7 +451,8 @@ bool cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib, // STATIC library.) if (this->CurrentProcessingState == ProcessingKeywordPrivateInterface || this->CurrentProcessingState == ProcessingPlainPrivateInterface) { - if (this->Target->GetType() == cmStateEnums::STATIC_LIBRARY) { + if (this->Target->GetType() == cmStateEnums::STATIC_LIBRARY || + this->Target->GetType() == cmStateEnums::OBJECT_LIBRARY) { std::string configLib = this->Target->GetDebugGeneratorExpressions(libRef, llt); if (cmGeneratorExpression::IsValidTargetName(libRef) || diff --git a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake index c73732f..6ca33b8 100644 --- a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake +++ b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake @@ -45,6 +45,7 @@ run_object_lib_build2(LinkObjRHSObject) run_object_lib_build(LinkObjRHSShared2) run_object_lib_build(LinkObjRHSStatic2) run_object_lib_build2(LinkObjRHSObject2) +run_object_lib_build(TransitiveDependencies) run_cmake(MissingSource) run_cmake(ObjWithObj) diff --git a/Tests/RunCMake/ObjectLibrary/TransitiveDependencies.cmake b/Tests/RunCMake/ObjectLibrary/TransitiveDependencies.cmake new file mode 100644 index 0000000..e41cf2e --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/TransitiveDependencies.cmake @@ -0,0 +1,7 @@ +add_library(lib1 STATIC depends_obj0.c) +add_library(lib2 OBJECT a.c) +target_link_libraries(lib2 PRIVATE lib1) + +add_executable(test exe2.c) + +target_link_libraries(test PUBLIC lib2) diff --git a/Tests/RunCMake/ObjectLibrary/exe2.c b/Tests/RunCMake/ObjectLibrary/exe2.c new file mode 100644 index 0000000..66e0caf --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/exe2.c @@ -0,0 +1,6 @@ +extern int myobj_foo(void); + +int main(void) +{ + return myobj_foo(); +} |