diff options
-rw-r--r-- | lib/meson-projects/meson.build | 16 | ||||
-rw-r--r-- | scripts/cmake/meson-projects.cmake | 2 | ||||
-rwxr-xr-x | scripts/emscripten-run.sh | 7 | ||||
-rw-r--r-- | scripts/meson-emscripten.ini.in | 8 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CMakeLists.txt | 5 |
5 files changed, 36 insertions, 2 deletions
diff --git a/lib/meson-projects/meson.build b/lib/meson-projects/meson.build index c373f0ce..0434dfb0 100644 --- a/lib/meson-projects/meson.build +++ b/lib/meson-projects/meson.build @@ -1,5 +1,21 @@ project('cru-deps', 'c', 'cpp') +hello_word_test = ''' +#include <stdio.h> + +int main() { + printf("Hello world!"); + return 0; +} +''' + +cc = meson.get_compiler('c') +hello_world_result = cc.run(hello_word_test, name: 'hello world') + +if hello_world_result.returncode() != 0 + error('Failed to hello world!') +endif + if get_option('cairo').enabled() subproject('glib') subproject('cairo') diff --git a/scripts/cmake/meson-projects.cmake b/scripts/cmake/meson-projects.cmake index d122ed29..613b54fd 100644 --- a/scripts/cmake/meson-projects.cmake +++ b/scripts/cmake/meson-projects.cmake @@ -11,7 +11,7 @@ if(EMSCRIPTEN) 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}) + set(MESON_PROJECTS_MESON_SETUP ${EMSCRIPTEN_TOOLCHAIN}/emconfigure ${MESON_PROJECTS_MESON_SETUP} --cross-file ${EMSCRIPTEN_CROSS_FILE}) endif() add_custom_target( diff --git a/scripts/emscripten-run.sh b/scripts/emscripten-run.sh new file mode 100755 index 00000000..94a9dfee --- /dev/null +++ b/scripts/emscripten-run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +if [[ $1 == *.js ]]; then + exec node -- "$@" +fi + +exec "$@" diff --git a/scripts/meson-emscripten.ini.in b/scripts/meson-emscripten.ini.in index fc88ce32..57d72c99 100644 --- a/scripts/meson-emscripten.ini.in +++ b/scripts/meson-emscripten.ini.in @@ -1,10 +1,14 @@ [constants] +project_dir = '${PROJECT_SOURCE_DIR}' emscripten = '${EMSCRIPTEN_TOOLCHAIN}' emscripten_flags = ['-W', '-Wno-unused-parameter', '-matomics', '-mbulk-memory'] [binaries] +exe_wrapper = project_dir / 'scripts/emscripten-run.sh' + c = emscripten / 'emcc' cpp = emscripten / 'em++' +ld = emscripten / 'emcc' c_ld = emscripten / 'emcc' cpp_ld = emscripten / 'emcc' ar = emscripten / 'emar' @@ -17,6 +21,10 @@ default_library = 'static' c_args = emscripten_flags cpp_args = emscripten_flags +[glib:project options] +xattr = false +tests = false + [pixman:project options] loongson-mmi = 'disabled' mmx = 'disabled' diff --git a/src/platform/graphics/cairo/CMakeLists.txt b/src/platform/graphics/cairo/CMakeLists.txt index 48339f7c..8dcba709 100644 --- a/src/platform/graphics/cairo/CMakeLists.txt +++ b/src/platform/graphics/cairo/CMakeLists.txt @@ -36,6 +36,9 @@ endif() if (EMSCRIPTEN) add_dependencies(CruPlatformGraphicsCairo build-meson-projects) - target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PUBLIC ${MESON_PROJECTS_INSTALL_DIR}/lib/libcairo.a) + target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PUBLIC + ${MESON_PROJECTS_INSTALL_DIR}/lib/libcairo.a + ${MESON_PROJECTS_INSTALL_DIR}/lib/libpango.a + ) target_include_directories(CruPlatformGraphicsCairo PUBLIC ${MESON_PROJECTS_INSTALL_DIR}/include) endif() |