]> git.lizzy.rs Git - minetest.git/blob - cmake/Modules/FindGettextLib.cmake
Defer searching for libintl to CMake
[minetest.git] / cmake / Modules / FindGettextLib.cmake
1 # This module find everything related to Gettext:
2 # * development tools (msgfmt)
3 # * libintl for runtime usage
4
5 find_program(GETTEXT_MSGFMT
6         NAMES msgfmt
7         DOC "Path to Gettext msgfmt")
8
9 if(GETTEXT_INCLUDE_DIR AND GETTEXT_LIBRARY)
10         # This is only really used on Windows
11         find_path(GETTEXT_INCLUDE_DIR NAMES libintl.h)
12         find_library(GETTEXT_LIBRARY NAMES intl)
13
14         set(GETTEXT_REQUIRED_VARS GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT)
15 else()
16         find_package(Intl)
17         set(GETTEXT_INCLUDE_DIR ${Intl_INCLUDE_DIRS})
18         set(GETTEXT_LIBRARY ${Intl_LIBRARIES})
19
20         # Because intl may be part of the libc it's valid for the two variables to
21         # be empty, therefore we can't just put them into GETTEXT_REQUIRED_VARS.
22         if(Intl_FOUND)
23                 set(GETTEXT_REQUIRED_VARS GETTEXT_MSGFMT)
24         else()
25                 set(GETTEXT_REQUIRED_VARS _LIBINTL_WAS_NOT_FOUND)
26         endif()
27 endif()
28
29 include(FindPackageHandleStandardArgs)
30 find_package_handle_standard_args(GettextLib DEFAULT_MSG ${GETTEXT_REQUIRED_VARS})
31
32 if(GETTEXTLIB_FOUND)
33         # Set up paths for building
34         set(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
35         set(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
36         set(GETTEXT_MO_DEST_PATH ${LOCALEDIR}/<locale>/LC_MESSAGES)
37         file(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*")
38         list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES minetest.pot)
39         list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES timestamp)
40         macro(SET_MO_PATHS _buildvar _destvar _locale)
41                 string(REPLACE "<locale>" ${_locale} ${_buildvar} ${GETTEXT_MO_BUILD_PATH})
42                 string(REPLACE "<locale>" ${_locale} ${_destvar} ${GETTEXT_MO_DEST_PATH})
43         endmacro()
44 endif()
45