Commit d2591288 authored by Brad King's avatar Brad King
Browse files

Test link multiplicity export/import

We test that LINK_INTERFACE_MULTIPLICITY propagates through export() and
install(EXPORT) into dependent projects.  A simple cycle of two archives
that need to be scanned three times ensures that the importing project
uses the multiplicity correctly.
parent 0cfd8c41
......@@ -73,12 +73,22 @@ target_link_libraries(testLib4
add_executable(testExe3 testExe3.c)
set_property(TARGET testExe3 PROPERTY MACOSX_BUNDLE 1)
# Test cyclic dependencies.
add_library(testLibCycleA STATIC
testLibCycleA1.c testLibCycleA2.c testLibCycleA3.c)
add_library(testLibCycleB STATIC
testLibCycleB1.c testLibCycleB2.c testLibCycleB3.c)
target_link_libraries(testLibCycleA testLibCycleB)
target_link_libraries(testLibCycleB testLibCycleA)
set_property(TARGET testLibCycleA PROPERTY LINK_INTERFACE_MULTIPLICITY 3)
# Install and export from install tree.
install(
TARGETS
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
testExe2lib testLib4lib testLib4libdbg testLib4libopt
testLib6
testLibCycleA testLibCycleB
EXPORT exp
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib NAMELINK_SKIP
......@@ -116,6 +126,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
)
export(TARGETS testExe2 testLib4 testLib5 testLib6 testExe3 testExe2lib
testLib4lib testLib4libdbg testLib4libopt
testLibCycleA testLibCycleB
NAMESPACE bld_
APPEND FILE ExportBuildTree.cmake
)
extern int testLibCycleB1(void);
int testLibCycleA1(void) { return testLibCycleB1(); }
extern int testLibCycleB2(void);
int testLibCycleA2(void) { return testLibCycleB2(); }
extern int testLibCycleB3(void);
int testLibCycleA3(void) { return testLibCycleB3(); }
extern int testLibCycleA2(void);
int testLibCycleB1(void) { return testLibCycleA2(); }
extern int testLibCycleA3(void);
int testLibCycleB2(void) { return testLibCycleA3(); }
int testLibCycleB3(void) { return 0; }
......@@ -29,6 +29,7 @@ target_link_libraries(imp_testExe1
exp_testLib4
exp_testLib5
exp_testLib6
exp_testLibCycleA
)
# Try building a plugin to an executable imported from the install tree.
......@@ -60,6 +61,7 @@ target_link_libraries(imp_testExe1b
bld_testLib4
bld_testLib5
bld_testLib6
bld_testLibCycleA
)
# Try building a plugin to an executable imported from the build tree.
......
......@@ -6,6 +6,7 @@ extern int testLib4();
extern int testLib4lib();
extern int testLib5();
extern int testLib6();
extern int testLibCycleA1();
/* Switch a symbol between debug and optimized builds to make sure the
proper library is found from the testLib4 link interface. */
......@@ -19,6 +20,6 @@ extern testLib4libcfg(void);
int main()
{
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
+ testLib5() + testLib6()
+ testLib5() + testLib6() + testLibCycleA1()
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment