qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 05/10] meson: Add wasm build in build scripts


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 05/10] meson: Add wasm build in build scripts
Date: Wed, 9 Apr 2025 12:55:37 +0200
User-agent: Mozilla Thunderbird

Cc'ing Pierrick

On 7/4/25 16:45, Kohei Tokunaga wrote:
has_int128_type is set to false on emscripten as of now to avoid errors by
libffi. And tests aren't integrated with Wasm execution environment as of
now so this commit disables tests.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
---
  configs/meson/emscripten.txt  |  6 ++++++
  configure                     |  7 +++++++
  meson.build                   | 14 ++++++++++----
  meson_options.txt             |  2 +-
  scripts/meson-buildoptions.sh |  2 +-
  5 files changed, 25 insertions(+), 6 deletions(-)
  create mode 100644 configs/meson/emscripten.txt

diff --git a/configs/meson/emscripten.txt b/configs/meson/emscripten.txt
new file mode 100644
index 0000000000..054b263814
--- /dev/null
+++ b/configs/meson/emscripten.txt
@@ -0,0 +1,6 @@
+[built-in options]
+c_args = ['-Wno-unused-command-line-argument','-g','-O3','-pthread']
+cpp_args = ['-Wno-unused-command-line-argument','-g','-O3','-pthread']
+objc_args = ['-Wno-unused-command-line-argument','-g','-O3','-pthread']
+c_link_args = 
['-Wno-unused-command-line-argument','-g','-O3','-pthread','-sASYNCIFY=1','-sPROXY_TO_PTHREAD=1','-sFORCE_FILESYSTEM','-sALLOW_TABLE_GROWTH','-sTOTAL_MEMORY=2GB','-sWASM_BIGINT','-sEXPORT_ES6=1','-sASYNCIFY_IMPORTS=ffi_call_js','-sEXPORTED_RUNTIME_METHODS=addFunction,removeFunction,TTY,FS']
+cpp_link_args = 
['-Wno-unused-command-line-argument','-g','-O3','-pthread','-sASYNCIFY=1','-sPROXY_TO_PTHREAD=1','-sFORCE_FILESYSTEM','-sALLOW_TABLE_GROWTH','-sTOTAL_MEMORY=2GB','-sWASM_BIGINT','-sEXPORT_ES6=1','-sASYNCIFY_IMPORTS=ffi_call_js','-sEXPORTED_RUNTIME_METHODS=addFunction,removeFunction,TTY,FS']
diff --git a/configure b/configure
index 02f1dd2311..a1fe6e11cd 100755
--- a/configure
+++ b/configure
@@ -360,6 +360,10 @@ elif check_define __NetBSD__; then
    host_os=netbsd
  elif check_define __APPLE__; then
    host_os=darwin
+elif check_define EMSCRIPTEN ; then
+  host_os=emscripten
+  cpu=wasm32
+  cross_compile="yes"
  else
    # This is a fatal error, but don't report it yet, because we
    # might be going to just print the --help text, or it might
@@ -526,6 +530,9 @@ case "$cpu" in
      linux_arch=x86
      CPU_CFLAGS="-m64"
      ;;
+  wasm32)
+    CPU_CFLAGS="-m32"
+    ;;
  esac
if test -n "$host_arch" && {
diff --git a/meson.build b/meson.build
index 41f68d3806..bcf1e33ddf 100644
--- a/meson.build
+++ b/meson.build
@@ -50,9 +50,9 @@ genh = []
  qapi_trace_events = []
bsd_oses = ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
-supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 
'sunos', 'linux']
+supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 
'sunos', 'linux', 'emscripten']
  supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', 
'x86_64',
-  'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64']
+  'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64', 'wasm32']
cpu = host_machine.cpu_family() @@ -353,6 +353,8 @@ foreach lang : all_languages
        # endif
        #endif''')
      # ok
+  elif compiler.get_id() == 'emscripten'
+    # ok
    else
      error('You either need GCC v7.4 or Clang v10.0 (or XCode Clang v15.0) to 
compile QEMU')
    endif
@@ -514,6 +516,8 @@ ucontext_probe = '''
  supported_backends = []
  if host_os == 'windows'
    supported_backends += ['windows']
+elif host_os == 'emscripten'
+  supported_backends += ['fiber']
  else
    if host_os != 'darwin' and cc.links(ucontext_probe)
      supported_backends += ['ucontext']
@@ -2962,7 +2966,7 @@ config_host_data.set('CONFIG_ATOMIC64', cc.links('''
      return 0;
    }''', args: qemu_isa_flags))
-has_int128_type = cc.compiles('''
+has_int128_type = host_os != 'emscripten' and cc.compiles('''
    __int128_t a;
    __uint128_t b;
    int main(void) { b = a; }''')
@@ -4456,7 +4460,9 @@ subdir('scripts')
  subdir('tools')
  subdir('pc-bios')
  subdir('docs')
-subdir('tests')
+if host_os != 'emscripten'
+  subdir('tests')
+endif
  if gtk.found()
    subdir('po')
  endif
diff --git a/meson_options.txt b/meson_options.txt
index 59d973bca0..6d73aafe91 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -34,7 +34,7 @@ option('fuzzing_engine', type : 'string', value : '',
  option('trace_file', type: 'string', value: 'trace',
         description: 'Trace file prefix for simple backend')
  option('coroutine_backend', type: 'combo',
-       choices: ['ucontext', 'sigaltstack', 'windows', 'auto'],
+       choices: ['ucontext', 'sigaltstack', 'windows', 'auto', 'fiber'],
         value: 'auto', description: 'coroutine backend to use')
# Everything else can be set via --enable/--disable-* option
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 3e8e00852b..cbba2f248c 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -80,7 +80,7 @@ meson_options_help() {
    printf "%s\n" '  --tls-priority=VALUE     Default TLS protocol/cipher 
priority string'
    printf "%s\n" '                           [NORMAL]'
    printf "%s\n" '  --with-coroutine=CHOICE  coroutine backend to use 
(choices:'
-  printf "%s\n" '                           auto/sigaltstack/ucontext/windows)'
+  printf "%s\n" '                           
auto/fiber/sigaltstack/ucontext/windows)'
    printf "%s\n" '  --with-pkgversion=VALUE  use specified string as 
sub-version of the'
    printf "%s\n" '                           package'
    printf "%s\n" '  --with-suffix=VALUE      Suffix for QEMU 
data/modules/config directories'




reply via email to

[Prev in Thread] Current Thread [Next in Thread]