From a0b668336067535dbb84e7e7d01b9730af429541 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Sat, 14 Nov 2015 01:37:15 +0300 Subject: [PATCH] Changing Gettext ABI automatically. --- FindGettextOverride.cmake | 41 +++++++++++++++++++++++++++++++++++++++ GettextLangRules.cmake | 1 + 2 files changed, 42 insertions(+) create mode 100644 FindGettextOverride.cmake diff --git a/FindGettextOverride.cmake b/FindGettextOverride.cmake new file mode 100644 index 0000000..792486a --- /dev/null +++ b/FindGettextOverride.cmake @@ -0,0 +1,41 @@ +function(GETTEXT_PROCESS_PO_FILES _lang) + set(_options ALL) + set(_oneValueArgs INSTALL_DESTINATION) + set(_multiValueArgs PO_FILES) + set(_gmoFiles) + + CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + + foreach(_current_PO_FILE ${_parsedArguments_PO_FILES}) + get_filename_component(_name ${_current_PO_FILE} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name}) + set(_basenameMAJOR ${_basename}-${MAJOR}) + set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_basenameMAJOR}.gmo) + add_custom_command(OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${_current_PO_FILE} + ) + + if(_parsedArguments_INSTALL_DESTINATION) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_basenameMAJOR}.gmo DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/ RENAME ${_basenameMAJOR}.mo) + endif() + list(APPEND _gmoFiles ${_gmoFile}) + endforeach() + + + if(NOT TARGET pofiles) + add_custom_target(pofiles) + endif() + + _GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName) + + if(_parsedArguments_ALL) + add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles}) + else() + add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles}) + endif() + + add_dependencies(pofiles ${uniqueTargetName}) + +endfunction() diff --git a/GettextLangRules.cmake b/GettextLangRules.cmake index 7d651bf..2eadcf3 100644 --- a/GettextLangRules.cmake +++ b/GettextLangRules.cmake @@ -1,3 +1,4 @@ +INCLUDE (FindGettextOverride) FILE (GLOB _po_files *.po) GET_FILENAME_COMPONENT (LANG "${CMAKE_CURRENT_SOURCE_DIR}" NAME) GETTEXT_PROCESS_PO_FILES ("${LANG}" ALL INSTALL_DESTINATION ${LOCALEDIR} PO_FILES ${_po_files} )