Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 39 additions & 24 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,21 @@ env:
RUNNER: tools/run-tests.py

jobs:
check-cmake-isolation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install Packages
run: sudo apt-get update && sudo apt-get install -y ninja-build pkg-config libuv1-dev
- name: Check parent and target isolation
run: |
cmake -Htest/cmake/isolation -Bout/cmake-isolation -GNinja
cmake --build out/cmake-isolation --target walrus-isolation
cmake -Htest/cmake/isolation -Bout/cmake-isolation-asan -GNinja -DWABT_USE_ASAN=ON -DUVWASI_ASAN=ON
cmake --build out/cmake-isolation-asan --target walrus-isolation

check-tidy:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -41,9 +56,9 @@ jobs:
brew install ninja pkg-config
- name: Build x64
env:
BUILD_OPTIONS: -DWALRUS_MODE=${{ matrix.mode }} -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/mac $BUILD_OPTIONS
cmake -H. -Bout/mac $BUILD_OPTIONS
ninja -Cout/mac
- name: "Remove 2 test files due to stack overflow occurred by recursion calls in debug mode build by clang"
if: matrix.mode == 'debug' && matrix.switch == ''
Expand Down Expand Up @@ -78,9 +93,9 @@ jobs:
brew install ninja
- name: Build arm64
env:
BUILD_OPTIONS: -DWALRUS_MODE=${{ matrix.mode }} -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/mac $BUILD_OPTIONS
cmake -H. -Bout/mac $BUILD_OPTIONS
ninja -Cout/mac
- name: "Remove 2 test files due to stack overflow occurred by recursion calls in debug mode build by clang"
if: matrix.mode == 'debug'
Expand Down Expand Up @@ -131,9 +146,9 @@ jobs:
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: ${{ matrix.compile.name }} ${{ matrix.arch }}
env:
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_MODE=${{ matrix.mode }} -DWALRUS_OUTPUT=shell ${{ matrix.compile.options }} -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ENABLE_SHELL=ON ${{ matrix.compile.options }} -GNinja
run: |
CC=clang CXX=clang++ cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/ $BUILD_OPTIONS
CC=clang CXX=clang++ cmake -H. -Bout/ $BUILD_OPTIONS
ninja -Cout/
- name: "Remove 2 test files due to stack overflow occurred by recursion calls in debug mode build by clang when walrus interpreter is used"
if: matrix.mode == 'debug' && matrix.switch == ''
Expand Down Expand Up @@ -173,9 +188,9 @@ jobs:
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: Build ${{ matrix.arch }}
env:
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DWALRUS_MODE=debug -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DCMAKE_BUILD_TYPE=Debug -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/linux/${{ matrix.arch }} $BUILD_OPTIONS
cmake -H. -Bout/linux/${{ matrix.arch }} $BUILD_OPTIONS
ninja -Cout/linux/${{ matrix.arch }}
- name: Run Tests
run: |
Expand All @@ -193,9 +208,9 @@ jobs:
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: Build x64
env:
BUILD_OPTIONS: -DWALRUS_JITPERF=1 -DWALRUS_MODE=debug -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DWALRUS_JITPERF=1 -DCMAKE_BUILD_TYPE=Debug -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/linux/x64 $BUILD_OPTIONS
cmake -H. -Bout/linux/x64 $BUILD_OPTIONS
ninja -Cout/linux/x64

