summaryrefslogtreecommitdiff
path: root/lang/CMakeLists.txt
blob: 303abfe8de3d9c2e55bc27272a79068214e5d1bb (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
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/messages.cpp"
)

target_link_libraries("lang-tests" PRIVATE
  "Catch2::Catch2"
  
  "turns::intl-test-main"
)

enable_coverage("lang-tests")

target_link_options("lang-tests" PRIVATE
  "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:--coverage>"
)

catch_discover_tests("lang-tests")