find_program(XGETTEXT_BIN xgettext)
find_program(MSGFMT_BIN msgfmt)
if(NOT MSGFMT_BIN OR NOT XGETTEXT_BIN)
    message(FATAL_ERROR "gettext not found")
endif()
find_package(Python3 COMPONENTS Interpreter)
if(NOT Python3_FOUND)
    message(FATAL_ERROR "python3 not found")
endif()

file(GLOB CPPFILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_SOURCE_DIR}/plugins/*/*.cpp")
file(GLOB QMLFILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_SOURCE_DIR}/plugins/*/*.qml")
file(GLOB SETTINGSFILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_SOURCE_DIR}/plugins/*/*.settings")
file(RELATIVE_PATH SETTINGSJSFILE "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_CURRENT_SOURCE_DIR}/settings.js")

add_custom_command(OUTPUT ${SETTINGSJSFILE}
    COMMAND ${Python3_EXECUTABLE} ./extractsettingsinfo ${SETTINGSFILES} -o ${SETTINGSJSFILE}
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
    DEPENDS ${SETTINGSFILES}
)

add_custom_target(pot-qml
    COMMAND ${XGETTEXT_BIN} -o ${PROJECT_NAME}.pot
                            --join-existing
                            --copyright=\"Canonical Ltd.\"
                            --package-name=${PROJECT_NAME}
                            --qt
                            --c++
                            --add-comments=TRANSLATORS
                            --keyword=QT_TR_NOOP
                            --keyword=ctr:1c,2
                            --keyword=tr
                            --keyword=tr:1,2
                            --from-code=UTF-8
                            --sort-by-file
                            ${QMLFILES}
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
    DEPENDS ${QMLFILES}
)

add_custom_target(pot DEPENDS pot-qml)

set(languages "aa;af;am;ar;ast;az;be;bg;br;bs;ca;ckb;cs;cy;da;de;el;en_AU;en_GB;eo;es;eu;fa;fi;fr;fr_CA;ga;gd;gl;gu;he;hi;hr;hu;hy;ia;id;is;it;ja;km;ko;lo;lt;lv;ml;mr;ms;my;nb;nl;oc;pa;pl;pt;pt_BR;ro;ru;sa;sc;shn;si;sk;sl;sq;sr;st;sv;ta;te;th;tr;ug;uk;vi;xh;zh_CN;zh_HK;zh_TW")
foreach(i ${languages})
    add_custom_command(OUTPUT ${i}.mo
        COMMAND ${MSGFMT_BIN} ${CMAKE_CURRENT_SOURCE_DIR}/${i}.po
            -o ${CMAKE_CURRENT_BINARY_DIR}/${i}.mo
        DEPENDS ${i}.po)
    add_custom_target(${i}gen ALL DEPENDS ${i}.mo)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${i}.mo
        DESTINATION share/locale/${i}/LC_MESSAGES
        RENAME lomiri-system-settings-phone.mo)
endforeach()
