diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
commit | 1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch) | |
tree | cd08258054db80bb9a11b1061bb091c70b76926a /cmake/FindLibintl.cmake | |
parent | eaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-aucmd_textputpost.tar.gz rneovim-aucmd_textputpost.tar.bz2 rneovim-aucmd_textputpost.zip |
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'cmake/FindLibintl.cmake')
-rw-r--r-- | cmake/FindLibintl.cmake | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cmake/FindLibintl.cmake b/cmake/FindLibintl.cmake new file mode 100644 index 0000000000..630a3545fc --- /dev/null +++ b/cmake/FindLibintl.cmake @@ -0,0 +1,80 @@ +include(CheckCSourceCompiles) +include(CheckVariableExists) + +# Append custom gettext path to CMAKE_PREFIX_PATH +# if installed via Mac Homebrew +if (APPLE) + find_program(HOMEBREW_PRG brew) + if (EXISTS ${HOMEBREW_PRG}) + execute_process(COMMAND ${HOMEBREW_PRG} --prefix gettext + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE HOMEBREW_GETTEXT_PREFIX) + list(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_GETTEXT_PREFIX}") + endif() +endif() + +find_path(LIBINTL_INCLUDE_DIR + NAMES libintl.h + PATH_SUFFIXES gettext +) + +find_library(LIBINTL_LIBRARY + NAMES intl libintl +) + +if (LIBINTL_INCLUDE_DIR) + list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBINTL_INCLUDE_DIR}") +endif() +# On some systems (linux+glibc) libintl is passively available. +# So only specify the library if one was found. +if (LIBINTL_LIBRARY) + list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBINTL_LIBRARY}") +endif() +if (MSVC) + list(APPEND CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) +endif() + +# On macOS, if libintl is a static library then we also need +# to link libiconv and CoreFoundation. +get_filename_component(LibIntl_EXT "${LIBINTL_LIBRARY}" EXT) +if (APPLE AND (LibIntl_EXT STREQUAL ".a")) + set(LibIntl_STATIC TRUE) + find_library(CoreFoundation_FRAMEWORK CoreFoundation) + list(APPEND CMAKE_REQUIRED_LIBRARIES "${ICONV_LIBRARY}" "${CoreFoundation_FRAMEWORK}") +endif() + +check_c_source_compiles(" +#include <libintl.h> + +int main(int argc, char** argv) { + gettext(\"foo\"); + ngettext(\"foo\", \"bar\", 1); + bindtextdomain(\"foo\", \"bar\"); + bind_textdomain_codeset(\"foo\", \"bar\"); + textdomain(\"foo\"); +}" HAVE_WORKING_LIBINTL) +if (MSVC) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) +endif() +if (LibIntl_STATIC) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "${ICONV_LIBRARY}" "${CoreFoundation_FRAMEWORK}") +endif() +if (LIBINTL_INCLUDE_DIR) + list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES "${LIBINTL_INCLUDE_DIR}") +endif() +if (LIBINTL_LIBRARY) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "${LIBINTL_LIBRARY}") +endif() + +set(REQUIRED_VARIABLES LIBINTL_LIBRARY LIBINTL_INCLUDE_DIR) +if (HAVE_WORKING_LIBINTL) + # On some systems (linux+glibc) libintl is passively available. + # If HAVE_WORKING_LIBINTL then we consider the requirement satisfied. + unset(REQUIRED_VARIABLES) + + check_variable_exists(_nl_msg_cat_cntr HAVE_NL_MSG_CAT_CNTR) +endif() + +find_package_handle_standard_args(Libintl DEFAULT_MSG + ${REQUIRED_VARIABLES}) +mark_as_advanced(LIBINTL_LIBRARY LIBINTL_INCLUDE_DIR) |