[cmake-developers] push of LinkOptionsCommand topic branch
Steve Wilson
stevew at wolfram.com
Mon Feb 3 19:34:06 EST 2014
I have applied all the suggestions and re-pushed LinkOptionsCommand (after rebasing) to stage.
Thanks,
SteveW
On Feb 2, 2014, at 2:44 AM, Stephen Kelly <steveire at gmail.com> wrote:
> Steve Wilson wrote:
>
>> I have just pushed the LinkOptionsCommand topic branch to stage. This
>> topic branch contains commits that implement support for:
>>
>> add_link_options()
>>
>> target_link_options()
>>
>> and the LINK_OPTIONS variable.
>>
>> Please take a look as interested and send me feedback.
>
>
> Thanks for that.
>
> 1) The first thing I notice is that I don't think you've broken the commits
> up along the correct fault lines. It would make more sense to squash the
> changes to cmTarget, cmLocalGenerator, the generators, the DAGChecker and
> the cmTargetLinkOptionsCommand together along with the help for that command
> and target properties and the tests for it. Actually, instead of squashing
> it into one commit, you can consider creating multiple commits, eg one which
> adds the {INTERFACE_,}LINK_OPTIONS props (and tests and documents them), and
> another which adds the command (with tests and docs). Consider how you can
> split your commits along 'interface changes' 'fault lines'.
>
> In follow-up commits you can add the cmAddLinkOptionsCommand with the
> changes to the cmMakefile (and tests and docs), and exporting (with test and
> docs extensions).
>
> That order of commits makes it clear what the dependent changes are. The
> cmAddLinkOptionsCommand and changes to the cmMakefile are convenience only.
> The relevant change to CMake is support for the target property, and the
> high-level way to set that target property is cmTargetLinkOptionsCommand.
>
> As it is, your first commit adds changes to the cmMakefile interface but no
> users of the new AddLinkOption interface until the command is added. That's
> why that change should be in the same commit as the new command.
>
> The commit message would then describe changes relevant to the user
> interface, instead of only specific changes to the class interfaces, which
> probably don't belong in the commit message anyway.
>
> If you don't know how to rebase with git, just leave all of this for now.
>
> 2) The processLinkOptionsInternal method is almost identical to
> processCompileOptionsInternal. Consider renaming the latter (in a separate,
> standalone commit), refactoring it and using it instead.
>
> 3) Your topic doesn't remove code from the generators which reads the
> LINK_FLAGS target property. As the new cmLocalGenerator method will do that,
> you can remove it from the concrete generators. See eg commit 35496761 where
> I did similar for COMPILE_FLAGS.
>
> 4) The use of PROCESS_BEFORE in cmTargetCompileOptionsCommand seems to be a
> bug, don't repeat it in cmTargetLinkOptionsCommand.
>
> 5) The commit which adds exporting of the new target property should extend
> the ExportImport unit test.
>
> 6) New docs should link to target properties with rst code like
> :prop_tgt:`LINK_OPTIONS`. Some of the COMPILE_OPTIONS related doc is too old
> to link like this properly, so see Help/manual/cmake-buildsystem.7.rst for
> example.
>
> 7) Consider extending Help/manual/cmake-buildsystem.7.rst with notes about
> setting the LINK_OPTIONS and new commands.
>
> 8) One of the reasons I didn't add LINK_OPTIONS before was that I didn't
> know whether it should accept "--no-undefined" or "-Wl,--no-undefined", or
> both. Is the latter compiler-driver-specific? Is that irrelevant because the
> link option is tool specific anyway?
>
> 9) Use spaces, not tabs, even in tests.
>
> I've listed a lot of feedback, but it's all minor stuff. Thanks for the
> contribution.
>
> Steve.
>
>
>
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 236 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20140203/003d4769/attachment-0002.sig>
More information about the cmake-developers
mailing list