summaryrefslogtreecommitdiffhomepage
path: root/cmake/opentrack-i18n.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/opentrack-i18n.cmake')
-rw-r--r--cmake/opentrack-i18n.cmake112
1 files changed, 73 insertions, 39 deletions
diff --git a/cmake/opentrack-i18n.cmake b/cmake/opentrack-i18n.cmake
index bc468e8a..1f0c67d9 100644
--- a/cmake/opentrack-i18n.cmake
+++ b/cmake/opentrack-i18n.cmake
@@ -1,63 +1,97 @@
+include_guard(GLOBAL)
+
+add_custom_target(i18n-lupdate)
+add_custom_target(i18n-lrelease DEPENDS i18n-lupdate)
+add_custom_target(i18n ALL DEPENDS i18n-lrelease)
+
function(otr_i18n_for_target_directory n)
set(k "opentrack-${n}")
get_property(lupdate-binary TARGET "${Qt5_LUPDATE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION)
+ #make_directory("${CMAKE_CURRENT_BINARY_DIR}/lang")
+
+ set(ts-files "")
+ foreach(k ${opentrack_all-translations})
+ list(APPEND ts-files "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts")
+ set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${k}" "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts")
+ endforeach()
+ set(stamp "${CMAKE_CURRENT_BINARY_DIR}/lupdate.stamp")
+
foreach(i ${opentrack_all-translations})
set(t "${CMAKE_CURRENT_SOURCE_DIR}/lang/${i}.ts")
- set(t2 "${CMAKE_CURRENT_BINARY_DIR}/lang/${i}.ts")
- set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY CLEAN_NO_CUSTOM 1)
- set(input ${${k}-cc} ${${k}-hh} ${${k}-ui} ${${k}-rc})
- add_custom_command(OUTPUT "${t2}"
- COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_SOURCE_DIR}/lang"
- COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lang"
- COMMAND "${lupdate-binary}"
- -I "${CMAKE_SOURCE_DIR}"
- -silent
- -recursive
- -no-obsolete
- -locations none
- .
- -ts "${t}"
- COMMAND "${CMAKE_COMMAND}" -E copy "${t}" "${t2}"
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
- DEPENDS ${input}
- COMMENT "Running lupdate for ${n}/${i}")
- set_property(SOURCE ${input} PROPERTY GENERATED TRUE)
- set(target-name "i18n-lang-${i}-module-${n}")
- add_custom_target(${target-name} DEPENDS "${t2}")
- set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${i}" "${t2}")
+ set(input "${${k}-all}")
+ if (NOT EXISTS "${t}")
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lang")
+ file(READ "${CMAKE_SOURCE_DIR}/cmake/translation-stub.ts" stub)
+ string(REPLACE "@LANG@" "${i}" stub "${stub}")
+ file(WRITE "${t}" "${stub}")
+ endif()
endforeach()
-endfunction()
-
-function(otr_merge_translations)
- install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/i18n\")")
- get_property(variant GLOBAL PROPERTY opentrack-variant)
- if(NOT ".${variant}" STREQUAL ".default")
- set(force-skip-update TRUE)
+ # all sorts of problems
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ set(to-null "2>NUL")
else()
- set(force-skip-update FALSE)
+ set(to-null "2>/dev/null")
endif()
- set(all-qm-files "")
+ add_custom_command(OUTPUT "${stamp}"
+ COMMAND "${lupdate-binary}"
+ -I "${CMAKE_SOURCE_DIR}"
+ -silent
+ -recursive
+ -no-obsolete
+ -locations none
+ .
+ -ts ${ts-files}
+ ${to-null}
+ COMMAND "${CMAKE_COMMAND}" -E touch "${stamp}"
+ #BYPRODUCTS ${ts-files}
+ DEPENDS "opentrack-${n}"
+ COMMENT "Running lupdate for ${n}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
+ set(target-name "i18n-module-${n}")
+ add_custom_target(${target-name} DEPENDS "${stamp}" COMMENT "")
+ add_dependencies(i18n-lupdate ${target-name})
+endfunction()
+
+function(otr_merge_translations)
+ otr_escape_string(i18n-pfx "${opentrack-i18n}")
+ #install(CODE "message(FATAL_ERROR \"foo \${CMAKE_INSTALL_PREFIX}\")")
+ #install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")")
foreach(i ${opentrack_all-translations})
get_property(ts-files GLOBAL PROPERTY "opentrack-ts-files-${i}")
get_property(lrelease-binary TARGET "${Qt5_LRELEASE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION)
- set(qm-output "${CMAKE_CURRENT_BINARY_DIR}/${i}.qm")
- list(APPEND all-qm-files "${qm-output}")
+ set(qm-output "${CMAKE_BINARY_DIR}/${i}.qm")
+
+ # whines about duplicate messages since tracker-pt-base is static
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ set(to-null "2>NUL")
+ else()
+ set(to-null "2>/dev/null")
+ endif()
add_custom_command(OUTPUT "${qm-output}"
- COMMAND "${lrelease-binary}" -nounfinished -silent ${ts-files} -qm "${qm-output}"
- DEPENDS ${ts-files}
- COMMENT "Running lrelease for ${i}")
+ COMMAND "${lrelease-binary}"
+ -nounfinished
+ -silent
+ #-verbose
+ ${ts-files}
+ -qm "${qm-output}"
+ ${to-null}
+ DEPENDS i18n-lupdate ${ts-files}
+ COMMENT "Running lrelease for ${i}"
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
+
+ set(target-name i18n-qm-${i})
+ add_custom_target(${target-name} DEPENDS "${qm-output}")
+ add_dependencies(i18n-lrelease ${target-name})
install(FILES "${qm-output}"
- DESTINATION "${CMAKE_INSTALL_PREFIX}/${opentrack-i18n-pfx}"
+ DESTINATION "${opentrack-i18n}"
PERMISSIONS ${opentrack-perms-file})
endforeach()
-
- add_custom_target(i18n ALL DEPENDS ${all-qm-files})
endfunction()