mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-11 17:35:13 +00:00
![Ming, Bai](/assets/img/avatar_default.png)
The output file name of the iwasm library should be unique, otherwise some of the output files from two different targets (iwasm and libiwasm) will overwrite each other and produce corrupted output files. Currently Windows debugging is broken due to the corrupted pdb files, and this PR fixes the issue.
131 lines
3.7 KiB
CMake
131 lines
3.7 KiB
CMake
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
cmake_minimum_required (VERSION 2.8)
|
|
|
|
project (iwasm C ASM CXX)
|
|
enable_language(ASM_MASM)
|
|
# set (CMAKE_VERBOSE_MAKEFILE 1)
|
|
|
|
set (WAMR_BUILD_PLATFORM "windows")
|
|
|
|
# Reset default linker flags
|
|
set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
|
|
set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
|
|
|
|
set (CMAKE_C_STANDARD 99)
|
|
|
|
add_definitions(-DCOMPILING_WASM_RUNTIME_API=1)
|
|
|
|
# Set WAMR_BUILD_TARGET, currently values supported:
|
|
# "X86_64", "AMD_64", "X86_32", "AARCH64[sub]", "ARM[sub]", "THUMB[sub]", "MIPS", "XTENSA"
|
|
if (NOT DEFINED WAMR_BUILD_TARGET)
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
# Build as X86_64 by default in 64-bit platform
|
|
set (WAMR_BUILD_TARGET "X86_64")
|
|
else ()
|
|
# Build as X86_32 by default in 32-bit platform
|
|
set (WAMR_BUILD_TARGET "X86_32")
|
|
endif ()
|
|
endif ()
|
|
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_INTERP)
|
|
# Enable Interpreter by default
|
|
set (WAMR_BUILD_INTERP 1)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_AOT)
|
|
# Enable AOT by default.
|
|
set (WAMR_BUILD_AOT 1)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_JIT)
|
|
# Disable JIT by default.
|
|
set (WAMR_BUILD_JIT 0)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_LIBC_BUILTIN)
|
|
# Enable libc builtin support by default
|
|
set (WAMR_BUILD_LIBC_BUILTIN 1)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_LIBC_UVWASI)
|
|
# Enable libc uvwasi support by default
|
|
set (WAMR_BUILD_LIBC_UVWASI 1)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_FAST_INTERP)
|
|
# Enable fast interpreter
|
|
set (WAMR_BUILD_FAST_INTERP 1)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_MULTI_MODULE)
|
|
# Enable multiple modules
|
|
set (WAMR_BUILD_MULTI_MODULE 0)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_LIB_PTHREAD)
|
|
# Disable pthread library by default
|
|
set (WAMR_BUILD_LIB_PTHREAD 0)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_MINI_LOADER)
|
|
# Disable wasm mini loader by default
|
|
set (WAMR_BUILD_MINI_LOADER 0)
|
|
endif ()
|
|
|
|
if (NOT DEFINED WAMR_BUILD_SIMD)
|
|
# Enable SIMD by default
|
|
set (WAMR_BUILD_SIMD 1)
|
|
endif ()
|
|
|
|
if (COLLECT_CODE_COVERAGE EQUAL 1)
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
endif ()
|
|
|
|
set (WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
|
|
|
|
include (${WAMR_ROOT_DIR}/build-scripts/runtime_lib.cmake)
|
|
add_library(vmlib ${WAMR_RUNTIME_LIB_SOURCE})
|
|
|
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
|
|
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
|
|
|
# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat -Wformat-security")
|
|
# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion -Wsign-conversion")
|
|
|
|
if (WAMR_BUILD_TARGET MATCHES "X86_.*" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
|
|
if (NOT (CMAKE_C_COMPILER MATCHES ".*clang.*" OR CMAKE_C_COMPILER_ID MATCHES ".*Clang" OR MSVC))
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mindirect-branch-register")
|
|
endif ()
|
|
endif ()
|
|
|
|
# The following flags are to enhance security, but it may impact performance,
|
|
# we disable them by default.
|
|
#if (WAMR_BUILD_TARGET MATCHES "X86_.*" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
|
|
# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftrapv -D_FORTIFY_SOURCE=2")
|
|
#endif ()
|
|
#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong --param ssp-buffer-size=4")
|
|
#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,noexecstack,-z,relro,-z,now")
|
|
|
|
include (${SHARED_DIR}/utils/uncommon/shared_uncommon.cmake)
|
|
|
|
add_executable (iwasm main.c ${UNCOMMON_SHARED_SOURCE})
|
|
|
|
install (TARGETS iwasm DESTINATION bin)
|
|
|
|
target_link_libraries (iwasm vmlib ${LLVM_AVAILABLE_LIBS} ${UV_A_LIBS})
|
|
|
|
add_library (libiwasm SHARED ${WAMR_RUNTIME_LIB_SOURCE})
|
|
|
|
install (TARGETS libiwasm DESTINATION lib)
|
|
|
|
set_target_properties (libiwasm PROPERTIES OUTPUT_NAME libiwasm)
|
|
|
|
target_link_libraries (libiwasm ${LLVM_AVAILABLE_LIBS} ${UV_A_LIBS})
|
|
|