2021-12-29 03:04:36 +00:00
|
|
|
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
2020-06-02 06:53:06 +00:00
|
|
|
|
2021-12-29 03:04:36 +00:00
|
|
|
cmake_minimum_required (VERSION 2.8...3.16)
|
|
|
|
project(wasm-apps)
|
2020-06-02 06:53:06 +00:00
|
|
|
|
2021-12-29 03:04:36 +00:00
|
|
|
message(CHECK_START "Detecting WABT")
|
|
|
|
if(NOT (DEFINED WABT_DIR OR DEFINED CACHE{WABT_DIR}))
|
|
|
|
find_path(WABT_DIR
|
|
|
|
wabt
|
|
|
|
PATHS /opt
|
|
|
|
NO_DEFAULT_PATH
|
|
|
|
NO_CMAKE_FIND_ROOT_PATH
|
|
|
|
)
|
|
|
|
if(DEFINED WABT_DIR)
|
|
|
|
set(WABT_DIR ${WABT_DIR}/wabt)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if(WABT_DIR)
|
|
|
|
message(CHECK_PASS "found")
|
|
|
|
else()
|
|
|
|
message(CHECK_FAIL "not found")
|
|
|
|
endif()
|
2020-06-02 06:53:06 +00:00
|
|
|
|
2021-12-29 03:04:36 +00:00
|
|
|
message(CHECK_START "Detecting WASM_OBJDUMP at ${WABT_DIR}")
|
|
|
|
find_program(WASM_OBJDUMP
|
|
|
|
wasm-objdump
|
|
|
|
PATHS "${WABT_DIR}/bin"
|
|
|
|
NO_DEFAULT_PATH
|
|
|
|
NO_CMAKE_FIND_ROOT_PATH
|
2020-06-02 06:53:06 +00:00
|
|
|
)
|
2021-12-29 03:04:36 +00:00
|
|
|
if(WASM_OBJDUMP)
|
|
|
|
message(CHECK_PASS "found")
|
|
|
|
else()
|
|
|
|
message(CHECK_FAIL "not found")
|
|
|
|
endif()
|
2020-06-02 06:53:06 +00:00
|
|
|
|
2021-12-29 03:04:36 +00:00
|
|
|
message(CHECK_START "Detecting WASM2WAT at ${WABT_DIR}")
|
|
|
|
find_program(WASM2WAT
|
|
|
|
wasm2wat
|
|
|
|
PATHS "${WABT_DIR}/bin"
|
|
|
|
NO_DEFAULT_PATH
|
|
|
|
NO_CMAKE_FIND_ROOT_PATH
|
2020-06-02 06:53:06 +00:00
|
|
|
)
|
2021-12-29 03:04:36 +00:00
|
|
|
if(WASM2WAT)
|
|
|
|
message(CHECK_PASS "found")
|
|
|
|
else()
|
|
|
|
message(CHECK_FAIL "not found")
|
|
|
|
endif()
|
2020-06-02 06:53:06 +00:00
|
|
|
|
2021-12-29 03:04:36 +00:00
|
|
|
function(COMPILE_WITH_CLANG SOURCE_FILE COMMAND)
|
|
|
|
get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WLE)
|
|
|
|
|
|
|
|
set(WASM_MODULE ${FILE_NAME}.wasm)
|
|
|
|
|
|
|
|
set(MAIN_TARGET_NAME MODULE_${FILE_NAME})
|
|
|
|
|
|
|
|
add_executable(${MAIN_TARGET_NAME} ${SOURCE_FILE})
|
|
|
|
set_target_properties(${MAIN_TARGET_NAME} PROPERTIES OUTPUT_NAME ${WASM_MODULE})
|
2024-06-24 05:56:11 +00:00
|
|
|
target_compile_options (${MAIN_TARGET_NAME} PRIVATE -fno-exceptions)
|
2021-12-29 03:04:36 +00:00
|
|
|
|
|
|
|
if(${COMMAND})
|
|
|
|
message(STATUS "Generating ${WASM_MODULE} as COMMAND...")
|
|
|
|
else()
|
|
|
|
message(STATUS "Generating ${WASM_MODULE} as REACTOR...")
|
|
|
|
target_link_options(${MAIN_TARGET_NAME} PRIVATE -mexec-model=reactor)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(EXISTS ${WASM2WAT})
|
|
|
|
message(STATUS "Dumping ${WASM_MODULE}...")
|
|
|
|
set(WASM_WAT ${FILE_NAME}.wat)
|
|
|
|
set(DUMP_TARGET_NAME DUMP_${FILE_NAME})
|
|
|
|
add_custom_command(OUTPUT ${WASM_WAT}
|
|
|
|
COMMAND ${WASM2WAT} --enable-all -o ${WASM_WAT} ${WASM_MODULE}
|
|
|
|
COMMENT "Dumping ${WASM_MODULE}..."
|
|
|
|
DEPENDS ${MAIN_TARGET_NAME}
|
|
|
|
)
|
|
|
|
|
|
|
|
add_custom_target(${DUMP_TARGET_NAME} ALL
|
|
|
|
DEPENDS ${WASM_WAT}
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
compile_with_clang(mA.c OFF)
|
|
|
|
compile_with_clang(mB.c OFF)
|
|
|
|
compile_with_clang(mC.c ON)
|
|
|
|
compile_with_clang(mD.cpp ON)
|
|
|
|
compile_with_clang(mE.cpp OFF)
|
2020-06-02 06:53:06 +00:00
|
|
|
|