<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/cmake.git/Tests/CMakeCommands/target_link_libraries/cmp0022, branch master</title>
<subtitle>gitlab.kitware.com: cmake/cmake.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/'/>
<entry>
<title>target_link_libraries: Restore LINK_ONLY for multiple static lib dependencies</title>
<updated>2022-03-16T14:47:32+00:00</updated>
<author>
<name>Brad King</name>
<email>brad.king@kitware.com</email>
</author>
<published>2022-03-16T13:15:37+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=add64399c54859d26f9954fb06d616dbd00bffe7'/>
<id>add64399c54859d26f9954fb06d616dbd00bffe7</id>
<content type='text'>
Since commit c1e812ad4f (target_link_libraries: Improve tolerance of
unquoted generator expressions, 2022-02-15, v3.23.0-rc2~11^2) we
accumulate consecutive non-keyword arguments to recover an unquoted
generator expression as a single entry.  When given multiple consecutive
non-genex library names, the grouping breaks our logic that expects each
entry is either a raw target name or a genex.  Revise the logic to only
accumulate multiple arguments when they end inside a partial genex.

This bug caused `target_link_libraries` to stop wrapping static library
private dependencies in `$&lt;LINK_ONLY:...&gt;` for `INTERFACE_LINK_LIBRARIES`
when multiple consecutive library names are given.  Add a test case
covering that behavior.

Fixes: #23302
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since commit c1e812ad4f (target_link_libraries: Improve tolerance of
unquoted generator expressions, 2022-02-15, v3.23.0-rc2~11^2) we
accumulate consecutive non-keyword arguments to recover an unquoted
generator expression as a single entry.  When given multiple consecutive
non-genex library names, the grouping breaks our logic that expects each
entry is either a raw target name or a genex.  Revise the logic to only
accumulate multiple arguments when they end inside a partial genex.

This bug caused `target_link_libraries` to stop wrapping static library
private dependencies in `$&lt;LINK_ONLY:...&gt;` for `INTERFACE_LINK_LIBRARIES`
when multiple consecutive library names are given.  Add a test case
covering that behavior.

Fixes: #23302
</pre>
</div>
</content>
</entry>
<entry>
<title>target_link_libraries: Improve tolerance of unquoted generator expressions</title>
<updated>2022-02-15T22:38:33+00:00</updated>
<author>
<name>Brad King</name>
<email>brad.king@kitware.com</email>
</author>
<published>2022-02-15T21:53:15+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=c1e812ad4ff3f175dfc7c0de52b56dbaff9d3d16'/>
<id>c1e812ad4ff3f175dfc7c0de52b56dbaff9d3d16</id>
<content type='text'>
Prior to commit 1d709ea2f5 (cmGeneratorTarget: Propagate backtraces from
INTERFACE_LINK_LIBRARIES, 2021-12-15, v3.23.0-rc1~228^2), the value of
`INTERFACE_LINK_LIBRARIES` was a single string.  If an unquoted
generator expression passed to `target_link_libraries` contained `;` and
became multiple arguments, they would all accumulate as a single
`;`-separated list in the value of `INTERFACE_LINK_LIBRARIES`.  Since
that commit, each argument to `target_link_libraries` is placed in
`INTERFACE_LINK_LIBRARIES` as a separate entry, as has long been the
case for `LINK_LIBRARIES`. That behavior change broke projects that were
accidentally relying on accumulation in `INTERFACE_LINK_LIBRARIES` to
produce complete generator expressions containing `;`.

Teach `target_link_libraries` to accumulate consecutive non-keyword
arguments into a single entry before placing them in `LINK_LIBRARIES` or
`INTERFACE_LINK_LIBRARIES`.  For example, treat `a b c` as if they were
written as `"a;b;c"`.  This restores the previously accidental support
for unquoted generator expressions in `INTERFACE_LINK_LIBRARIES`, and
also enables it for `LINK_LIBRARIES`.

For now, do not drop the `target_link_libraries` documentation that
recommends quoting generator expressions.  Quoting is still important to
populate `LINK_LIBRARIES` in CMake 3.22 and below, and is also good
practice to keep generator expressions whole.

Fixes: #23203
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prior to commit 1d709ea2f5 (cmGeneratorTarget: Propagate backtraces from
INTERFACE_LINK_LIBRARIES, 2021-12-15, v3.23.0-rc1~228^2), the value of
`INTERFACE_LINK_LIBRARIES` was a single string.  If an unquoted
generator expression passed to `target_link_libraries` contained `;` and
became multiple arguments, they would all accumulate as a single
`;`-separated list in the value of `INTERFACE_LINK_LIBRARIES`.  Since
that commit, each argument to `target_link_libraries` is placed in
`INTERFACE_LINK_LIBRARIES` as a separate entry, as has long been the
case for `LINK_LIBRARIES`. That behavior change broke projects that were
accidentally relying on accumulation in `INTERFACE_LINK_LIBRARIES` to
produce complete generator expressions containing `;`.

