1# a small macro to create mo files out of po's
2# Taken from sim-im.org
3
4MACRO(FIND_MSGFMT)
5    IF(NOT MSGFMT_EXECUTABLE)
6        IF(NOT MSGFMT_NOT_FOUND)
7            SET(MSGFMT_NAME "msgfmt")
8            FIND_PROGRAM(MSGFMT_EXECUTABLE ${MSGFMT_NAME})
9
10            IF (NOT MSGFMT_EXECUTABLE)
11              MESSAGE(STATUS "WARNING: ${MSGFMT_NAME} not found - po files can't be processed")
12              SET(MSGFMT_NOT_FOUND "1")     # to avoid double checking in one cmake run
13            ENDIF (NOT MSGFMT_EXECUTABLE)
14
15            MARK_AS_ADVANCED(MSGFMT_EXECUTABLE)
16        ENDIF(NOT MSGFMT_NOT_FOUND)
17    ENDIF(NOT MSGFMT_EXECUTABLE)
18ENDMACRO(FIND_MSGFMT)
19
20MACRO(COMPILE_PO_FILES po_subdir _sources)
21    FIND_MSGFMT()
22
23    IF(MSGFMT_EXECUTABLE)
24        FILE(GLOB po_files ${po_subdir}/*.po)
25
26        FOREACH(po_input ${po_files})
27            GET_FILENAME_COMPONENT(_in ${po_input} ABSOLUTE)
28            GET_FILENAME_COMPONENT(_basename ${po_input} NAME_WE)
29
30            FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${_basename}")
31            GET_FILENAME_COMPONENT(_out "${CMAKE_CURRENT_BINARY_DIR}/${_basename}/avidemux.mo" ABSOLUTE)
32
33            ADD_CUSTOM_COMMAND(
34                OUTPUT ${_out}
35                COMMAND ${CMAKE_COMMAND} -E echo "Generating" ${_out} "from" ${_in}
36                COMMAND ${MSGFMT_EXECUTABLE} ${_in} -o ${_out}
37                DEPENDS ${_in})
38
39            SET(mo_files ${mo_files} ${_out})
40
41            INSTALL(FILES ${_out} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/locale/${_basename}/LC_MESSAGES")
42        ENDFOREACH(po_input ${po_files})
43
44        SET(${_sources} ${${_sources}} ${mo_files})
45    ENDIF(MSGFMT_EXECUTABLE)
46ENDMACRO(COMPILE_PO_FILES)
47