diff options
author | Brad King <brad.king@kitware.com> | 2018-09-06 18:21:06 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-09-07 13:23:43 (GMT) |
commit | bea390e9bd68e1aa7d86b6aef7384f502c39068c (patch) | |
tree | b19be7471586c47e8a5b1a72f433a773a62ccee8 /Tests/ImportedSameName | |
parent | fc7e4d1ed85370d03acbd62bc753cced3550752b (diff) | |
download | CMake-bea390e9bd68e1aa7d86b6aef7384f502c39068c.zip CMake-bea390e9bd68e1aa7d86b6aef7384f502c39068c.tar.gz CMake-bea390e9bd68e1aa7d86b6aef7384f502c39068c.tar.bz2 |
Fix dependency propagation through same-name imported targets
If two imported targets in different directories have the same name we
should still be able to propagate transitive link dependencies from
both. Fix the target and link dependency analyzers to de-duplicate
targets using target pointers rather than target names since the
pointers will not be duplicated even if the names are.
Issue: #18345
Diffstat (limited to 'Tests/ImportedSameName')
-rw-r--r-- | Tests/ImportedSameName/A/CMakeLists.txt | 7 | ||||
-rw-r--r-- | Tests/ImportedSameName/A/a.c | 3 | ||||
-rw-r--r-- | Tests/ImportedSameName/B/CMakeLists.txt | 7 | ||||
-rw-r--r-- | Tests/ImportedSameName/B/b.c | 3 | ||||
-rw-r--r-- | Tests/ImportedSameName/CMakeLists.txt | 8 | ||||
-rw-r--r-- | Tests/ImportedSameName/main.c | 9 |
6 files changed, 37 insertions, 0 deletions
diff --git a/Tests/ImportedSameName/A/CMakeLists.txt b/Tests/ImportedSameName/A/CMakeLists.txt new file mode 100644 index 0000000..9417a2c --- /dev/null +++ b/Tests/ImportedSameName/A/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(a STATIC a.c) + +add_library(sameName INTERFACE IMPORTED) +target_link_libraries(sameName INTERFACE a) + +add_library(ifaceA INTERFACE) +target_link_libraries(ifaceA INTERFACE sameName) diff --git a/Tests/ImportedSameName/A/a.c b/Tests/ImportedSameName/A/a.c new file mode 100644 index 0000000..4ef3698 --- /dev/null +++ b/Tests/ImportedSameName/A/a.c @@ -0,0 +1,3 @@ +void a(void) +{ +} diff --git a/Tests/ImportedSameName/B/CMakeLists.txt b/Tests/ImportedSameName/B/CMakeLists.txt new file mode 100644 index 0000000..6947fa9 --- /dev/null +++ b/Tests/ImportedSameName/B/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(b STATIC b.c) + +add_library(sameName INTERFACE IMPORTED) +target_link_libraries(sameName INTERFACE b) + +add_library(ifaceB INTERFACE) +target_link_libraries(ifaceB INTERFACE sameName) diff --git a/Tests/ImportedSameName/B/b.c b/Tests/ImportedSameName/B/b.c new file mode 100644 index 0000000..c7c7df4 --- /dev/null +++ b/Tests/ImportedSameName/B/b.c @@ -0,0 +1,3 @@ +void b(void) +{ +} diff --git a/Tests/ImportedSameName/CMakeLists.txt b/Tests/ImportedSameName/CMakeLists.txt new file mode 100644 index 0000000..4292c12 --- /dev/null +++ b/Tests/ImportedSameName/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.12) +project(ImportedSameName C) + +add_subdirectory(A) +add_subdirectory(B) + +add_executable(ImportedSameName main.c) +target_link_libraries(ImportedSameName PRIVATE ifaceA ifaceB) diff --git a/Tests/ImportedSameName/main.c b/Tests/ImportedSameName/main.c new file mode 100644 index 0000000..33196b7 --- /dev/null +++ b/Tests/ImportedSameName/main.c @@ -0,0 +1,9 @@ +extern void a(void); +extern void b(void); + +int main(void) +{ + a(); + b(); + return 0; +} |