diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cd279a2..002fbcc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -114,7 +114,7 @@ jobs: source $HOME/.wasienv/wasienv.sh mkdir build-wasi cd build-wasi - wasimake cmake -DWASIENV=1 .. + wasimake cmake .. - name: Build run: | source $HOME/.wasienv/wasienv.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index b4692cb..2eb7356 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.9) +option(BUILD_WASI_SUPPORT "Build with WASI support" ON) + set(OUT_FILE "wasm3") set(APP_DIR "platforms/app") @@ -36,6 +38,11 @@ if(EMSCRIPTEN) set(APP_DIR "platforms/emscripten") endif() +# Detect WasiEnv +if(DEFINED ENV{WASI_CC}) + set(WASIENV 1) +endif() + if(BUILD_32BIT) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") endif() @@ -77,7 +84,10 @@ if(EMSCRIPTEN) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Xclang -target-feature -Xclang +tail-call") endif() elseif(WASIENV) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasMetaWASI") + + if(BUILD_WASI_SUPPORT) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasMetaWASI") + endif() set(CMAKE_C_FLAGS_RELEASE "-O3 -Wfatal-errors -fomit-frame-pointer -fno-stack-check -fno-stack-protector") @@ -87,7 +97,10 @@ elseif(WASIENV) #-flto -Wl,--lto-O3 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=8388608") elseif(WIN32) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI") + + if(BUILD_WASI_SUPPORT) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI") + endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /WX- /diagnostics:column") @@ -107,7 +120,10 @@ elseif(WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:8388608") # stack size else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI") + + if(BUILD_WASI_SUPPORT) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI") #-Dd_m3FixedHeap=1048576 + endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wparentheses -Wundef -Wpointer-arith -Wstrict-aliasing=2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=shadow -Werror=implicit-function-declaration") # -Werror=cast-align diff --git a/platforms/app/main.c b/platforms/app/main.c index 33125da..8848883 100644 --- a/platforms/app/main.c +++ b/platforms/app/main.c @@ -260,8 +260,10 @@ int main (int i_argc, const char* i_argv[]) result = repl_load(runtime, argFile); if (result) FATAL("repl_load: %s", result); +#if defined(d_m3HasWASI) result = m3_LinkWASI (runtime->modules); if (result) FATAL("m3_LinkWASI: %s", result); +#endif result = m3_LinkLibC (runtime->modules); if (result) FATAL("m3_LinkLibC: %s", result);