File: SynfigIntltool.cmake

package info (click to toggle)
synfig 1.5.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 59,132 kB
  • sloc: cpp: 109,639; sh: 6,121; makefile: 1,458; csh: 243; perl: 238; python: 124; ruby: 73
file content (82 lines) | stat: -rw-r--r-- 2,986 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge PATHS ${MSYS_ROOT}/usr/bin)
mark_as_advanced(INTLTOOL_MERGE_EXECUTABLE)

if(INTLTOOL_MERGE_EXECUTABLE)
    execute_process(
        COMMAND ${INTLTOOL_MERGE_EXECUTABLE} --version
        OUTPUT_VARIABLE INTLTOOL_VERSION
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
    if(INTLTOOL_VERSION MATCHES "^intltool-extract \\(.*\\) [0-9]")
        string(REGEX REPLACE "^intltool-extract \\([^\\)]*\\) ([0-9\\.]+[^ \n]*).*" "\\1" INTLTOOL_VERSION_STRING "${INTLTOOL_VERSION}")
    endif()
    unset(INTLTOOL_VERSION)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Intltool
    REQUIRED_VARS INTLTOOL_MERGE_EXECUTABLE
    VERSION_VAR INTLTOOL_VERSION_STRING
)

set(INTLTOOL_OPTIONS_DEFAULT "--quiet")

# When MinGW is used without MSYS environment (for example, Ninja
# generator uses the standard Windows `cmd` shell for building), `intltool-merge`
# cannot be started, because it is just a Perl script, and `cmd` does not know how
# to run it. In this case, we need to explicitly add the interpreter to the command.
if(INTLTOOL_MERGE_EXECUTABLE AND MSYS)
    message(STATUS "Fixing intltool-merge command...")
    set(INTLTOOL_MERGE_EXECUTABLE ${MSYS_ROOT}/usr/bin/perl ${INTLTOOL_MERGE_EXECUTABLE})
endif()

function(STUDIO_INTLTOOL_MERGE)
    set(_desktop DESKTOP)
    set(_targetName TARGET_NAME)
    set(_inputFile INPUT_FILE)
    set(_outputFile OUTPUT_FILE)
    set(_installDestination INSTALL_DESTINATION)

    cmake_parse_arguments(
            _parsedArguments
            "${_desktop}"
            "${_targetName};${_inputFile};${_installDestination};${_outputFile}"
            ""
            ${ARGN}
    )

    if(INTLTOOL_MERGE_EXECUTABLE)
        if(_parsedArguments_OUTPUT_FILE)
            set(_OUTPUT_FILE "${SYNFIG_BUILD_ROOT}/${_parsedArguments_INSTALL_DESTINATION}/${_parsedArguments_OUTPUT_FILE}")
        else()
            set(_OUTPUT_FILE "${SYNFIG_BUILD_ROOT}/${_parsedArguments_INSTALL_DESTINATION}/plugin.xml")
        endif()

        if(_parsedArguments_DESKTOP)
            set(INTLTOOL_MERGE_OPTION "-d")
        else()
            set(INTLTOOL_MERGE_OPTION "-x")
        endif()

        add_custom_command(
            OUTPUT ${_OUTPUT_FILE}
            COMMAND ${INTLTOOL_MERGE_EXECUTABLE} ${INTLTOOL_MERGE_OPTION} -u
            -c ${CMAKE_BINARY_DIR}/synfig-studio/po/.intltool-merge-cache
            ${CMAKE_SOURCE_DIR}/synfig-studio/po
            ${_parsedArguments_INPUT_FILE}
            ${_OUTPUT_FILE}
            DEPENDS ${_parsedArguments_INPUT_FILE}
        )

        add_custom_target(${_parsedArguments_TARGET_NAME}
            DEPENDS ${_OUTPUT_FILE}
        )

        install(FILES ${_OUTPUT_FILE}
            DESTINATION ${_parsedArguments_INSTALL_DESTINATION}
        )
    else()
        message(WARNING "-- Could not find intltool-merge: No translations made for ${_parsedArguments_TARGET_NAME}.")
    endif()
endfunction()