summaryrefslogtreecommitdiffstats
path: root/redhat/applications/tdepowersave/trinity-cmake-translations.patch
blob: d97302ba34f7d925629c41dbbaa90176e7d4e8c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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( )