Teach `target_link_libraries` to accumulate consecutive non-keyword
arguments into a single entry before placing them in `LINK_LIBRARIES` or
`INTERFACE_LINK_LIBRARIES`.  For example, treat `a b c` as if they were
written as `"a;b;c"`.  This restores the previously accidental support
for unquoted generator expressions in `INTERFACE_LINK_LIBRARIES`, and
also enables it for `LINK_LIBRARIES`.

For now, do not drop the `target_link_libraries` documentation that
recommends quoting generator expressions.  Quoting is still important to
populate `LINK_LIBRARIES` in CMake 3.22 and below, and is also good
practice to keep generator expressions whole.

Fixes: #23203
</pre>
</div>
</content>
</entry>
<entry>
<title>LCC: Add dedicated support for MCST LCC compiler</title>
<updated>2021-10-15T02:05:19+00:00</updated>
<author>
<name>makise-homura</name>
<email>akemi_homura@kurisa.ch</email>
</author>
<published>2021-10-05T19:41:02+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=e5d9fce03feeece7f53451da9fb958db2613d31e'/>
<id>e5d9fce03feeece7f53451da9fb958db2613d31e</id>
<content type='text'>
Divert LCC compiler as a new one, instead of treating it as GNU.

Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been
passing checks for GNU compilers, so it has been identified as GNU.
Now, with intent of seriously upstreaming its support, it has been
added as a separate LCC compiler, and its version displays not a
supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead
of GNU 7.3.0).

This commit adds its support for detection, and also converts basically
every check like 'is this compiler GNU?' to 'is this compiler GNU or
LCC?'. The only places where this check is untouched, is where it
regards other platforms where LCC is unavailable (primarily non-Linux),
and where it REALLY differs from GNU compiler.

Note: this transition may break software that are already ported to
Elbrus, but hardly relies that LCC will be detected as GNU; still such
software is not known.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Divert LCC compiler as a new one, instead of treating it as GNU.

Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been
passing checks for GNU compilers, so it has been identified as GNU.
Now, with intent of seriously upstreaming its support, it has been
added as a separate LCC compiler, and its version displays not a
supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead
of GNU 7.3.0).

This commit adds its support for detection, and also converts basically
every check like 'is this compiler GNU?' to 'is this compiler GNU or
LCC?'. The only places where this check is untouched, is where it
regards other platforms where LCC is unavailable (primarily non-Linux),
and where it REALLY differs from GNU compiler.

Note: this transition may break software that are already ported to
Elbrus, but hardly relies that LCC will be detected as GNU; still such
software is not known.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revise include order using clang-format-6.0</title>
<updated>2019-10-01T16:26:36+00:00</updated>
<author>
<name>Kitware Robot</name>
<email>kwrobot@kitware.com</email>
</author>
<published>2019-09-30T14:46:28+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=ed98209ddc8d5e9f5b20cd010c69a25d553b2654'/>
<id>ed98209ddc8d5e9f5b20cd010c69a25d553b2654</id>
<content type='text'>
Run the `clang-format.bash` script to update our C and C++ code to a new
include order `.clang-format`.  Use `clang-format` version 6.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Run the `clang-format.bash` script to update our C and C++ code to a new
include order `.clang-format`.  Use `clang-format` version 6.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revise C++ coding style using clang-format</title>
<updated>2016-05-16T20:05:19+00:00</updated>
<author>
<name>Kitware Robot</name>
<email>kwrobot@kitware.com</email>
</author>
<published>2016-05-16T14:34:04+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=d9fd2f5402eeaa345691313658e02b51038f570b'/>
<id>d9fd2f5402eeaa345691313658e02b51038f570b</id>
<content type='text'>
Run the `Utilities/Scripts/clang-format.bash` script to update
all our C++ code to a new style defined by `.clang-format`.
Use `clang-format` version 3.8.

* If you reached this commit for a line in `git blame`, re-run the blame
  operation starting at the parent of this commit to see older history
  for the content.

* See the parent commit for instructions to rebase a change across this
  style transition commit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Run the `Utilities/Scripts/clang-format.bash` script to update
all our C++ code to a new style defined by `.clang-format`.
Use `clang-format` version 3.8.

