Fix linking of generated files in cmake

If generation of files is turned off, and a file is missing, when
building in tree with cmake, you can end up with the generated file
being turned into a symlink to itself. This will also break any future
attempt at building with make. Fix this by testing if the file exists
prior to attempting to link it.

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
This commit is contained in:
Paul Elliott 2022-07-12 14:55:01 +01:00
parent 6dc7cdfdd1
commit 582f72bf3b
2 changed files with 7 additions and 1 deletions

View file

@ -131,7 +131,10 @@ function(link_to_source base_name)
set(target "${CMAKE_CURRENT_SOURCE_DIR}/${base_name}") set(target "${CMAKE_CURRENT_SOURCE_DIR}/${base_name}")
endif() endif()
if (NOT EXISTS ${link}) # Linking to non-existant file is not desirable. At best you will have a
# dangling link, but when building in tree, this can create a symbolic link
# to itself.
if (EXISTS ${target} AND NOT EXISTS ${link})
if (CMAKE_HOST_UNIX) if (CMAKE_HOST_UNIX)
set(command ln -s ${target} ${link}) set(command ln -s ${target} ${link})
else() else()

View file

@ -0,0 +1,3 @@
Bugfix
* Fix an issue in releases with GEN_FILES turned off whereby missing
generated files could be turned into symlinks to themselves.