Skip to content
Open
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
14 changes: 14 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ cmake_policy(SET CMP0091 NEW)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()

include(cmake/HunterGate.cmake)
HunterGate(
URL https://github.com/qdrvm/hunter/archive/b6c44ccfd5d9d0e87628737303084b4cfa9e200e.zip
SHA1 cecd3a154449c1b39fcf5dfaf1bed2c6bce0f67a
LOCAL
)

project(WasmEdge LANGUAGES CXX C)

# Overwrite it if you want to use static MSVC runtime library.
Expand Down Expand Up @@ -147,6 +155,12 @@ if(WASMEDGE_BUILD_COVERAGE)
append_coverage_compiler_flags()
endif()

if(WASMEDGE_USE_LLVM)
hunter_add_package(ZLIB)
hunter_add_package(LLVM)
hunter_add_package(LLD)
endif()

include(Helper)
include(GNUInstallDirs)

Expand Down
34 changes: 18 additions & 16 deletions cmake/Helper.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -270,22 +270,24 @@ if((WASMEDGE_LINK_LLVM_STATIC OR WASMEDGE_BUILD_STATIC_LIB) AND WASMEDGE_USE_LLV
list(APPEND WASMEDGE_LLVM_LINK_SHARED_COMPONENTS
rt
)
if(WASMEDGE_BUILD_STATIC_LIB)
# Static library will forcefully turn off the LTO.
# Therefore, libz and libtinfo can be statically linked.
find_package(ZLIB REQUIRED)
get_filename_component(ZLIB_PATH "${ZLIB_LIBRARIES}" DIRECTORY)
list(APPEND WASMEDGE_LLVM_LINK_STATIC_COMPONENTS ${ZLIB_PATH}/libz.a)
if(NOT WASMEDGE_DISABLE_LIBTINFO)
list(APPEND WASMEDGE_LLVM_LINK_STATIC_COMPONENTS ${ZLIB_PATH}/libtinfo.a)
endif()
else()
# If not build static lib, dynamic link libz and libtinfo.
list(APPEND WASMEDGE_LLVM_LINK_SHARED_COMPONENTS
z
)
if(NOT WASMEDGE_DISABLE_LIBTINFO)
list(APPEND WASMEDGE_LLVM_LINK_SHARED_COMPONENTS tinfo)
if(WASMEDGE_PLUGIN_ZLIB)
if(WASMEDGE_BUILD_STATIC_LIB)
# Static library will forcefully turn off the LTO.
# Therefore, libz and libtinfo can be statically linked.
find_package(ZLIB REQUIRED)
get_filename_component(ZLIB_PATH "${ZLIB_LIBRARIES}" DIRECTORY)
list(APPEND WASMEDGE_LLVM_LINK_STATIC_COMPONENTS ${ZLIB_PATH}/libz.a)
if(NOT WASMEDGE_DISABLE_LIBTINFO)
list(APPEND WASMEDGE_LLVM_LINK_STATIC_COMPONENTS ${ZLIB_PATH}/libtinfo.a)
endif()
else()
# If not build static lib, dynamic link libz and libtinfo.
list(APPEND WASMEDGE_LLVM_LINK_SHARED_COMPONENTS
z
)
if(NOT WASMEDGE_DISABLE_LIBTINFO)
list(APPEND WASMEDGE_LLVM_LINK_SHARED_COMPONENTS tinfo)
endif()
endif()
endif()
endif()
Expand Down
21 changes: 21 additions & 0 deletions cmake/Hunter/config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Identify native architecture to reduce amount of targets to build
set(ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")

if(ARCHITECTURE MATCHES "^(aarch64.*|AARCH64.*|arm.*|ARM.*)")
set(ARCHITECTURE AArch64)
elseif(ARCHITECTURE MATCHES "^(x86_64.*|AMD64.*|i386.*|i686.*)")
set(ARCHITECTURE X86)
elseif(ARCHITECTURE MATCHES "^(riscv.*)")
set(ARCHITECTURE RISCV)
else()
message(WARNING "Unknown architecture: ${ARCHITECTURE}, using all architectures to build LLVM")
set(ARCHITECTURE AArch64;X86;RISCV)
endif()

hunter_config(
LLVM
VERSION 17.0.6
CMAKE_ARGS # inspired by https://github.com/WasmEdge/WasmEdge/blob/5e8556afa5a71f3d3ef9615334ecf1a9d4d0f1e8/utils/docker/Dockerfile.manylinux2014_x86_64#L57
LLVM_ENABLE_PROJECTS=lld;clang
LLVM_TARGETS_TO_BUILD=${ARCHITECTURE};BPF
)
Loading