You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.1 KiB
99 lines
3.1 KiB
11 years ago
|
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
|
||
|
index f290e2b..282b765 100644
|
||
|
--- a/cmake/modules/TDEMacros.cmake
|
||
|
+++ b/cmake/modules/TDEMacros.cmake
|
||
|
@@ -1049,6 +1049,7 @@ macro( tde_create_translation )
|
||
|
unset( _srcs )
|
||
|
unset( _lang )
|
||
|
unset( _dest )
|
||
|
+ unset( _out_name )
|
||
|
unset( _directive )
|
||
|
unset( _var )
|
||
|
|
||
|
@@ -1075,6 +1076,13 @@ macro( tde_create_translation )
|
||
|
set( _directive 1 )
|
||
|
endif( )
|
||
|
|
||
|
+ # found directive "DESTINATION"
|
||
|
+ if( "${_arg}" STREQUAL "OUTPUT_NAME" )
|
||
|
+ unset( _proj )
|
||
|
+ set( _var _out_name )
|
||
|
+ set( _directive 1 )
|
||
|
+ endif( )
|
||
|
+
|
||
|
# collect data
|
||
|
if( _directive )
|
||
|
unset( _directive )
|
||
|
@@ -1088,30 +1096,60 @@ macro( tde_create_translation )
|
||
|
tde_message_fatal( "MSGFMT_EXECUTABLE variable is not defined" )
|
||
|
elseif( NOT _lang )
|
||
|
tde_message_fatal( "missing LANG directive" )
|
||
|
- elseif( NOT _dest )
|
||
|
- set( _dest "${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES" )
|
||
|
endif( )
|
||
|
|
||
|
# if no file specified, include all *.po files
|
||
|
if( NOT _srcs )
|
||
|
file( GLOB _srcs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po )
|
||
|
- endif()
|
||
|
+ endif( )
|
||
|
if( NOT _srcs )
|
||
|
tde_message_fatal( "no source files" )
|
||
|
- endif()
|
||
|
+ endif( )
|
||
|
+
|
||
|
+ if( NOT _lang STREQUAL "auto")
|
||
|
+ set( _real_lang ${_lang} )
|
||
|
+
|
||
|
+ if( NOT _dest )
|
||
|
+ set( _dest "${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES" )
|
||
|
+ endif( )
|
||
|
+
|
||
|
+ # OUTPUT_NAME can only be used if we have only one file
|
||
|
+ list( LENGTH _srcs _srcs_num)
|
||
|
+ if( _out_name AND _srcs_num GREATER 1 )
|
||
|
+ tde_message_fatal( "OUTPUT_NAME can be supplied only with single file or LANG=auto" )
|
||
|
+ endif( )
|
||
|
+
|
||
|
+ elseif( NOT _out_name )
|
||
|
+ tde_message_fatal( "LANG=auto reqires OUTPUT_NAME directive to be set" )
|
||
|
+ elseif( _dest )
|
||
|
+ tde_message_fatal( "DESTINATION cannot be used with LANG=auto" )
|
||
|
+ endif( )
|
||
|
|
||
|
# generate *.mo files
|
||
|
foreach( _src ${_srcs} )
|
||
|
+
|
||
|
get_filename_component( _src ${_src} ABSOLUTE )
|
||
|
- get_filename_component( _out ${_src} NAME_WE )
|
||
|
- set( _out_name "${_out}-${_lang}.mo" )
|
||
|
- set( _out_real_name "${_out}.mo" )
|
||
|
+
|
||
|
+ if( _out_name )
|
||
|
+ set( _out ${_out_name} )
|
||
|
+ if( _lang STREQUAL "auto" )
|
||
|
+ get_filename_component( _real_lang ${_src} NAME_WE )
|
||
|
+ set( _dest "${LOCALE_INSTALL_DIR}/${_real_lang}/LC_MESSAGES" )
|
||
|
+ endif( )
|
||
|
+ else( )
|
||
|
+ get_filename_component( _out ${_src} NAME_WE )
|
||
|
+ endif( )
|
||
|
+
|
||
|
+ set( _out_filename "${_out}-${_real_lang}.mo" )
|
||
|
+ set( _install_filename "${_out}.mo" )
|
||
|
+
|
||
|
add_custom_command(
|
||
|
- OUTPUT ${_out_name}
|
||
|
- COMMAND ${MSGFMT_EXECUTABLE} ${_src} -o ${_out_name}
|
||
|
+ OUTPUT ${_out_filename}
|
||
|
+ COMMAND ${MSGFMT_EXECUTABLE} ${_src} -o ${_out_filename}
|
||
|
DEPENDS ${_src} )
|
||
|
- add_custom_target( "${_out}-${_lang}-translation" ALL DEPENDS ${_out_name} )
|
||
|
- install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_out_name} RENAME ${_out_real_name} DESTINATION ${_dest} )
|
||
|
+ add_custom_target( "${_out}-${_real_lang}-translation" ALL DEPENDS ${_out_filename} )
|
||
|
+ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_out_filename} RENAME ${_install_filename} DESTINATION ${_dest} )
|
||
|
+
|
||
|
endforeach( )
|
||
|
|
||
|
endmacro( )
|