find_program(MESON meson REQUIRED) find_program(NINJA ninja REQUIRED) set(MESON_PROJECTS_BUILD_DIR ${CMAKE_BINARY_DIR}/meson-projects/build) set(MESON_PROJECTS_INSTALL_DIR ${CMAKE_BINARY_DIR}/meson-projects/install) set(MESON_PROJECTS_MESON_SETUP meson setup ${MESON_PROJECTS_BUILD_DIR} -Dpango=enabled -Dcairo=enabled --prefix=${MESON_PROJECTS_INSTALL_DIR}) if(EMSCRIPTEN) cmake_path(GET CMAKE_C_COMPILER PARENT_PATH EMSCRIPTEN_TOOLCHAIN) set(EMSCRIPTEN_CROSS_FILE_TEMPLATE ${PROJECT_SOURCE_DIR}/scripts/meson-emscripten.ini.in) set(EMSCRIPTEN_CROSS_FILE ${MESON_PROJECTS_BUILD_DIR}/emscripten.ini) configure_file(${EMSCRIPTEN_CROSS_FILE_TEMPLATE} ${EMSCRIPTEN_CROSS_FILE}) set(MESON_PROJECTS_MESON_SETUP ${MESON_PROJECTS_MESON_SETUP} --cross-file ${EMSCRIPTEN_CROSS_FILE}) endif() add_custom_target( build-meson-projects COMMAND mkdir -p ${MESON_PROJECTS_BUILD_DIR} ${MESON_PROJECTS_INSTALL_DIR} COMMAND ${MESON_PROJECTS_MESON_SETUP} COMMAND ninja -C ${MESON_PROJECTS_BUILD_DIR} COMMAND ninja -C ${MESON_PROJECTS_BUILD_DIR} install WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/meson-projects )