diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /fluent-bit/src/wamrc | |
parent | Initial commit. (diff) | |
download | netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.tar.xz netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'fluent-bit/src/wamrc')
-rw-r--r-- | fluent-bit/src/wamrc/CMakeLists.txt | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/fluent-bit/src/wamrc/CMakeLists.txt b/fluent-bit/src/wamrc/CMakeLists.txt new file mode 100644 index 00000000..f8de6449 --- /dev/null +++ b/fluent-bit/src/wamrc/CMakeLists.txt @@ -0,0 +1,210 @@ +string (TOLOWER ${CMAKE_HOST_SYSTEM_NAME} WAMR_BUILD_PLATFORM) +enable_language (CXX) + +if (FLB_SYSTEM_WINDOWS) + enable_language(ASM_MASM) +endif() +if (APPLE) + add_definitions(-DBH_PLATFORM_DARWIN) +endif () + +set (CMAKE_CXX_STANDARD 14) + +if (FLB_SYSTEM_WINDOWS) + add_definitions(-DCOMPILING_WASM_RUNTIME_API=1) +endif () + +# Reset default linker flags +set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") + +# WAMR features switch + +# Set WAMR_BUILD_TARGET, currently values supported: +# "X86_64", "AMD_64", "X86_32", "AARCH64[sub]", "ARM[sub]", "THUMB[sub]", +# "MIPS", "XTENSA", "RISCV64[sub]", "RISCV32[sub]" +if (NOT DEFINED WAMR_BUILD_TARGET) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64)") + set (WAMR_BUILD_TARGET "AARCH64") + add_definitions(-DBUILD_TARGET="${WAMR_BUILD_TARGET}") + # For raspbian/buster: armv6l-unknown-linux-gnueabihf + elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv6.*|armv7.*)") + set (WAMR_BUILD_TARGET "ARM") + elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64") + set (WAMR_BUILD_TARGET "RISCV64") + elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) + # Build as X86_64 by default in 64-bit platform + set (WAMR_BUILD_TARGET "X86_64") + elseif (CMAKE_SIZEOF_VOID_P EQUAL 4) + # Build as X86_32 by default in 32-bit platform + set (WAMR_BUILD_TARGET "X86_32") + else () + message(SEND_ERROR "Unsupported build target platform!") + endif () +endif () + +if (NOT CMAKE_BUILD_TYPE) + set (CMAKE_BUILD_TYPE Release) +endif () + +add_definitions(-DWASM_ENABLE_INTERP=1) +add_definitions(-DWASM_ENABLE_WAMR_COMPILER=1) +add_definitions(-DWASM_ENABLE_BULK_MEMORY=1) +add_definitions(-DWASM_DISABLE_HW_BOUND_CHECK=1) +add_definitions(-DWASM_ENABLE_SHARED_MEMORY=1) +add_definitions(-DWASM_ENABLE_THREAD_MGR=1) +add_definitions(-DWASM_ENABLE_TAIL_CALL=1) +add_definitions(-DWASM_ENABLE_SIMD=1) +add_definitions(-DWASM_ENABLE_REF_TYPES=1) +add_definitions(-DWASM_ENABLE_CUSTOM_NAME_SECTION=1) +add_definitions(-DWASM_ENABLE_DUMP_CALL_STACK=1) +add_definitions(-DWASM_ENABLE_PERF_PROFILING=1) +add_definitions(-DWASM_ENABLE_LOAD_CUSTOM_SECTION=1) +if (WAMR_BUILD_LLVM_LEGACY_PM EQUAL 1) + add_definitions(-DWASM_ENABLE_LLVM_LEGACY_PM=1) +endif() + +if (DEFINED WAMR_BUILD_AOT_FUNC_PREFIX) + add_definitions(-DAOT_FUNC_PREFIX="${WAMR_BUILD_AOT_FUNC_PREFIX}") +endif () + +if (NOT MSVC) + # linker flags + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie -fPIE") + if (NOT (CMAKE_C_COMPILER MATCHES ".*clang.*" OR CMAKE_C_COMPILER_ID MATCHES ".*Clang")) + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") + endif () + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wformat -Wformat-security") + 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")) + check_c_compiler_flag(-mindirect-branch-register FLB_WAMRC_INDIRECT_BRANCH_REGISTER_SUPPORTED) + if (FLB_WAMRC_INDIRECT_BRANCH_REGISTER_SUPPORTE) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mindirect-branch-register") + endif () + endif () + endif () +endif () + +# Searching homebrewed LLVM automatically on macOS. +if(FLB_SYSTEM_MACOS) + execute_process( + COMMAND brew --prefix llvm + RESULT_VARIABLE HOMEBREW_LLVM + OUTPUT_VARIABLE HOMEBREW_LLVM_PREFIX + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (HOMEBREW_LLVM EQUAL 0 AND EXISTS "${HOMEBREW_LLVM_PREFIX}") + message(STATUS "Using llvm keg installed by Homebrew at ${HOMEBREW_LLVM_PREFIX}") + set(ENV{LLVM_DIR} "${HOMEBREW_LLVM_PREFIX}") + endif() +endif() + +# Enable LLVM +set (WAMR_BUILD_WITH_SYSTEM_LLVM 1) +if (NOT WAMR_BUILD_WITH_SYSTEM_LLVM) + set (LLVM_SRC_ROOT "${PROJECT_SOURCE_DIR}/../core/deps/llvm") + if (WAMR_BUILD_PLATFORM STREQUAL "windows") + if (NOT EXISTS "${LLVM_SRC_ROOT}/win32build") + message (FATAL_ERROR "Cannot find LLVM dir: ${LLVM_SRC_ROOT}/win32build") + endif () + set (CMAKE_PREFIX_PATH "${LLVM_SRC_ROOT}/win32build;${CMAKE_PREFIX_PATH}") + else() + if (NOT EXISTS "${LLVM_SRC_ROOT}/build") + message (FATAL_ERROR "Cannot find LLVM dir: ${LLVM_SRC_ROOT}/build") + endif () + set (CMAKE_PREFIX_PATH "${LLVM_SRC_ROOT}/build;${CMAKE_PREFIX_PATH}") + endif () +endif () + +if(LLVM_ENABLE_CURL STREQUAL FORCE_ON) + find_package(CURL REQUIRED) +else() + find_package(CURL) +endif() + +find_package(LLVM CONFIG) +if (LLVM_FOUND) + if (LLVM_PACKAGE_VERSION VERSION_LESS 13.0) + message(STATUS "Outdated LLVM ${LLVM_PACKAGE_VERSION} is found. WAMRC won't be built.") + set(LLVM_FOUND 0) + endif() +else() + message(STATUS "LLVM is not found. WAMRC won't be built.") +endif() +if (LLVM_FOUND) + include_directories(${LLVM_INCLUDE_DIRS}) + add_definitions(${LLVM_DEFINITIONS}) + + message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") + message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") + + set (WAMR_ROOT_DIR ../../${FLB_PATH_LIB_WASM_MICRO_RUNTIME}) + set (SHARED_DIR ${WAMR_ROOT_DIR}/core/shared) + set (IWASM_DIR ${WAMR_ROOT_DIR}/core/iwasm) + set (APP_FRAMEWORK_DIR ${WAMER_ROOT_DIR}/core/app-framework) + + include_directories (${SHARED_DIR}/include + ${IWASM_DIR}/include) + + enable_language (ASM) + + include (${SHARED_DIR}/platform/${WAMR_BUILD_PLATFORM}/shared_platform.cmake) + include (${SHARED_DIR}/mem-alloc/mem_alloc.cmake) + include (${SHARED_DIR}/utils/shared_utils.cmake) + include (${SHARED_DIR}/utils/uncommon/shared_uncommon.cmake) + include (${IWASM_DIR}/libraries/thread-mgr/thread_mgr.cmake) + include (${IWASM_DIR}/libraries/libc-builtin/libc_builtin.cmake) + if (NOT MINGW) + if (NOT MSVC) + include (${IWASM_DIR}/libraries/libc-wasi/libc_wasi.cmake) + else() + include (${IWASM_DIR}/libraries/libc-uvwasi/libc_uvwasi.cmake) + endif() + endif() + include (${IWASM_DIR}/libraries/lib-pthread/lib_pthread.cmake) + include (${IWASM_DIR}/common/iwasm_common.cmake) + include (${IWASM_DIR}/interpreter/iwasm_interp.cmake) + include (${IWASM_DIR}/aot/iwasm_aot.cmake) + include (${IWASM_DIR}/compilation/iwasm_compl.cmake) + + add_library (vmlib-wamrc-static STATIC + ${PLATFORM_SHARED_SOURCE} + ${MEM_ALLOC_SHARED_SOURCE} + ${UTILS_SHARED_SOURCE} + ${UNCOMMON_SHARED_SOURCE} + ${THREAD_MGR_SOURCE} + ${LIBC_BUILTIN_SOURCE} + ${LIBC_WASI_SOURCE} + ${LIB_PTHREAD_SOURCE} + ${IWASM_COMMON_SOURCE} + ${IWASM_INTERP_SOURCE} + ${IWASM_AOT_SOURCE}) + add_library (aotclib-static STATIC ${IWASM_COMPL_SOURCE}) + add_executable (flb-wamrc-bin ${WAMR_ROOT_DIR}/wamr-compiler/main.c) + if (NOT MSVC) + target_link_libraries (flb-wamrc-bin aotclib-static vmlib-wamrc-static LLVMDemangle ${LLVM_AVAILABLE_LIBS} ${lib_ubsan} + -lm -lpthread ${lib_lldb} ${UV_A_LIBS}) + if (MINGW) + target_link_libraries (flb-wamrc-bin -lssp -lWs2_32) + else() + target_link_libraries (flb-wamrc-bin -ldl) + endif() + else() + target_link_libraries (flb-wamrc-bin aotclib-static vmlib-wamrc-static ${lib_lldb} ${LLVM_AVAILABLE_LIBS} ${lib_ubsan} + ${UV_A_LIBS}) + endif() + + set_target_properties(flb-wamrc-bin + PROPERTIES + OUTPUT_NAME flb-wamrc + ENABLE_EXPORTS ON) + install(TARGETS flb-wamrc-bin RUNTIME DESTINATION ${FLB_INSTALL_BINDIR} COMPONENT binary) + + # Include PDB file (if available) + if (MSVC) + target_link_options(flb-wamrc-bin + PUBLIC /pdb:$<TARGET_PDB_FILE:flb-wamrc-bin>) + install(FILES $<TARGET_PDB_FILE:flb-wamrc-bin> + DESTINATION "${FLB_INSTALL_BINDIR}") + endif() +endif ()
\ No newline at end of file |