| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While porting boost to use these features, the generation step took
too long (several minutes before I stopped it). The reason was that
the boost libraries form a large interdependent mesh. The libraries
list their dependencies in their INTERFACE such as:
$<LINKED:boost::core>;$<LINKED:boost::config>;$<LINKED:boost::mpl>
As boost::core already depends on the boost::config libraries, that
expression has no impact on the end-content, as it is removed after
the generation step. There is no DAG issue though, so the generator
expression evaluation would fully evaluate them. In the case of the
config library, it also depends on the core library, so all depends
are followed through that again, despite the fact that they've just
been evaluated. After this patch, the evaluation skips libraries if
they have already been seen via depends or directly in the content.
This patch keeps track of targets whose INTERFACE has been consumed
already. The INCLUDE_DIRECTORIES and COMPILE_DEFINITIONS properties
are whitelisted because repeated content will be stripped out later
during generation. For other properties now and in the future, that
may not be the case.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This establishes that linking is used to propagate usage-requirements
between targets in CMake code. The use of the target_link_libraries
command as the API for this is chosen because introducing a new command
would introduce confusion due to multiple commands which differ only in
a subtle way.
|
|
|
|
|
|
| |
This is both a short form of using a TARGET_DEFINED expression
together with a TARGET_PROPERTY definition, and a way to strip
non-target content from interface properties when exporting.
|
|
|
|
| |
This will allow the implementation of the LINKED generator expression.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Projects set interface requirements upstream, and existing
downstreams use of target_link_libraries will consume those interfaces.
This can create a backward compatibility concern as the result may
be changing the order of include directories of downstreams, or another
side-effect of using the INTERFACE properties.
Provide a way for them to emulate the behavior of a version-based
policy in the config file.
|
| |
|
|
|
|
|
|
| |
An empty string is not likely going to produce expected results
in any evaluation context. It is replaced by preprocessing
currently.
|
|
|
|
|
|
| |
When evaluating TARGET_PROPERTY here, we can skip to the comma
location. We need to calculate it though as the string may have
just been changed.
|
|
|
|
| |
This was segfaulting before.
|
|\
| |
| |
| |
| |
| |
| | |
7bf490e Make subclasses responsible for joining content.
f6b16d4 Don't allow targets args in the new target commands.
b3a7e19 Make the Property name protected so that subclasses can use it.
|
| |
| |
| |
| |
| | |
This way we can add handling of relative/absolute paths and of
-D in compile definitions.
|
| | |
|
| |
| |
| |
| | |
Makes subclasses more dry in upcoming patches.
|
| | |
|
|\ \
| | |
| | |
| | |
| | | |
5daaa5c Fix TARGET_PROPERTY target extractions.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We need to make sure we can export targets which have content such
as $<0:$<TARGET_PROPERTY:not_a_target,INTERFACE_INCLUDE_DIRECTORIES>
That means making not finding a target non-fatal here.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
399c3b8 FindGTK2: Fix GTK2_LIBRARIES order for static gtk libraries
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Before this, when creating GTK2_LIBRARIES, FindGTK2 added the GTK
dependencies in wrong order into GTK2_LIBRARIES. With dynamic libraries
this is not a major problem, but when linking to static gtk libraries,
the linker outputs a lot of undefined symbols. Reorder the calls that
append libraries to GTK2_LIBRARIES to respect dependency order.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
a7d6ebb documentation: handling of relative paths by include- and link_directories()
|
| | | | |
| | | | |
| | | | |
| | | | | |
Alex
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
34d1ade Add the INSTALL_PREFIX genex.
3a17197 Generate the _IMPORT_PREFIX in the non-config export file.
|
| | | | | | |
|
| |/ / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
429e369 Process COMPILE_DEFINITIONS as generator expressions in QtAutomoc.
0e10782 Move GetCompileDefinitions to cmTarget.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Fixes #13493.
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
4cad848 configure_package_config_file(): extend documentation
37c4bc1 configure_package_config_file(): fix indentation
d477414 configure_package_config_file: force absolute paths for usr-move
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Alex
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This is a separate commit, so that the previous commit is smaller.
Alex
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The configure_package_config()_file() macro will now use
absolute paths for the PATH_VARS if the Config.cmake file
will be installed into /lib(64) or /usr/lib(64), since due to
the usr-move filesystem changes Config.cmake files installed
there may be found via two paths (once per symlink via
/lib(64) and once via /usr/lib ), and in this case
relative paths break.
Alex
|
| | | | | |
|
| | | | | |
|
| |/ / /
|/| | | |
|
| |_|/
|/| | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
4d0e2e8 ProcessorCount test: require SystemInformation process to work
e03f83f ProcessorCount test: fix path to cmsysTestsCxx executable
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Currently this silently fails on some systems. Make sure those things get
noticed so we can fix that.
|
| |/ /
| | |
| | |
| | |
| | | |
Use a generator expression to get the real place of this target instead of
guessing it wrong.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
6c57c31 doc: fix linebreaks in generator expression documentation
|
| |/ / |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
f032fb9 target_link_libraries: Document that new sigs privatize old (#13876)
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Explain in the documentation for the legacy signature
target_link_libraries(foo bar)
that the other signatures like
target_link_libraries(foo LINK_INTERFACE_LIBRARIES ...)
target_link_libraries(foo LINK_PRIVATE ...)
will set the LINK_INTERFACE_LIBRARIES target property and therefore make
libraries specified only by the legacy signature private.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
2fb2c32 Add the COMPATIBLE_INTERFACE_STRING property.
cd66b91 Make calculation of link-interface-dependent properties type-sensitive.
|
| | | | |
|
| |/ / |
|
|/ / |
|
|\ \
| | |
| | |
| | |
| | | |
6fbe3ce Exclude the LINK_LIBRARIES related properties from INTERFACE evaluation.
|
| | |
| | |
| | |
| | |
| | |
| | | |
These interface-related link-libraries properties are used to determine
the value of the other INTERFACE properties, so we were getting infinite
recursion and segfaults otherwise.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
3853a6c spell: fix a few typos in comments
|