mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 11:32:03 +00:00
a10aa9ad50
libunwind is reentrant and signal safe, and works faster then then gcc_eh (plus it has some custom patches for problems that have been found during it's usage in ClickHouse). gcc_eh may be missing in the system (if gcc was not installed), and even if it exists clickhouse uses -nodefaultlibs, so some care should be made to make it work. Also this library is tiny and there shouln't be any problem to require it always (there is already tendency to require some contrib libraries, i.e. poco). Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
78 lines
3.2 KiB
CMake
78 lines
3.2 KiB
CMake
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
set (OS_LINUX 1)
|
|
add_definitions(-D OS_LINUX)
|
|
elseif (CMAKE_SYSTEM_NAME MATCHES "Android")
|
|
# This is a toy configuration and not in CI, so expect it to be broken.
|
|
# Use cmake flags such as: -DCMAKE_TOOLCHAIN_FILE=~/ch2/android-ndk-r21d/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=28
|
|
set (OS_ANDROID 1)
|
|
add_definitions(-D OS_ANDROID)
|
|
elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
|
set (OS_FREEBSD 1)
|
|
add_definitions(-D OS_FREEBSD)
|
|
elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
|
set (OS_DARWIN 1)
|
|
add_definitions(-D OS_DARWIN)
|
|
elseif (CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
|
set (OS_SUNOS 1)
|
|
add_definitions(-D OS_SUNOS)
|
|
else ()
|
|
message (FATAL_ERROR "Platform ${CMAKE_SYSTEM_NAME} is not supported")
|
|
endif ()
|
|
|
|
if (CMAKE_CROSSCOMPILING)
|
|
if (OS_DARWIN)
|
|
# FIXME: broken dependencies
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "") # no protobuf -> no grpc
|
|
set (ENABLE_ICU OFF CACHE INTERNAL "")
|
|
set (ENABLE_FASTOPS OFF CACHE INTERNAL "")
|
|
elseif (OS_LINUX OR OS_ANDROID)
|
|
if (ARCH_AARCH64)
|
|
# FIXME: broken dependencies
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_SENTRY OFF CACHE INTERNAL "")
|
|
elseif (ARCH_PPC64LE)
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_SENTRY OFF CACHE INTERNAL "")
|
|
elseif (ARCH_RISCV64)
|
|
# RISC-V support is preliminary
|
|
set (GLIBC_COMPATIBILITY OFF CACHE INTERNAL "")
|
|
set (ENABLE_LDAP OFF CACHE INTERNAL "")
|
|
set (OPENSSL_NO_ASM ON CACHE INTERNAL "")
|
|
set (ENABLE_JEMALLOC ON CACHE INTERNAL "")
|
|
set (ENABLE_PARQUET OFF CACHE INTERNAL "")
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_HDFS OFF CACHE INTERNAL "")
|
|
set (ENABLE_MYSQL OFF CACHE INTERNAL "")
|
|
# It might be ok, but we need to update 'sysroot'
|
|
set (ENABLE_RUST OFF CACHE INTERNAL "")
|
|
elseif (ARCH_S390X)
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_SENTRY OFF CACHE INTERNAL "")
|
|
endif ()
|
|
elseif (OS_FREEBSD)
|
|
# FIXME: broken dependencies
|
|
set (ENABLE_PARQUET OFF CACHE INTERNAL "")
|
|
set (ENABLE_ORC OFF CACHE INTERNAL "")
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_EMBEDDED_COMPILER OFF CACHE INTERNAL "")
|
|
else ()
|
|
message (FATAL_ERROR "Trying to cross-compile to unsupported system: ${CMAKE_SYSTEM_NAME}!")
|
|
endif ()
|
|
|
|
if (USE_MUSL)
|
|
# use of undeclared identifier 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP'
|
|
set (ENABLE_SENTRY OFF CACHE INTERNAL "")
|
|
set (ENABLE_ODBC OFF CACHE INTERNAL "")
|
|
set (ENABLE_GRPC OFF CACHE INTERNAL "")
|
|
set (ENABLE_HDFS OFF CACHE INTERNAL "")
|
|
set (ENABLE_EMBEDDED_COMPILER OFF CACHE INTERNAL "")
|
|
# use of drand48_data
|
|
set (ENABLE_AZURE_BLOB_STORAGE OFF CACHE INTERNAL "")
|
|
endif ()
|
|
|
|
# Don't know why but CXX_STANDARD doesn't work for cross-compilation
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
|
|
|
|
message (STATUS "Cross-compiling for target: ${CMAKE_CXX_COMPILE_TARGET}")
|
|
endif ()
|