Introduce the INTERFACE_LINK_LIBRARIES property.

This property replaces the properties which
match (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, and is enabled
for IMPORTED targets, and for non-IMPORTED targets only with a policy.

For static libraries, the INTERFACE_LINK_LIBRARIES property is
also used as the source of transitive usage requirements content.
Static libraries still require users to link to all entries in
their LINK_LIBRARIES, but usage requirements such as INCLUDE_DIRECTORIES
COMPILE_DEFINITIONS and COMPILE_OPTIONS can be restricted to only
certain interface libraries.

Because the INTERFACE_LINK_LIBRARIES property is populated unconditionally,
we need to compare the evaluated result of it with the link implementation
to determine whether to issue the policy warning for static libraries. For
shared libraries, the policy warning is issued if the contents of
the INTERFACE_LINK_LIBRARIES property differs from the contents of the
relevant config-specific old LINK_INTERFACE_LIBRARIES property.
This commit is contained in:
Stephen Kelly
2013-06-04 16:25:47 +02:00
parent ddde61c0b2
commit d0a76ea07c
42 changed files with 434 additions and 8 deletions

View File

@@ -0,0 +1,19 @@
#ifndef FOO_LIBRARY
#error Expected FOO_LIBRARY
#endif
#ifndef BAR_LIBRARY
#error Expected BAR_LIBRARY
#endif
#ifdef BANG_LIBRARY
#error Unexpected BANG_LIBRARY
#endif
#include "bar.h"
int main(void)
{
return foo() + bar();
}