[CMake] extending CMAKE__LINK_EXECUTABLE

2019-10-08 Thread Setzer Sebastian (CM-CI2/ECS2) via CMake
Dear list,
I need to run a tool after building an executable, which will modify the 
executable itself.
I intend to extend the toolchain for this, because it shall be done for every 
executable on this particular operating system.

I think for this purpose, I need to change the rule 
CMAKE__LINK_EXECUTABLE.
And I think I can't put multiple commands into that rule, so I need to write a 
wrapper which will be called instead of the normal linker, and the calls the 
normal linker and then that special tool.

Right, so far?

Now I'd like to pass a few additional parameters to this tool, which I'd like 
to get from a special target property.

The rule currently looks like this:
set(CMAKE_C_LINK_EXECUTABLE"  
   -o  ")

And I wonder what these placeholders in angle brackets mean, and if there are 
more placeholders available. The manual doesn't say anything about this, 
unfortunately:
https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_LINK_EXECUTABLE.html

Is there, for example, a way to access arbitrary target properties?
Or do I need to hide my special parameters somewhere in the LINK_OPTIONS 
property?

Regards,
Sebastian
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] DEPENDS parameter of add_custom_target

2019-10-07 Thread Setzer Sebastian (CM-CI2/ECS2) via CMake
Hi Craig,

On Mon, 7. Oct 2019 12:56 Craig Scott wrote:
> As it happens, I just updated the docs for these in the last day or so.

You mean you updated the docs of the two commands, but you did not update the 
docs of the DEPENDS parameter, right?

> There is a difference between the two, but it's subtle and specific to the 
> sort of scenario I mentioned in that issue comment.

So the manual for the DEPENDS parameter of add_custom_target is outdated, but 
fixing it is not as easy as copying it from add_custom_command.

Regards,
Sebastian
 

From: Craig Scott  
Sent: Montag, 7. Oktober 2019 12:56
To: Setzer Sebastian (CM-CI2/ECS2) 
Cc: cmake@cmake.org
Subject: Re: [CMake] DEPENDS parameter of add_custom_target



On Mon, Oct 7, 2019 at 9:32 PM Setzer Sebastian (CM-CI2/ECS2) via CMake 
<mailto:cmake@cmake.org> wrote:
Dear list,
The manual says:
https://cmake.org/cmake/help/latest/command/add_custom_target.html
Reference files and outputs of custom commands created with 
add_custom_command() command calls in the same directory (CMakeLists.txt file). 
They will be brought up to date when the target is built.
Use the add_dependencies() command to add dependencies on other targets.

This is different from what the manual of add_custom_command says, and would be 
surprising for all users who only read the manual of add_custom_command and 
then think they know what the parameter means for add_custom_target.

But on the other hand, when I test with this:
--
cmake_minimum_required (VERSION 3.14)
project(dependency_test LANGUAGES)

add_custom_target(T1
                  COMMAND echo T1
                  )
add_custom_target(T2
                  COMMAND echo T2
                  DEPENDS T1
                  )

# cmake -GNinja -B build .
# ninja T2
--
Then T1 and T2 are built, so contrary to what the manual says, it seems to work.

Is the manual just outdated (Maybe behavior has changed and only manual for 
add_custom_command has been updated)?
Should it be the same as for add_custom_command, or are there really some 
differences?

As it happens, I just updated the docs for these in the last day or so. You can 
find it in the not-yet-merged merge request here:

https://gitlab.kitware.com/cmake/cmake/merge_requests/3891

I wrote an explanation of the specific behavior of the dependencies in the 
associated issue here:

https://gitlab.kitware.com/cmake/cmake/issues/19771#note_635547

There is a difference between the two, but it's subtle and specific to the sort 
of scenario I mentioned in that issue comment.

-- 
Craig Scott
Melbourne, Australia
https://crascit.com

Get the hand-book for every CMake user: https://crascit.com/professional-cmake/
Consulting services (CMake, C++, build/release processes): 
https://crascit.com/services
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


[CMake] DEPENDS parameter of add_custom_target

2019-10-07 Thread Setzer Sebastian (CM-CI2/ECS2) via CMake
Dear list,
The manual says:
https://cmake.org/cmake/help/latest/command/add_custom_target.html
Reference files and outputs of custom commands created with 
add_custom_command() command calls in the same directory (CMakeLists.txt file). 
They will be brought up to date when the target is built.
Use the add_dependencies() command to add dependencies on other targets.

This is different from what the manual of add_custom_command says, and would be 
surprising for all users who only read the manual of add_custom_command and 
then think they know what the parameter means for add_custom_target.

But on the other hand, when I test with this:
--
cmake_minimum_required (VERSION 3.14)
project(dependency_test LANGUAGES)

add_custom_target(T1
  COMMAND echo T1
  )
add_custom_target(T2
  COMMAND echo T2
  DEPENDS T1
  )

# cmake -GNinja -B build .
# ninja T2
--
Then T1 and T2 are built, so contrary to what the manual says, it seems to work.

Is the manual just outdated (Maybe behavior has changed and only manual for 
add_custom_command has been updated)?
Should it be the same as for add_custom_command, or are there really some 
differences?

Regards,
Sebastian
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake