summaryrefslogtreecommitdiff
path: root/gui/lang/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'gui/lang/CMakeLists.txt')
-rw-r--r--gui/lang/CMakeLists.txt77
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