build-test-on-aarch64-linux:
Expand All @@ -219,9 +234,9 @@ jobs:
sudo apt install -y ninja-build
- name: Build aarch64-${{ matrix.mode }} ( ${{ matrix.switch }} )
env:
BUILD_OPTIONS: -DWALRUS_ARCH=aarch64 -DWALRUS_HOST=linux -DWALRUS_MODE=${{ matrix.mode }}-DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=aarch64 -DWALRUS_HOST=linux -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/linux/aarch64/${{ matrix.mode }} $BUILD_OPTIONS
cmake -H. -Bout/linux/aarch64/${{ matrix.mode }} $BUILD_OPTIONS
ninja -Cout/linux/aarch64/${{ matrix.mode }}
- name: Run Tests
run: |
Expand Down Expand Up @@ -307,7 +322,7 @@ jobs:
CFLAGS: ${{ matrix.arch.toolchain.CFLAGS }}
CXXFLAGS: ${{ matrix.arch.toolchain.CXXFLAGS }}
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -DCMAKE_EXE_LINKER_FLAGS="-static" -Bout/ -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ARCH=${{ matrix.arch.walrus }} -DWALRUS_HOST=linux -DWALRUS_MODE=debug -DWALRUS_OUTPUT=shell ${{ matrix.compile.options }} -GNinja
cmake -H. -DCMAKE_EXE_LINKER_FLAGS="-static" -Bout/ -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ARCH=${{ matrix.arch.walrus }} -DWALRUS_HOST=linux -DWALRUS_ENABLE_SHELL=ON ${{ matrix.compile.options }} -GNinja
ninja -C out/
- name: "Remove 2 test files due to stack overflow occurred by recursion calls in interpreter mode build by gcc"
if: matrix.switch == ''
Expand Down Expand Up @@ -371,7 +386,7 @@ jobs:
sdk: "10.0.26100.0"
- name: Build ${{ matrix.arch }} Release
run: |
CMake -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -Bout/ -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release
CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -Bout/ -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release
CMake --build out/ --config Release
- name: Run tests
run: |
Expand Down Expand Up @@ -399,9 +414,9 @@ jobs:
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: Build ${{ matrix.arch}}
env:
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DWALRUS_MODE=${{ matrix.mode }} -DWALRUS_OUTPUT=shell -DWALRUS_EXTENDED_FEATURES=ON -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ENABLE_SHELL=ON -DWALRUS_EXTENDED_FEATURES=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/extended $BUILD_OPTIONS
cmake -H. -Bout/extended $BUILD_OPTIONS
ninja -Cout/extended
- name: Run Tests
run: |
Expand All @@ -428,9 +443,9 @@ jobs:
sudo pip install tqdm
- name: Build ${{ matrix.arch }}
env:
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DWALRUS_MODE=release -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DCMAKE_BUILD_TYPE=Release -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/linux/${{ matrix.arch }} $BUILD_OPTIONS
cmake -H. -Bout/linux/${{ matrix.arch }} $BUILD_OPTIONS
ninja -Cout/linux/${{ matrix.arch }}
- name: Run Tests
run: |
Expand All @@ -456,9 +471,9 @@ jobs:
sudo pip install py-markdown-table
- name: Build ${{ matrix.arch }}
env:
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DWALRUS_MODE=release -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DWALRUS_ARCH=${{ matrix.arch }} -DWALRUS_HOST=linux -DCMAKE_BUILD_TYPE=Release -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/polybench/${{ matrix.arch }} $BUILD_OPTIONS
cmake -H. -Bout/polybench/${{ matrix.arch }} $BUILD_OPTIONS
ninja -Cout/polybench/${{ matrix.arch }}
- name: Run PolyBench Tests
run: |
Expand All @@ -480,9 +495,9 @@ jobs:
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: Build x64
env:
BUILD_OPTIONS: -DWALRUS_MODE=${{ matrix.mode }} -DWALRUS_ARCH=x64 -DWALRUS_OUTPUT=api_test -GNinja
BUILD_OPTIONS: -DCMAKE_BUILD_TYPE=${{ matrix.mode }} -DWALRUS_ARCH=x64 -DWALRUS_ENABLE_SHELL=OFF -DWALRUS_BUILD_API_TESTS=ON -GNinja
run: |
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/api_test $BUILD_OPTIONS
cmake -H. -Bout/api_test $BUILD_OPTIONS
ninja -Cout/api_test
cp third_party/wasm-c-api/example/*.wasm out/api_test/.
- name: Run Tests
Expand Down Expand Up @@ -515,10 +530,10 @@ jobs:
tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
- name: Build
env:
BUILD_OPTIONS: -DWALRUS_MODE=release -DWALRUS_OUTPUT=shell -GNinja
BUILD_OPTIONS: -DCMAKE_BUILD_TYPE=Release -DWALRUS_ENABLE_SHELL=ON -GNinja
run: |
export PATH=$GITHUB_WORKSPACE/cov-analysis-linux64/bin:$PATH
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/coverity_scan $BUILD_OPTIONS
cmake -H. -Bout/coverity_scan $BUILD_OPTIONS
cov-build --dir cov-int ninja -Cout/coverity_scan
- name: Submit
env:
Expand Down
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
[submodule "third_party/GCutil"]
path = third_party/GCutil
url = https://github.com/Samsung/gcutil.git
branch = bdwgc_8_3_pre_260715
ignore = untracked
[submodule "third_party/wasm-c-api"]
path = third_party/wasm-c-api
Expand Down
168 changes: 115 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,87 +1,152 @@
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.12)
# Older CMake ignores the policy upper bound; CMake 4.x requires it.
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.12...4.0 FATAL_ERROR)

PROJECT (WALRUS)

# CONFIGURATION
SET (CMAKE_EXPORT_COMPILE_COMMANDS ON)

# input variable list
# WALRUS_ASAN, WALRUS_SMALL_CONFIG, WALRUS_DEBUG_INFO
IF (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS)
SET (CMAKE_EXPORT_COMPILE_COMMANDS ON)
ENDIF()

MESSAGE(VERBOSE "CMAKE_SYSTEM_NAME: " ${CMAKE_SYSTEM_NAME})
MESSAGE(VERBOSE "CMAKE_SYSTEM_PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR})
# TODO: Support multi-config generator
MESSAGE(VERBOSE "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
IF (NOT DEFINED WALRUS_MODE)
IF ("${CMAKE_BUILD_TYPE}" STREQUAL "")
SET(WALRUS_MODE "release")
ELSEIF (${CMAKE_BUILD_TYPE} STREQUAL "Release")
SET(WALRUS_MODE "release")
ELSEIF (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
SET(WALRUS_MODE "release")
SET(WALRUS_DEBUG_INFO ON)
ELSEIF (${CMAKE_BUILD_TYPE} STREQUAL "MinSizeRel")
SET(WALRUS_MODE "release")
SET(WALRUS_SMALL_CONFIG ON)
# Honor standard CMake configuration variables. Legacy inputs remain aliases.
IF (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
IF (DEFINED WALRUS_MODE)
IF (WALRUS_MODE STREQUAL "debug")
SET (_walrus_build_type Debug)
ELSEIF (WALRUS_MODE STREQUAL "release")
SET (_walrus_build_type Release)
ELSE()
MESSAGE (FATAL_ERROR "WALRUS_MODE must be debug or release")
ENDIF()
ELSE()
SET(WALRUS_MODE "debug")
SET (_walrus_build_type Release)
ENDIF()
IF (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
SET (CMAKE_BUILD_TYPE "${_walrus_build_type}" CACHE STRING "Build configuration" FORCE)
SET_PROPERTY (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel)
ELSE()
# A subproject must not change its parent's configuration cache.
SET (CMAKE_BUILD_TYPE "${_walrus_build_type}")
ENDIF()
ENDIF()
STRING (TOLOWER "${CMAKE_BUILD_TYPE}" _walrus_build_type_lower)
IF (_walrus_build_type_lower STREQUAL "debug")
SET (WALRUS_MODE debug)
ELSE()
SET (WALRUS_MODE release)
ENDIF()

# Detect multilib targets without changing the caller's platform variables.
SET (_walrus_processor "${CMAKE_SYSTEM_PROCESSOR}")
IF (CMAKE_SIZEOF_VOID_P EQUAL 4 AND _walrus_processor MATCHES "^(x86_64|AMD64|x64)$")
SET (_walrus_processor i386)
ENDIF()
IF (("${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS} $ENV{CFLAGS} $ENV{CXXFLAGS} $ENV{LDFLAGS}" MATCHES "-m32")
AND (_walrus_processor MATCHES "^(x86_64|AMD64|x64)$"))
SET (_walrus_processor i386)
ENDIF()
IF (NOT _walrus_processor AND CMAKE_OSX_ARCHITECTURES)
LIST (LENGTH CMAKE_OSX_ARCHITECTURES _walrus_arch_count)
IF (_walrus_arch_count EQUAL 1)
SET (_walrus_processor "${CMAKE_OSX_ARCHITECTURES}")
ENDIF()
ENDIF()

IF (NOT DEFINED WALRUS_ARCH)
IF (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "X86" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86"
OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
IF (_walrus_processor STREQUAL "X86" OR _walrus_processor STREQUAL "x86"
OR _walrus_processor STREQUAL "i386" OR _walrus_processor STREQUAL "i686")
SET(WALRUS_ARCH "x86")
ELSEIF (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64"
OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "EM64T")
ELSEIF (_walrus_processor STREQUAL "AMD64" OR _walrus_processor STREQUAL "x86_64"
OR _walrus_processor STREQUAL "x64" OR _walrus_processor STREQUAL "EM64T")
SET(WALRUS_ARCH "x64")
ELSEIF (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm32"
OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
ELSEIF (_walrus_processor STREQUAL "arm" OR _walrus_processor STREQUAL "arm32"
OR _walrus_processor STREQUAL "armv7l")
SET(WALRUS_ARCH "arm")
ELSEIF (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
ELSEIF (_walrus_processor STREQUAL "arm64" OR _walrus_processor STREQUAL "ARM64" OR _walrus_processor STREQUAL "aarch64" OR _walrus_processor STREQUAL "AARCH64")
SET(WALRUS_ARCH "aarch64")
ELSEIF (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
ELSEIF (_walrus_processor STREQUAL "riscv64")
SET(WALRUS_ARCH "riscv64")
ENDIF()
ENDIF()

IF (NOT DEFINED WALRUS_HOST)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" OR ${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
IF (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
SET(WALRUS_HOST "windows")
ELSEIF (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Android")
SET(WALRUS_HOST "android")
ELSEIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
SET(WALRUS_HOST "darwin")
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Tizen")
SET(WALRUS_HOST "tizen")
ELSE()
SET(WALRUS_HOST "linux")
ENDIF()
ENDIF()

IF (NOT DEFINED WALRUS_MODE)
SET (WALRUS_MODE "release")
# Preserve parent-provided normal variables on old CMake too (CMP0077 only
# exists since 3.13), and keep all inputs visible as BOOL cache entries.
MACRO (WALRUS_OPTION _name _help _default)
IF (DEFINED ${_name})
SET (${_name} "${${_name}}" CACHE BOOL "${_help}")
ENDIF()
OPTION (${_name} "${_help}" "${_default}")
ENDMACRO()

# Project-specific booleans inherit standard defaults without modifying them.
SET (_walrus_shared_default OFF)
IF (DEFINED BUILD_SHARED_LIBS)
SET (_walrus_shared_default "${BUILD_SHARED_LIBS}")
ENDIF()
IF (NOT DEFINED WALRUS_OUTPUT)
SET (WALRUS_OUTPUT "shell")
SET (_walrus_shell_default ON)
IF (DEFINED ENABLE_SHELL)
SET (_walrus_shell_default "${ENABLE_SHELL}")
ENDIF()

IF (NOT DEFINED WALRUS_WASI)
# Enable WASI by default
SET (WALRUS_WASI ON)

IF(NOT DEFINED WALRUS_WASI_NN)
SET (WALRUS_WASI_NN OFF)
SET (_walrus_api_test_default OFF)
IF (DEFINED WALRUS_OUTPUT)
IF (WALRUS_OUTPUT STREQUAL "shared_lib")
SET (_walrus_shared_default ON)
SET (_walrus_shell_default OFF)
ELSEIF (WALRUS_OUTPUT STREQUAL "static_lib")
SET (_walrus_shared_default OFF)
SET (_walrus_shell_default OFF)
ELSEIF (WALRUS_OUTPUT STREQUAL "api_test")
SET (_walrus_shared_default OFF)
SET (_walrus_shell_default OFF)
SET (_walrus_api_test_default ON)
ELSEIF (WALRUS_OUTPUT STREQUAL "shell")
SET (_walrus_shell_default ON)
ELSE()
MESSAGE (FATAL_ERROR "Unknown WALRUS_OUTPUT: ${WALRUS_OUTPUT}")
ENDIF()
ENDIF()

IF (NOT DEFINED WALRUS_GC)
# Enable gc by default
SET (WALRUS_GC ON)
WALRUS_OPTION (WALRUS_BUILD_SHARED_LIBS "Build the Walrus library as a shared library" ${_walrus_shared_default})
WALRUS_OPTION (WALRUS_BUILD_GC_SHARED_LIBS "Build GCutil as a shared library" OFF)
WALRUS_OPTION (WALRUS_ENABLE_SHELL "Build the Walrus command-line shell" ${_walrus_shell_default})
WALRUS_OPTION (WALRUS_BUILD_API_TESTS "Build wasm-c-api examples" ${_walrus_api_test_default})
WALRUS_OPTION (WALRUS_WASI "Enable WASI support" ON)
WALRUS_OPTION (WALRUS_WASI_NN "Enable WASI neural-network support (requires CMake 3.14+)" OFF)
WALRUS_OPTION (WALRUS_GC "Enable WebAssembly garbage collection" ON)
WALRUS_OPTION (WALRUS_JIT "Enable the JIT compiler" ON)
WALRUS_OPTION (WALRUS_ASAN "Build with AddressSanitizer" OFF)
WALRUS_OPTION (WALRUS_SMALL_CONFIG "Optimize for binary size" OFF)
WALRUS_OPTION (WALRUS_DEBUG_INFO "Include debug information" OFF)
WALRUS_OPTION (WALRUS_VALGRIND "Enable Valgrind profiling" OFF)
WALRUS_OPTION (WALRUS_GOOGLE_PERF "Enable Google performance profiling" OFF)
WALRUS_OPTION (WALRUS_COVERAGE "Enable code coverage" OFF)
WALRUS_OPTION (WALRUS_JITPERF "Enable JIT perf support" OFF)
IF (WALRUS_WASI_NN AND NOT WALRUS_WASI)
MESSAGE (FATAL_ERROR "WALRUS_WASI_NN requires WALRUS_WASI=ON")
ENDIF()
IF (WALRUS_WASI_NN AND CMAKE_VERSION VERSION_LESS 3.14)
MESSAGE (FATAL_ERROR "WALRUS_WASI_NN requires CMake 3.14 or newer")
ENDIF()

MESSAGE(STATUS "Walrus Arch: " ${WALRUS_ARCH})
MESSAGE(STATUS "Walrus Host: " ${WALRUS_HOST})
MESSAGE(STATUS "Walrus Mode: " ${WALRUS_MODE})
MESSAGE(STATUS "Walrus Output: " ${WALRUS_OUTPUT})
MESSAGE(STATUS "Walrus Shared Library: " ${WALRUS_BUILD_SHARED_LIBS})
MESSAGE(STATUS "Walrus Shell: " ${WALRUS_ENABLE_SHELL})
MESSAGE(STATUS "Walrus API Tests: " ${WALRUS_BUILD_API_TESTS})
MESSAGE(STATUS "Walrus WASI Enabled: " ${WALRUS_WASI})
MESSAGE(STATUS "Walrus GC Enabled: " ${WALRUS_GC})
MESSAGE(STATUS "Walrus WASI-NN Enabled: " ${WALRUS_WASI_NN})
Expand All @@ -91,9 +156,6 @@ ENDIF()

SET (WALRUS_TARGET walrus)

INCLUDE (ProcessorCount)
PROCESSORCOUNT (NPROCS)

# INCLUDE CMAKE FILES
INCLUDE (${PROJECT_SOURCE_DIR}/build/config.cmake)
INCLUDE (${PROJECT_SOURCE_DIR}/build/walrus.cmake)
INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/build/config.cmake)
INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/build/walrus.cmake)
Loading
Loading