Home Explore Blog CI



neovim

6th chunk of `cmake.deps/cmake/GettextCMakeLists.txt`
87ad49aafe196c611e54bc5d19917b7160f25a9b4a82b4280000000100000ecc
 string(REPLACE ".in" "" HEADER_PATH ${HEADER_PATH})
    string(REPLACE "_" "/" HEADER_PATH ${HEADER_PATH})
    # find_file will create a cache entry for the variable
    # SYSTEM_HEADER, so reset it before each call
    set(SYSTEM_HEADER "SYSTEM_HEADER-NOTFOUND")
    find_file(SYSTEM_HEADER ${HEADER_PATH} PATHS "${LIBICONV_INCLUDE_DIRS}")
    if(SYSTEM_HEADER)
      # Gnulib uses #include_next to extend system header files,
      # but MSVC doesn't support it, so a regular include directive
      # with a relative path is used instead
      string(REGEX REPLACE ".*/(.*/${HEADER_PATH})" "../\\1"
        INCLUDE_PATH "${SYSTEM_HEADER}")
      string(REGEX REPLACE "@INCLUDE_NEXT[^@]*@ @NEXT_[^@\n]+@"
        "include <${INCLUDE_PATH}>" HEADER_CONTENT "${HEADER_CONTENT}")
    endif()

    # Default any remaining template variables to 0
    string(REGEX REPLACE "@[^@\n]+@" "0" HEADER_CONTENT "${HEADER_CONTENT}")

    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${HEADER_TEMPLATES_PATH}/${HEADER_PATH}" "${HEADER_CONTENT}")
  endforeach()
endmacro()

CONFIGURE_HEADER_FILES("gettext-tools/gnulib-lib")
CONFIGURE_HEADER_FILES("libtextstyle/lib")

add_library(libgettextsrc ${libgettextsrc_SOURCES})
target_link_libraries(libgettextsrc ${LIBICONV_LIBRARIES})
set_property(TARGET libgettextsrc APPEND PROPERTY COMPILE_DEFINITIONS
  LIBTEXTSTYLE_DLL_VARIABLE=)

set(msgmerge_SOURCES
  msgmerge.c msgl-fsearch.c lang-table.c plural-count.c)
PREFIX_LIST_ITEMS(msgmerge_SOURCES "gettext-tools/src/")

add_executable(msgmerge ${msgmerge_SOURCES})
target_link_libraries(msgmerge libgettextsrc)
add_dependencies(msgmerge libgettextsrc libintl)

set(msgfmt_SOURCES
  msgfmt.c write-mo.c write-java.c write-csharp.c write-resources.c write-tcl.c
  write-qt.c write-desktop.c write-xml.c
  ../../gettext-runtime/intl/hash-string.c)
PREFIX_LIST_ITEMS(msgfmt_SOURCES "gettext-tools/src/")

add_executable(msgfmt ${msgfmt_SOURCES})
target_link_libraries(msgfmt libgettextsrc)
add_dependencies(msgfmt libgettextsrc libintl)

set(xgettext_SOURCES
  xgettext.c xg-pos.c xg-encoding.c xg-mixed-string.c xg-arglist-context.c
  xg-arglist-callshape.c xg-arglist-parser.c xg-message.c x-c.c x-po.c x-sh.c
  x-python.c x-lisp.c x-elisp.c x-librep.c x-scheme.c x-smalltalk.c x-java.c
  x-csharp.c x-awk.c x-ycp.c x-tcl.c x-perl.c x-php.c x-rst.c x-lua.c
  x-javascript.c x-vala.c x-desktop.c)
PREFIX_LIST_ITEMS(xgettext_SOURCES "gettext-tools/src/")

add_executable(xgettext ${xgettext_SOURCES})
target_link_libraries(xgettext libgettextsrc)
add_dependencies(xgettext libgettextsrc libintl)

set_property(TARGET msgmerge msgfmt xgettext libgettextsrc APPEND PROPERTY
  INCLUDE_DIRECTORIES
    ${CMAKE_CURRENT_SOURCE_DIR}/gettext-runtime/intl
    ${CMAKE_CURRENT_SOURCE_DIR}/gettext-tools/libgettextpo
    ${CMAKE_CURRENT_SOURCE_DIR}/gettext-tools/gnulib-lib
    ${CMAKE_CURRENT_SOURCE_DIR}/gettext-tools/gnulib-lib/libcroco
    ${CMAKE_CURRENT_SOURCE_DIR}/build-aux/snippet
    ${CMAKE_CURRENT_SOURCE_DIR}/libtextstyle/lib
    ${CMAKE_CURRENT_SOURCE_DIR}/libtextstyle/lib/libcroco
    ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl
    ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools
    ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools/gnulib-lib
    ${CMAKE_CURRENT_BINARY_DIR}/libtextstyle/lib
    ${CMAKE_CURRENT_BINARY_DIR}/libtextstyle/lib/textstyle
    ${LIBICONV_INCLUDE_DIRS})

include(GNUInstallDirs)

install(FILES
  ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl/libgnuintl.h
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
  RENAME libintl.h)

install(TARGETS libintl msgmerge msgfmt xgettext
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

# vim: set ft=cmake:

Title: Configuration of Header Files, Libraries, and Executables for gettext-tools
Summary
This section defines a CMake macro to configure header files by replacing template variables. It then applies this macro to 'gettext-tools/gnulib-lib' and 'libtextstyle/lib'. Additionally, it configures and links several executables (msgmerge, msgfmt, xgettext) and a library (libgettextsrc) with their respective source files and dependencies. Finally, it sets include directories and installs header files, libraries, and executables to their designated installation directories.