summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Golubev <fatzer2@gmail.com>2021-02-26 23:58:45 +0300
committerAlexander Golubev <fatzer2@gmail.com>2021-02-27 04:22:06 +0300
commitf0a5bcc7600c36f8fe59754d1167d1bbc70a4953 (patch)
treec3a6784af4671cf6019f6900ed1c4d56991dee95
parent111a08942a8b5452cd51f41e6f811d55de30c657 (diff)
downloadcmake-f0a5bcc7600c36f8fe59754d1167d1bbc70a4953.tar.gz
cmake-f0a5bcc7600c36f8fe59754d1167d1bbc70a4953.zip
tde_create_translated_desktop: Prevent FTBFS on generated desktop files
Fix FTBFS when translations are missing and the desktop file passed to tde_create_translated_desktop() is build-time generated. See TDE/tde-packaging-gentoo #196 for details. Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
-rw-r--r--modules/TDEMacros.cmake35
1 files changed, 21 insertions, 14 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
index 24c8acf..bb871e1 100644
--- a/modules/TDEMacros.cmake
+++ b/modules/TDEMacros.cmake
@@ -1986,14 +1986,18 @@ macro( tde_create_translated_desktop )
if( EXISTS "${_po_dir}" AND IS_DIRECTORY "${_po_dir}" )
file( GLOB _translations RELATIVE "${_po_dir}" "${_po_dir}/*.po" )
endif( )
- if( _translations )
- # prepare a full name for the target
- get_filename_component( _target ${_basename} ABSOLUTE )
- file( RELATIVE_PATH _target "${CMAKE_SOURCE_DIR}" "${_target}" )
- string( REPLACE "/" "+" _target "${_target}-translated" )
+ # prepare a full name for the target
+ get_filename_component( _target ${_basename} ABSOLUTE )
+ file( RELATIVE_PATH _target "${CMAKE_SOURCE_DIR}" "${_target}" )
+ string( REPLACE "/" "+" _target "${_target}-translated" )
- if( NOT TARGET ${_target} )
+ if( NOT TARGET ${_target} )
+
+ # use absolute path for src
+ get_filename_component( _src ${_src} ABSOLUTE )
+
+ if( _translations )
if( DESKTOP_MERGE_MSGFMT )
@@ -2012,7 +2016,6 @@ macro( tde_create_translated_desktop )
endforeach( )
# merge translations command
- get_filename_component( _src ${_src} ABSOLUTE )
add_custom_command(
OUTPUT ${_basename}${_binsuffix}
COMMAND ${CMAKE_COMMAND} -E env "LINGUAS=${_linguas}" ${MSGFMT_EXECUTABLE} --desktop --template ${_src} -d ${_po_dir} -o ${_basename}${_binsuffix} ${_keywords_arg}
@@ -2026,7 +2029,6 @@ macro( tde_create_translated_desktop )
string( REPLACE ";" "|" _keywords_match "(${_keywords_desktop})" )
# merge translations command
- get_filename_component( _src ${_src} ABSOLUTE )
add_custom_command(
OUTPUT ${_basename}${_binsuffix}
COMMAND ${PERL_EXECUTABLE} -p -e "'s/^${_keywords_match}[ ]*=[ ]*/_\\1=/'" < ${_src} > ${_basename}.in
@@ -2038,15 +2040,20 @@ macro( tde_create_translated_desktop )
endif( )
# merge translations target
- add_custom_target( "${_target}" ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_basename}${_binsuffix} )
- endif()
+ else( )
- else( )
+ # just copy the original file without translations
+ add_custom_command(
+ OUTPUT ${_basename}${_binsuffix}
+ COMMAND ${CMAKE_COMMAND} -E copy ${_src} ${_basename}${_binsuffix}
+ DEPENDS ${_src}
+ COMMENT "Skiping translation and copying source file to ${_sourcename}"
+ )
+
+ endif( )
- # just write the original file without translations
- file( READ ${_src} _src_data )
- file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}${_binsuffix} "${_src_data}" )
+ add_custom_target( "${_target}" ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_basename}${_binsuffix} )
endif( )