* If you reached this commit for a line in `git blame`, re-run the blame
  operation starting at the parent of this commit to see older history
  for the content.

* See the parent commit for instructions to rebase a change across this
  style transition commit.
</pre>
</div>
</content>
</entry>
<entry>
<title>Tests: Do not try to use invalid "ld -v" flag on Solaris</title>
<updated>2015-03-31T15:21:36+00:00</updated>
<author>
<name>Brad King</name>
<email>brad.king@kitware.com</email>
</author>
<published>2015-03-31T15:20:20+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=0778016a0bba246e46f628aecd64e0f8afcc0fdb'/>
<id>0778016a0bba246e46f628aecd64e0f8afcc0fdb</id>
<content type='text'>
Fix the CMakeCommands.target_link_libraries test to use "-V" instead of
"-v" on Solaris because the latter does not exist.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the CMakeCommands.target_link_libraries test to use "-V" instead of
"-v" on Solaris because the latter does not exist.
</pre>
</div>
</content>
</entry>
<entry>
<title>CMP0022: Add test for target_link_libraries plain signature</title>
<updated>2013-11-02T16:48:48+00:00</updated>
<author>
<name>Stephen Kelly</name>
<email>steveire@gmail.com</email>
</author>
<published>2013-10-30T12:21:53+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=0e06788c0a5bd2a85db4b1559d13ead30ea5be0e'/>
<id>0e06788c0a5bd2a85db4b1559d13ead30ea5be0e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't add invalid content to static lib INTERFACE_LINK_LIBRARIES.</title>
<updated>2013-10-26T14:10:20+00:00</updated>
<author>
<name>Stephen Kelly</name>
<email>steveire@gmail.com</email>
</author>
<published>2013-10-20T18:39:16+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=239b0c6b0ed821fd012a2a980961b9a9d43793e5'/>
<id>239b0c6b0ed821fd012a2a980961b9a9d43793e5</id>
<content type='text'>
Only valid target names or generator expressions may appear in
the target field of a LINK_ONLY expression.

Other content like link flags should still be added to that property
(wrapped in config-specific generator expressions), but not wrapped
in LINK_ONLY. Otherwise undue warnings would be issued for the
policy CMP0022.

The LINK_ONLY expression only has an effect for actual target
names anyway, so there is no logical deficit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only valid target names or generator expressions may appear in
the target field of a LINK_ONLY expression.

Other content like link flags should still be added to that property
(wrapped in config-specific generator expressions), but not wrapped
in LINK_ONLY. Otherwise undue warnings would be issued for the
policy CMP0022.

The LINK_ONLY expression only has an effect for actual target
names anyway, so there is no logical deficit.
</pre>
</div>
</content>
</entry>
<entry>
<title>cmTarget: Fix iface libraries and languages for static libraries.</title>
<updated>2013-07-26T13:15:42+00:00</updated>
<author>
<name>Stephen Kelly</name>
<email>steveire@gmail.com</email>
</author>
<published>2013-07-26T12:03:44+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=c8a10ba9ad8707cfb892ca812efa2f6899adf60b'/>
<id>c8a10ba9ad8707cfb892ca812efa2f6899adf60b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TLL: Don't populate old link interface if CMP0022 is NEW.</title>
<updated>2013-07-08T20:39:58+00:00</updated>
<author>
<name>Stephen Kelly</name>
<email>steveire@gmail.com</email>
</author>
<published>2013-06-04T14:21:33+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cmake.git/commit/?id=3e30d9ed67f963af15b8d57d24a5fa377299e43a'/>
<id>3e30d9ed67f963af15b8d57d24a5fa377299e43a</id>
<content type='text'>
Always populate the INTERFACE_LINK_LIBRARIES for interface
entries. Don't populate the old interface properties
matching (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_&lt;CONFIG&gt;)?
if CMP0022 is NEW.

Because the INTERFACE_LINK_LIBRARIES property is now populated by
the target_link_libraries when operating on a static library,
make an equivalent change which populates the property with
the same value when the old link_libraries() command is used. This
silences the policy warning in that case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Always populate the INTERFACE_LINK_LIBRARIES for interface
entries. Don't populate the old interface properties
matching (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_&lt;CONFIG&gt;)?
if CMP0022 is NEW.

Because the INTERFACE_LINK_LIBRARIES property is now populated by
the target_link_libraries when operating on a static library,
make an equivalent change which populates the property with
the same value when the old link_libraries() command is used. This
silences the policy warning in that case.
</pre>
</div>
</content>
</entry>
</feed>
