# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindIntl -------- .. versionadded:: 3.2 Find the Gettext libintl headers and libraries. This module reports information about the Gettext libintl installation in several variables. .. variable:: Intl_FOUND True if libintl is found. .. variable:: Intl_INCLUDE_DIRS The directory containing the libintl headers. .. variable:: Intl_LIBRARIES The intl libraries to be linked. .. versionadded:: 3.20 This module defines :prop_tgt:`IMPORTED` target ``Intl::Intl``. The following cache variables may also be set: .. variable:: Intl_INCLUDE_DIR The directory containing the libintl headers .. variable:: Intl_LIBRARY The libintl library (if any) .. variable:: Intl_HAVE_GETTEXT_BUILTIN .. versionadded:: 3.20 True if gettext is in the C library .. variable:: Intl_HAVE_DCGETTEXT_BUILTIN .. versionadded:: 3.20 True if dcgettext is in the C library .. variable:: Intl_IS_BUILTIN .. versionadded:: 3.20 whether intl is a part of the C library determined from the result of Intl_HAVE_GETTEXT_BUILTIN and Intl_HAVE_DCGETTEXT_BUILTIN .. note:: On some platforms, such as Linux with GNU libc, the gettext functions are present in the C standard library and libintl is not required. ``Intl_LIBRARIES`` will be empty in this case. .. note:: If you wish to use the Gettext tools (``msgmerge``, ``msgfmt``, etc.), use :module:`FindGettext`. #]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake) include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake) # Check if we have libintl is a part of libc cmake_push_check_state(RESET) set(CMAKE_REQUIRED_QUIET TRUE) check_symbol_exists(gettext libintl.h Intl_HAVE_GETTEXT_BUILTIN) check_symbol_exists(dcgettext libintl.h Intl_HAVE_DCGETTEXT_BUILTIN) # redundant check cmake_pop_check_state() if(Intl_HAVE_GETTEXT_BUILTIN AND Intl_HAVE_DCGETTEXT_BUILTIN) set(Intl_IS_BUILTIN TRUE) else() set(Intl_IS_BUILTIN FALSE) endif() # Find include directory find_path(Intl_INCLUDE_DIR NAMES "libintl.h" DOC "libintl include directory") mark_as_advanced(Intl_INCLUDE_DIR) # Find all Intl libraries set(Intl_REQUIRED_VARS) if(NOT Intl_IS_BUILTIN) find_library(Intl_LIBRARY "intl" "libintl" NAMES_PER_DIR DOC "libintl libraries (if not in the C library)") mark_as_advanced(Intl_LIBRARY) list(APPEND Intl_REQUIRED_VARS Intl_LIBRARY) endif() include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Intl FOUND_VAR Intl_FOUND REQUIRED_VARS Intl_INCLUDE_DIR ${Intl_REQUIRED_VARS} FAIL_MESSAGE "Failed to find Gettext libintl") unset(Intl_REQUIRED_VARS) if(Intl_FOUND) set(Intl_INCLUDE_DIRS "${Intl_INCLUDE_DIR}") set(Intl_LIBRARIES "${Intl_LIBRARY}") if(NOT TARGET Intl::Intl) add_library(Intl::Intl INTERFACE IMPORTED) set_target_properties(Intl::Intl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${Intl_INCLUDE_DIRS}" INTERFACE_LINK_LIBRARIES "${Intl_LIBRARIES}") endif() endif()