diff options
Diffstat (limited to 'gui/lang/CMakeLists.txt')
| -rw-r--r-- | gui/lang/CMakeLists.txt | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/gui/lang/CMakeLists.txt b/gui/lang/CMakeLists.txt new file mode 100644 index 0000000..1842615 --- /dev/null +++ b/gui/lang/CMakeLists.txt @@ -0,0 +1,77 @@ +set(TRANSLATIONS + "de" + "de_CH" + "en" +) + +foreach(LANG IN LISTS TRANSLATIONS) + set(BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/${LANG}/LC_MESSAGES/turns.mo") + set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po") + + list(APPEND TRANSLATION_BINARIES "${BINARY_FILE}") + + add_custom_command(OUTPUT "${BINARY_FILE}" + COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" + ARGS + "-o" + "${BINARY_FILE}" + "${SOURCE_FILE}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS + "${SOURCE_FILE}" + COMMENT "Processing translation ${LANG}" + ) + + install(FILES "${BINARY_FILE}" + DESTINATION "${CMAKE_INSTALL_FULL_LOCALEDIR}/${LANG}/LC_MESSAGES" + ) +endforeach() + +add_custom_target("mofiles" DEPENDS ${TRANSLATION_BINARIES}) + +add_library("lang" INTERFACE) + +add_library("turns::lang" ALIAS "lang") + +if(TURNS_USE_INSTALLED_TRANSLATIONS) + target_compile_definitions("lang" INTERFACE + "LOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"" + ) +else() + target_compile_definitions("lang" INTERFACE + "LOCALEDIR=\"${CMAKE_CURRENT_BINARY_DIR}\"" + ) +endif() + +target_include_directories("lang" INTERFACE + "include" +) + +add_dependencies("lang" "mofiles") + +# Tests + +add_executable("lang-tests" + "tests/intl_test_init.cpp" + + "tests/messages.cpp" +) + +target_link_libraries("lang-tests" PRIVATE + "Catch2::Catch2WithMain" + "Intl::Intl" + + "turns::lang" +) + +target_compile_definitions("lang-tests" PRIVATE + "TESTLOCALEDIR=\"${CMAKE_CURRENT_BINARY_DIR}\"" +) + +enable_coverage("lang-tests") + +target_link_options("lang-tests" PRIVATE + "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>" +) + +catch_discover_tests("lang-tests")
\ No newline at end of file |
