aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-10-07 16:38:56 +0800
committercrupest <crupest@outlook.com>2023-10-07 16:38:56 +0800
commitd080481d8d2c358c553eddcb10786131b59bc9b6 (patch)
treebc36630a9c3bffcaf37e9397b02a2f17a0a5802e
parenta1dbbdf5fc04ac091be91add80aafe09d48cfea9 (diff)
downloadcru-d080481d8d2c358c553eddcb10786131b59bc9b6.tar.gz
cru-d080481d8d2c358c553eddcb10786131b59bc9b6.tar.bz2
cru-d080481d8d2c358c553eddcb10786131b59bc9b6.zip
...
-rw-r--r--lib/meson-projects/meson.build16
-rw-r--r--scripts/cmake/meson-projects.cmake2
-rwxr-xr-xscripts/emscripten-run.sh7
-rw-r--r--scripts/meson-emscripten.ini.in8
-rw-r--r--src/platform/graphics/cairo/CMakeLists.txt5
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()