|
|
@ -1,17 +1,40 @@
|
|
|
|
cmake_minimum_required(VERSION 3.11)
|
|
|
|
cmake_minimum_required(VERSION 3.11)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Detect WasiEnv
|
|
|
|
|
|
|
|
if(DEFINED ENV{WASI_CC})
|
|
|
|
|
|
|
|
set(WASIENV 1)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Detect MinGW
|
|
|
|
|
|
|
|
if(WIN32 AND CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
|
|
|
|
|
|
set(MINGW 1)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set options
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
|
|
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "set build type to Release")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(WASIENV)
|
|
|
|
|
|
|
|
set(BUILD_WASI "metawasi" CACHE STRING "WASI implementation")
|
|
|
|
|
|
|
|
elseif(EMSCRIPTEN OR EMSCRIPTEN_LIB)
|
|
|
|
|
|
|
|
set(BUILD_WASI "none" CACHE STRING "WASI implementation")
|
|
|
|
|
|
|
|
else()
|
|
|
|
set(BUILD_WASI "uvwasi" CACHE STRING "WASI implementation")
|
|
|
|
set(BUILD_WASI "uvwasi" CACHE STRING "WASI implementation")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
set_property(CACHE BUILD_WASI PROPERTY STRINGS none simple uvwasi metawasi)
|
|
|
|
set_property(CACHE BUILD_WASI PROPERTY STRINGS none simple uvwasi metawasi)
|
|
|
|
|
|
|
|
|
|
|
|
set(BUILD_NATIVE "Build with machine-specific optimisations" ON)
|
|
|
|
set(BUILD_NATIVE "Build with machine-specific optimisations" ON)
|
|
|
|
|
|
|
|
|
|
|
|
set(OUT_FILE "wasm3")
|
|
|
|
set(OUT_FILE "wasm3")
|
|
|
|
set(APP_DIR "platforms/app")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(HARDCODED) # Bundle a wasm binary and run a hard-coded func
|
|
|
|
if(NOT APP_DIR)
|
|
|
|
set(APP_DIR "platforms/emscripten")
|
|
|
|
set(APP_DIR "platforms/app")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Configure the toolchain
|
|
|
|
|
|
|
|
|
|
|
|
if(CLANG OR CLANG_SUFFIX)
|
|
|
|
if(CLANG OR CLANG_SUFFIX)
|
|
|
|
set(CMAKE_C_COMPILER "clang${CLANG_SUFFIX}")
|
|
|
|
set(CMAKE_C_COMPILER "clang${CLANG_SUFFIX}")
|
|
|
|
set(CMAKE_CXX_COMPILER "clang++${CLANG_SUFFIX}")
|
|
|
|
set(CMAKE_CXX_COMPILER "clang++${CLANG_SUFFIX}")
|
|
|
@ -36,8 +59,6 @@ if(EMSCRIPTEN OR EMSCRIPTEN_LIB)
|
|
|
|
set(CMAKE_C_COMPILER "emcc")
|
|
|
|
set(CMAKE_C_COMPILER "emcc")
|
|
|
|
set(CMAKE_CXX_COMPILER "em++")
|
|
|
|
set(CMAKE_CXX_COMPILER "em++")
|
|
|
|
|
|
|
|
|
|
|
|
set(BUILD_WASI "none")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (EMSCRIPTEN_LIB)
|
|
|
|
if (EMSCRIPTEN_LIB)
|
|
|
|
set(APP_DIR "platforms/emscripten_lib")
|
|
|
|
set(APP_DIR "platforms/emscripten_lib")
|
|
|
|
set(OUT_FILE "wasm3.wasm")
|
|
|
|
set(OUT_FILE "wasm3.wasm")
|
|
|
@ -48,23 +69,11 @@ if(EMSCRIPTEN OR EMSCRIPTEN_LIB)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# Detect WasiEnv
|
|
|
|
|
|
|
|
if(DEFINED ENV{WASI_CC})
|
|
|
|
|
|
|
|
set(WASIENV 1)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Detect MinGW
|
|
|
|
|
|
|
|
if(WIN32 AND CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
|
|
|
|
|
|
set(MINGW 1)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(BUILD_32BIT)
|
|
|
|
if(BUILD_32BIT)
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
|
|
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "set build type to Release")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
project(wasm3)
|
|
|
|
project(wasm3)
|
|
|
|
|
|
|
|
|
|
|
|