fix: breakpad use miniz
Some checks failed
sm-rpc / build (Debug, arm-linux-gnueabihf) (push) Successful in 1m34s
sm-rpc / build (Debug, aarch64-linux-gnu) (push) Successful in 2m46s
sm-rpc / build (Debug, host.gcc) (push) Failing after 1m28s
sm-rpc / build (Release, aarch64-linux-gnu) (push) Successful in 2m14s
sm-rpc / build (Release, arm-linux-gnueabihf) (push) Successful in 2m8s
sm-rpc / build (Debug, mipsel-linux-gnu) (push) Successful in 5m35s
sm-rpc / build (Release, host.gcc) (push) Failing after 1m55s
sm-rpc / build (Release, mipsel-linux-gnu) (push) Successful in 7m21s
Some checks failed
sm-rpc / build (Debug, arm-linux-gnueabihf) (push) Successful in 1m34s
sm-rpc / build (Debug, aarch64-linux-gnu) (push) Successful in 2m46s
sm-rpc / build (Debug, host.gcc) (push) Failing after 1m28s
sm-rpc / build (Release, aarch64-linux-gnu) (push) Successful in 2m14s
sm-rpc / build (Release, arm-linux-gnueabihf) (push) Successful in 2m8s
sm-rpc / build (Debug, mipsel-linux-gnu) (push) Successful in 5m35s
sm-rpc / build (Release, host.gcc) (push) Failing after 1m55s
sm-rpc / build (Release, mipsel-linux-gnu) (push) Successful in 7m21s
This commit is contained in:
115
third_party/zlib-ng/cmake/detect-arch.c
vendored
Normal file
115
third_party/zlib-ng/cmake/detect-arch.c
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
// archdetect.c -- Detect compiler architecture and raise preprocessor error
|
||||
// containing a simple arch identifier.
|
||||
// Copyright (C) 2019 Hans Kristian Rosbach
|
||||
// Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
// x86_64
|
||||
#if defined(__x86_64__) || defined(_M_X64)
|
||||
#error archfound x86_64
|
||||
|
||||
// x86
|
||||
#elif defined(__i386) || defined(_M_IX86)
|
||||
#error archfound i686
|
||||
|
||||
// ARM
|
||||
#elif defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
|
||||
#error archfound aarch64
|
||||
#elif defined(__arm__) || defined(__arm) || defined(_M_ARM) || defined(__TARGET_ARCH_ARM)
|
||||
#if defined(__ARM64_ARCH_8__) || defined(__ARMv8__) || defined(__ARMv8_A__)
|
||||
#error archfound armv8
|
||||
#elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
|
||||
#error archfound armv7
|
||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6M__)
|
||||
#error archfound armv6
|
||||
#elif defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
|
||||
#error archfound armv5
|
||||
#elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARCH_5E__)
|
||||
#error archfound armv4
|
||||
#elif defined(__ARM_ARCH_3__) || defined(__TARGET_ARCH_3M__)
|
||||
#error archfound armv3
|
||||
#elif defined(__ARM_ARCH_2__)
|
||||
#error archfound armv2
|
||||
#endif
|
||||
|
||||
// PowerPC
|
||||
#elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__)
|
||||
#if defined(__64BIT__) || defined(__powerpc64__) || defined(__ppc64__)
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
#error archfound powerpc64le
|
||||
#else
|
||||
#error archfound powerpc64
|
||||
#endif
|
||||
#else
|
||||
#error archfound powerpc
|
||||
#endif
|
||||
|
||||
// --------------- Less common architectures alphabetically below ---------------
|
||||
|
||||
// ALPHA
|
||||
#elif defined(__alpha__) || defined(__alpha)
|
||||
#error archfound alpha
|
||||
|
||||
// Blackfin
|
||||
#elif defined(__BFIN__)
|
||||
#error archfound blackfin
|
||||
|
||||
// Itanium
|
||||
#elif defined(__ia64) || defined(_M_IA64)
|
||||
#error archfound ia64
|
||||
|
||||
// MIPS
|
||||
#elif defined(__mips__) || defined(__mips)
|
||||
#error archfound mips
|
||||
|
||||
// Motorola 68000-series
|
||||
#elif defined(__m68k__)
|
||||
#error archfound m68k
|
||||
|
||||
// SuperH
|
||||
#elif defined(__sh__)
|
||||
#error archfound sh
|
||||
|
||||
// SPARC
|
||||
#elif defined(__sparc__) || defined(__sparc)
|
||||
#if defined(__sparcv9) || defined(__sparc_v9__)
|
||||
#error archfound sparc9
|
||||
#elif defined(__sparcv8) || defined(__sparc_v8__)
|
||||
#error archfound sparc8
|
||||
#endif
|
||||
|
||||
// SystemZ
|
||||
#elif defined(__370__)
|
||||
#error archfound s370
|
||||
#elif defined(__s390__)
|
||||
#error archfound s390
|
||||
#elif defined(__s390x) || defined(__zarch__)
|
||||
#error archfound s390x
|
||||
|
||||
// PARISC
|
||||
#elif defined(__hppa__)
|
||||
#error archfound parisc
|
||||
|
||||
// RS-6000
|
||||
#elif defined(__THW_RS6000)
|
||||
#error archfound rs6000
|
||||
|
||||
// RISC-V
|
||||
#elif defined(__riscv)
|
||||
#if __riscv_xlen == 64
|
||||
#error archfound riscv64
|
||||
#elif __riscv_xlen == 32
|
||||
#error archfound riscv32
|
||||
#endif
|
||||
|
||||
// LOONGARCH
|
||||
#elif defined(__loongarch_lp64)
|
||||
#error archfound loongarch64
|
||||
|
||||
// Emscripten (WebAssembly)
|
||||
#elif defined(__EMSCRIPTEN__)
|
||||
#error archfound wasm32
|
||||
|
||||
// return 'unrecognized' if we do not know what architecture this is
|
||||
#else
|
||||
#error archfound unrecognized
|
||||
#endif
|
||||
104
third_party/zlib-ng/cmake/detect-arch.cmake
vendored
Normal file
104
third_party/zlib-ng/cmake/detect-arch.cmake
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
# detect-arch.cmake -- Detect compiler architecture and set ARCH and BASEARCH
|
||||
# Copyright (C) 2019 Hans Kristian Rosbach
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
set(ARCHDETECT_FOUND TRUE)
|
||||
|
||||
if(CMAKE_OSX_ARCHITECTURES)
|
||||
# If multiple architectures are requested (universal build), pick only the first
|
||||
list(GET CMAKE_OSX_ARCHITECTURES 0 ARCH)
|
||||
elseif(MSVC)
|
||||
if("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86")
|
||||
set(ARCH "i686")
|
||||
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "x64")
|
||||
set(ARCH "x86_64")
|
||||
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM" OR "${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARMV7")
|
||||
set(ARCH "arm")
|
||||
elseif ("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM64" OR "${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM64EC")
|
||||
set(ARCH "aarch64")
|
||||
endif()
|
||||
elseif(EMSCRIPTEN)
|
||||
set(ARCH "wasm32")
|
||||
elseif(CMAKE_CROSSCOMPILING)
|
||||
set(ARCH ${CMAKE_C_COMPILER_TARGET})
|
||||
else()
|
||||
# Let preprocessor parse archdetect.c and raise an error containing the arch identifier
|
||||
enable_language(C)
|
||||
try_run(
|
||||
run_result_unused
|
||||
compile_result_unused
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_LIST_DIR}/detect-arch.c
|
||||
COMPILE_OUTPUT_VARIABLE RAWOUTPUT
|
||||
CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
# Find basearch tag, and extract the arch word into BASEARCH variable
|
||||
string(REGEX REPLACE ".*archfound ([a-zA-Z0-9_]+).*" "\\1" ARCH "${RAWOUTPUT}")
|
||||
if(NOT ARCH)
|
||||
set(ARCH unknown)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Make sure we have ARCH set
|
||||
if(NOT ARCH OR ARCH STREQUAL "unknown")
|
||||
set(ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
||||
message(STATUS "Arch not recognized, falling back to cmake arch: '${ARCH}'")
|
||||
else()
|
||||
message(STATUS "Arch detected: '${ARCH}'")
|
||||
endif()
|
||||
|
||||
# Base arch detection
|
||||
if("${ARCH}" MATCHES "(x86_64|AMD64|i[3-6]86)")
|
||||
set(BASEARCH "x86")
|
||||
set(BASEARCH_X86_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "(arm(v[0-9])?|aarch64|cortex)")
|
||||
set(BASEARCH "arm")
|
||||
set(BASEARCH_ARM_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "ppc(64(le)?)?|powerpc(64(le)?)?")
|
||||
set(BASEARCH "ppc")
|
||||
set(BASEARCH_PPC_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "alpha")
|
||||
set(BASEARCH "alpha")
|
||||
set(BASEARCH_ALPHA_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "blackfin")
|
||||
set(BASEARCH "blackfin")
|
||||
set(BASEARCH_BLACKFIN_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "ia64")
|
||||
set(BASEARCH "ia64")
|
||||
set(BASEARCH_IA64_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "mips")
|
||||
set(BASEARCH "mips")
|
||||
set(BASEARCH_MIPS_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "m68k")
|
||||
set(BASEARCH "m68k")
|
||||
set(BASEARCH_M68K_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "sh")
|
||||
set(BASEARCH "sh")
|
||||
set(BASEARCH_SH_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "sparc[89]?")
|
||||
set(BASEARCH "sparc")
|
||||
set(BASEARCH_SPARC_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "s3[679]0x?")
|
||||
set(BASEARCH "s360")
|
||||
set(BASEARCH_S360_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "parisc")
|
||||
set(BASEARCH "parisc")
|
||||
set(BASEARCH_PARISC_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "rs6000")
|
||||
set(BASEARCH "rs6000")
|
||||
set(BASEARCH_RS6000_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "riscv(32|64)")
|
||||
set(BASEARCH "riscv")
|
||||
set(BASEARCH_RISCV_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "loongarch64")
|
||||
set(BASEARCH "loongarch")
|
||||
set(BASEARCH_LOONGARCH_FOUND TRUE)
|
||||
elseif("${ARCH}" MATCHES "wasm32")
|
||||
set(BASEARCH "wasm32")
|
||||
set(BASEARCH_WASM32_FOUND TRUE)
|
||||
else()
|
||||
set(BASEARCH "x86")
|
||||
set(BASEARCH_X86_FOUND TRUE)
|
||||
message(STATUS "Basearch '${ARCH}' not recognized, defaulting to 'x86'.")
|
||||
endif()
|
||||
message(STATUS "Basearch of '${ARCH}' has been detected as: '${BASEARCH}'")
|
||||
46
third_party/zlib-ng/cmake/detect-coverage.cmake
vendored
Normal file
46
third_party/zlib-ng/cmake/detect-coverage.cmake
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# detect-coverage.cmake -- Detect supported compiler coverage flags
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
macro(add_code_coverage)
|
||||
# Check for -coverage flag support for Clang/GCC
|
||||
if(CMAKE_VERSION VERSION_LESS 3.14)
|
||||
set(CMAKE_REQUIRED_LIBRARIES -lgcov)
|
||||
else()
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS -coverage)
|
||||
endif()
|
||||
check_c_compiler_flag(-coverage HAVE_COVERAGE)
|
||||
set(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS)
|
||||
|
||||
if(HAVE_COVERAGE)
|
||||
add_compile_options(-coverage)
|
||||
add_link_options(-coverage)
|
||||
message(STATUS "Code coverage enabled using: -coverage")
|
||||
else()
|
||||
# Some versions of GCC don't support -coverage shorthand
|
||||
if(CMAKE_VERSION VERSION_LESS 3.14)
|
||||
set(CMAKE_REQUIRED_LIBRARIES -lgcov)
|
||||
else()
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS -lgcov -fprofile-arcs)
|
||||
endif()
|
||||
check_c_compiler_flag("-ftest-coverage -fprofile-arcs -fprofile-values" HAVE_TEST_COVERAGE)
|
||||
set(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS)
|
||||
|
||||
if(HAVE_TEST_COVERAGE)
|
||||
add_compile_options(-ftest-coverage -fprofile-arcs -fprofile-values)
|
||||
add_link_options(-lgcov -fprofile-arcs)
|
||||
message(STATUS "Code coverage enabled using: -ftest-coverage")
|
||||
else()
|
||||
message(WARNING "Compiler does not support code coverage")
|
||||
set(WITH_CODE_COVERAGE OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Set optimization level to zero for code coverage builds
|
||||
if (WITH_CODE_COVERAGE)
|
||||
# Use CMake compiler flag variables due to add_compile_options failure on Windows GCC
|
||||
set(CMAKE_C_FLAGS "-O0 ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "-O0 ${CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
endmacro()
|
||||
43
third_party/zlib-ng/cmake/detect-install-dirs.cmake
vendored
Normal file
43
third_party/zlib-ng/cmake/detect-install-dirs.cmake
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# detect-install-dirs.cmake -- Detect install directory parameters
|
||||
# Copyright (C) 2021 Hans Kristian Rosbach
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
# Determine installation directory for executables
|
||||
if (DEFINED BIN_INSTALL_DIR)
|
||||
set(BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" CACHE PATH "Installation directory for executables (Deprecated)" FORCE)
|
||||
set(CMAKE_INSTALL_BINDIR "${BIN_INSTALL_DIR}")
|
||||
elseif (DEFINED INSTALL_BIN_DIR)
|
||||
set(CMAKE_INSTALL_BINDIR "${INSTALL_BIN_DIR}")
|
||||
endif()
|
||||
|
||||
# Determine installation directory for libraries
|
||||
if (DEFINED LIB_INSTALL_DIR)
|
||||
set(LIB_INSTALL_DIR "${LIB_INSTALL_DIR}" CACHE PATH "Installation directory for libraries (Deprecated)" FORCE)
|
||||
set(CMAKE_INSTALL_LIBDIR "${LIB_INSTALL_DIR}")
|
||||
elseif (DEFINED INSTALL_LIB_DIR)
|
||||
set(CMAKE_INSTALL_LIBDIR "${INSTALL_LIB_DIR}")
|
||||
endif()
|
||||
|
||||
# Determine installation directory for include files
|
||||
if (DEFINED INC_INSTALL_DIR)
|
||||
set(INC_INSTALL_DIR "${INC_INSTALL_DIR}" CACHE PATH "Installation directory for headers (Deprecated)" FORCE)
|
||||
set(CMAKE_INSTALL_INCLUDEDIR "${INC_INSTALL_DIR}")
|
||||
elseif (DEFINED INSTALL_INC_DIR)
|
||||
set(CMAKE_INSTALL_INCLUDEDIR "${INSTALL_INC_DIR}")
|
||||
endif()
|
||||
|
||||
# Define GNU standard installation directories
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Determine installation directory for pkgconfig files
|
||||
if (DEFINED PKGCONFIG_INSTALL_DIR)
|
||||
set(PKGCONFIG_INSTALL_DIR "${PKGCONFIG_INSTALL_DIR}" CACHE PATH "Installation directory for pkgconfig (.pc) files" FORCE)
|
||||
elseif (DEFINED INSTALL_PKGCONFIG_DIR)
|
||||
set(PKGCONFIG_INSTALL_DIR "${INSTALL_PKGCONFIG_DIR}" CACHE PATH "Installation directory for pkgconfig (.pc) files" FORCE)
|
||||
elseif (DEFINED CMAKE_INSTALL_PKGCONFIGDIR)
|
||||
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_PKGCONFIGDIR}" CACHE PATH "Installation directory for pkgconfig (.pc) files" FORCE)
|
||||
elseif (DEFINED CMAKE_INSTALL_FULL_PKGCONFIGDIR)
|
||||
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_FULL_PKGCONFIGDIR}" CACHE PATH "Installation directory for pkgconfig (.pc) files" FORCE)
|
||||
else()
|
||||
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
|
||||
endif()
|
||||
604
third_party/zlib-ng/cmake/detect-intrinsics.cmake
vendored
Normal file
604
third_party/zlib-ng/cmake/detect-intrinsics.cmake
vendored
Normal file
@@ -0,0 +1,604 @@
|
||||
# detect-intrinsics.cmake -- Detect compiler intrinsics support
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
macro(check_acle_compiler_flag)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
check_c_compiler_flag("-march=armv8-a+crc" HAVE_MARCH_ARMV8_CRC)
|
||||
if(HAVE_MARCH_ARMV8_CRC)
|
||||
set(ACLEFLAG "-march=armv8-a+crc" CACHE INTERNAL "Compiler option to enable ACLE support")
|
||||
else()
|
||||
check_c_compiler_flag("-march=armv8-a+crc+simd" HAVE_MARCH_ARMV8_CRC_SIMD)
|
||||
if(HAVE_MARCH_ARMV8_CRC_SIMD)
|
||||
set(ACLEFLAG "-march=armv8-a+crc+simd" CACHE INTERNAL "Compiler option to enable ACLE support")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports ARMv8 CRC intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${ACLEFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#if defined(_MSC_VER)
|
||||
#include <intrin.h>
|
||||
#else
|
||||
#include <arm_acle.h>
|
||||
#endif
|
||||
unsigned int f(unsigned int a, unsigned int b) {
|
||||
return __crc32w(a, b);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_ACLE_FLAG
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_armv6_compiler_flag)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
check_c_compiler_flag("-march=armv6" HAVE_MARCH_ARMV6)
|
||||
if(HAVE_MARCH_ARMV6)
|
||||
set(ARMV6FLAG "-march=armv6" CACHE INTERNAL "Compiler option to enable ARMv6 support")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports ARMv6 inline asm
|
||||
set(CMAKE_REQUIRED_FLAGS "${ARMV6FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"unsigned int f(unsigned int a, unsigned int b) {
|
||||
unsigned int c;
|
||||
__asm__ __volatile__ ( \"uqsub16 %0, %1, %2\" : \"=r\" (c) : \"r\" (a), \"r\" (b) );
|
||||
return (int)c;
|
||||
}
|
||||
int main(void) { return f(1,2); }"
|
||||
HAVE_ARMV6_INLINE_ASM
|
||||
)
|
||||
# Check whether compiler supports ARMv6 intrinsics
|
||||
check_c_source_compiles(
|
||||
"#if defined(_MSC_VER)
|
||||
#include <intrin.h>
|
||||
#else
|
||||
#include <arm_acle.h>
|
||||
#endif
|
||||
unsigned int f(unsigned int a, unsigned int b) {
|
||||
#if defined(_MSC_VER)
|
||||
return _arm_uqsub16(a, b);
|
||||
#else
|
||||
return __uqsub16(a, b);
|
||||
#endif
|
||||
}
|
||||
int main(void) { return f(1,2); }"
|
||||
HAVE_ARMV6_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_avx512_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE)
|
||||
set(AVX512FLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mbmi2")
|
||||
else()
|
||||
set(AVX512FLAG "/arch:AVX512")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
# For CPUs that can benefit from AVX512, it seems GCC generates suboptimal
|
||||
# instruction scheduling unless you specify a reasonable -mtune= target
|
||||
set(AVX512FLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mbmi2")
|
||||
if(NOT MSVC)
|
||||
check_c_compiler_flag("-mtune=cascadelake" HAVE_CASCADE_LAKE)
|
||||
if(HAVE_CASCADE_LAKE)
|
||||
set(AVX512FLAG "${AVX512FLAG} -mtune=cascadelake")
|
||||
else()
|
||||
set(AVX512FLAG "${AVX512FLAG} -mtune=skylake-avx512")
|
||||
endif()
|
||||
unset(HAVE_CASCADE_LAKE)
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
set(AVX512FLAG "/arch:AVX512")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports AVX512 intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${AVX512FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
__m512i f(__m512i y) {
|
||||
__m512i x = _mm512_set1_epi8(2);
|
||||
return _mm512_sub_epi8(x, y);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_AVX512_INTRIN
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(check_avx512vnni_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE OR CMAKE_C_COMPILER_ID MATCHES "IntelLLVM")
|
||||
set(AVX512VNNIFLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni -mbmi2")
|
||||
else()
|
||||
set(AVX512VNNIFLAG "/arch:AVX512")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(AVX512VNNIFLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni -mbmi2")
|
||||
if(NOT MSVC)
|
||||
check_c_compiler_flag("-mtune=cascadelake" HAVE_CASCADE_LAKE)
|
||||
if(HAVE_CASCADE_LAKE)
|
||||
set(AVX512VNNIFLAG "${AVX512VNNIFLAG} -mtune=cascadelake")
|
||||
else()
|
||||
set(AVX512VNNIFLAG "${AVX512VNNIFLAG} -mtune=skylake-avx512")
|
||||
endif()
|
||||
unset(HAVE_CASCADE_LAKE)
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
set(AVX512VNNIFLAG "/arch:AVX512")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports AVX512vnni intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${AVX512VNNIFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
__m512i f(__m512i x, __m512i y) {
|
||||
__m512i z = _mm512_setzero_epi32();
|
||||
return _mm512_dpbusd_epi32(z, x, y);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_AVX512VNNI_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_avx2_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE)
|
||||
set(AVX2FLAG "-mavx2 -mbmi2")
|
||||
else()
|
||||
set(AVX2FLAG "/arch:AVX2")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(AVX2FLAG "-mavx2 -mbmi2")
|
||||
elseif(MSVC)
|
||||
set(AVX2FLAG "/arch:AVX2")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports AVX2 intrinics
|
||||
set(CMAKE_REQUIRED_FLAGS "${AVX2FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
__m256i f(__m256i x) {
|
||||
const __m256i y = _mm256_set1_epi16(1);
|
||||
return _mm256_subs_epu16(x, y);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_AVX2_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_neon_compiler_flag)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if("${ARCH}" MATCHES "aarch64")
|
||||
set(NEONFLAG "-march=armv8-a+simd")
|
||||
else()
|
||||
set(NEONFLAG "-mfpu=neon")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports NEON flag
|
||||
set(CMAKE_REQUIRED_FLAGS "${NEONFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#if defined(_M_ARM64) || defined(_M_ARM64EC)
|
||||
# include <arm64_neon.h>
|
||||
#else
|
||||
# include <arm_neon.h>
|
||||
#endif
|
||||
int main() { return 0; }"
|
||||
NEON_AVAILABLE FAIL_REGEX "not supported")
|
||||
# Check whether compiler native flag is enough for NEON support
|
||||
# Some GCC versions don't enable FPU (vector unit) when using -march=native
|
||||
if(NEON_AVAILABLE AND NATIVEFLAG AND (NOT "${ARCH}" MATCHES "aarch64"))
|
||||
check_c_source_compiles(
|
||||
"#include <arm_neon.h>
|
||||
uint8x16_t f(uint8x16_t x, uint8x16_t y) {
|
||||
return vaddq_u8(x, y);
|
||||
}
|
||||
int main(int argc, char* argv[]) {
|
||||
uint8x16_t a = vdupq_n_u8(argc);
|
||||
uint8x16_t b = vdupq_n_u8(argc);
|
||||
uint8x16_t result = f(a, b);
|
||||
return result[0];
|
||||
}"
|
||||
ARM_NEON_SUPPORT_NATIVE
|
||||
)
|
||||
if(NOT ARM_NEON_SUPPORT_NATIVE)
|
||||
set(CMAKE_REQUIRED_FLAGS "${NATIVEFLAG} -mfpu=neon ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <arm_neon.h>
|
||||
uint8x16_t f(uint8x16_t x, uint8x16_t y) {
|
||||
return vaddq_u8(x, y);
|
||||
}
|
||||
int main(int argc, char* argv[]) {
|
||||
uint8x16_t a = vdupq_n_u8(argc);
|
||||
uint8x16_t b = vdupq_n_u8(argc);
|
||||
uint8x16_t result = f(a, b);
|
||||
return result[0];
|
||||
}"
|
||||
ARM_NEON_SUPPORT_NATIVE_MFPU
|
||||
)
|
||||
if(ARM_NEON_SUPPORT_NATIVE_MFPU)
|
||||
set(NEONFLAG "-mfpu=neon")
|
||||
else()
|
||||
# Remove local NEON_AVAILABLE variable and overwrite the cache
|
||||
unset(NEON_AVAILABLE)
|
||||
set(NEON_AVAILABLE "" CACHE INTERNAL "NEON support available" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_neon_ld4_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if("${ARCH}" MATCHES "aarch64")
|
||||
set(NEONFLAG "-march=armv8-a+simd")
|
||||
else()
|
||||
set(NEONFLAG "-mfpu=neon")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports loading 4 neon vecs into a register range
|
||||
set(CMAKE_REQUIRED_FLAGS "${NEONFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#if defined(_MSC_VER) && (defined(_M_ARM64) || defined(_M_ARM64EC))
|
||||
# include <arm64_neon.h>
|
||||
#else
|
||||
# include <arm_neon.h>
|
||||
#endif
|
||||
int32x4x4_t f(int var[16]) { return vld1q_s32_x4(var); }
|
||||
int main(void) { return 0; }"
|
||||
NEON_HAS_LD4)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_pclmulqdq_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "IntelLLVM")
|
||||
set(PCLMULFLAG "-mpclmul")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports PCLMULQDQ intrinsics
|
||||
if(NOT (APPLE AND "${ARCH}" MATCHES "i386"))
|
||||
# The pclmul code currently crashes on Mac in 32bit mode. Avoid for now.
|
||||
set(CMAKE_REQUIRED_FLAGS "${PCLMULFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
#include <wmmintrin.h>
|
||||
__m128i f(__m128i a, __m128i b) { return _mm_clmulepi64_si128(a, b, 0x10); }
|
||||
int main(void) { return 0; }"
|
||||
HAVE_PCLMULQDQ_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
else()
|
||||
set(HAVE_PCLMULQDQ_INTRIN OFF)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(check_vpclmulqdq_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "IntelLLVM")
|
||||
set(VPCLMULFLAG "-mvpclmulqdq -mavx512f")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports VPCLMULQDQ intrinsics
|
||||
if(NOT (APPLE AND "${ARCH}" MATCHES "i386"))
|
||||
set(CMAKE_REQUIRED_FLAGS "${VPCLMULFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
#include <wmmintrin.h>
|
||||
__m512i f(__m512i a) {
|
||||
__m512i b = _mm512_setzero_si512();
|
||||
return _mm512_clmulepi64_epi128(a, b, 0x10);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_VPCLMULQDQ_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
else()
|
||||
set(HAVE_VPCLMULQDQ_INTRIN OFF)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(check_ppc_intrinsics)
|
||||
# Check if compiler supports AltiVec
|
||||
set(CMAKE_REQUIRED_FLAGS "-maltivec ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <altivec.h>
|
||||
int main(void)
|
||||
{
|
||||
vector int a = vec_splats(0);
|
||||
vector int b = vec_splats(0);
|
||||
a = vec_add(a, b);
|
||||
return 0;
|
||||
}"
|
||||
HAVE_ALTIVEC
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
|
||||
if(HAVE_ALTIVEC)
|
||||
set(PPCFLAGS "-maltivec")
|
||||
endif()
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS "-maltivec -mno-vsx ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <altivec.h>
|
||||
int main(void)
|
||||
{
|
||||
vector int a = vec_splats(0);
|
||||
vector int b = vec_splats(0);
|
||||
a = vec_add(a, b);
|
||||
return 0;
|
||||
}"
|
||||
HAVE_NOVSX
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
|
||||
if(HAVE_NOVSX)
|
||||
set(PPCFLAGS "${PPCFLAGS} -mno-vsx")
|
||||
endif()
|
||||
|
||||
# Check if we have what we need for AltiVec optimizations
|
||||
set(CMAKE_REQUIRED_FLAGS "${PPCFLAGS} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/cpu.h>
|
||||
#endif
|
||||
int main() {
|
||||
#ifdef __FreeBSD__
|
||||
unsigned long hwcap;
|
||||
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
|
||||
return (hwcap & PPC_FEATURE_HAS_ALTIVEC);
|
||||
#else
|
||||
return (getauxval(AT_HWCAP) & PPC_FEATURE_HAS_ALTIVEC);
|
||||
#endif
|
||||
}"
|
||||
HAVE_VMX
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_power8_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(POWER8FLAG "-mcpu=power8")
|
||||
endif()
|
||||
endif()
|
||||
# Check if we have what we need for POWER8 optimizations
|
||||
set(CMAKE_REQUIRED_FLAGS "${POWER8FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/cpu.h>
|
||||
#endif
|
||||
int main() {
|
||||
#ifdef __FreeBSD__
|
||||
unsigned long hwcap;
|
||||
elf_aux_info(AT_HWCAP2, &hwcap, sizeof(hwcap));
|
||||
return (hwcap & PPC_FEATURE2_ARCH_2_07);
|
||||
#else
|
||||
return (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_2_07);
|
||||
#endif
|
||||
}"
|
||||
HAVE_POWER8_INTRIN
|
||||
)
|
||||
if(NOT HAVE_POWER8_INTRIN AND HAVE_LINUX_AUXVEC_H)
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#include <linux/auxvec.h>
|
||||
int main() {
|
||||
return (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_2_07);
|
||||
}"
|
||||
HAVE_POWER8_INTRIN2
|
||||
)
|
||||
if(HAVE_POWER8_INTRIN2)
|
||||
set(POWER8_NEED_AUXVEC_H 1)
|
||||
set(HAVE_POWER8_INTRIN ${HAVE_POWER8_INTRIN2} CACHE INTERNAL "Have POWER8 intrinsics" FORCE)
|
||||
unset(HAVE_POWER8_INTRIN2 CACHE)
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_rvv_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(RISCVFLAG "-march=rv64gcv")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports RVV
|
||||
set(CMAKE_REQUIRED_FLAGS "${RISCVFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <riscv_vector.h>
|
||||
int main() {
|
||||
return 0;
|
||||
}"
|
||||
HAVE_RVV_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_s390_intrinsics)
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#ifndef HWCAP_S390_VXRS
|
||||
#define HWCAP_S390_VXRS (1 << 11)
|
||||
#endif
|
||||
int main() {
|
||||
return (getauxval(AT_HWCAP) & HWCAP_S390_VXRS);
|
||||
}"
|
||||
HAVE_S390_INTRIN
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(check_power9_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(POWER9FLAG "-mcpu=power9")
|
||||
endif()
|
||||
endif()
|
||||
# Check if we have what we need for POWER9 optimizations
|
||||
set(CMAKE_REQUIRED_FLAGS "${POWER9FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/cpu.h>
|
||||
#endif
|
||||
int main() {
|
||||
#ifdef __FreeBSD__
|
||||
unsigned long hwcap;
|
||||
elf_aux_info(AT_HWCAP2, &hwcap, sizeof(hwcap));
|
||||
return (hwcap & PPC_FEATURE2_ARCH_3_00);
|
||||
#else
|
||||
return (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_3_00);
|
||||
#endif
|
||||
}"
|
||||
HAVE_POWER9_INTRIN
|
||||
)
|
||||
if(NOT HAVE_POWER9_INTRIN AND HAVE_LINUX_AUXVEC_H)
|
||||
check_c_source_compiles(
|
||||
"#include <sys/auxv.h>
|
||||
#include <linux/auxvec.h>
|
||||
int main() {
|
||||
return (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_3_00);
|
||||
}"
|
||||
HAVE_POWER9_INTRIN2
|
||||
)
|
||||
if(HAVE_POWER9_INTRIN2)
|
||||
set(POWER9_NEED_AUXVEC_H 1)
|
||||
set(HAVE_POWER9_INTRIN ${HAVE_POWER9_INTRIN2} CACHE INTERNAL "Have POWER9 intrinsics" FORCE)
|
||||
unset(HAVE_POWER9_INTRIN2 CACHE)
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_sse2_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE)
|
||||
set(SSE2FLAG "-msse2")
|
||||
else()
|
||||
set(SSE2FLAG "/arch:SSE2")
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
if(NOT "${ARCH}" MATCHES "x86_64")
|
||||
set(SSE2FLAG "/arch:SSE2")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(SSE2FLAG "-msse2")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports SSE2 intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${SSE2FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
__m128i f(__m128i x, __m128i y) { return _mm_sad_epu8(x, y); }
|
||||
int main(void) { return 0; }"
|
||||
HAVE_SSE2_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_ssse3_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE)
|
||||
set(SSSE3FLAG "-mssse3")
|
||||
else()
|
||||
set(SSSE3FLAG "/arch:SSSE3")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(SSSE3FLAG "-mssse3")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports SSSE3 intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${SSSE3FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <immintrin.h>
|
||||
__m128i f(__m128i u) {
|
||||
__m128i v = _mm_set1_epi32(1);
|
||||
return _mm_hadd_epi32(u, v);
|
||||
}
|
||||
int main(void) { return 0; }"
|
||||
HAVE_SSSE3_INTRIN
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(check_sse42_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
if(CMAKE_HOST_UNIX OR APPLE)
|
||||
set(SSE42FLAG "-msse4.2")
|
||||
else()
|
||||
set(SSE42FLAG "/arch:SSE4.2")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(SSE42FLAG "-msse4.2")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports SSE4.2 intrinsics
|
||||
set(CMAKE_REQUIRED_FLAGS "${SSE42FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <nmmintrin.h>
|
||||
unsigned int f(unsigned int a, unsigned int b) { return _mm_crc32_u32(a, b); }
|
||||
int main(void) { return 0; }"
|
||||
HAVE_SSE42_INTRIN
|
||||
)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_vgfma_intrinsics)
|
||||
if(NOT NATIVEFLAG)
|
||||
set(VGFMAFLAG "-march=z13")
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
set(VGFMAFLAG "${VGFMAFLAG} -mzarch")
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(VGFMAFLAG "${VGFMAFLAG} -fzvector")
|
||||
endif()
|
||||
endif()
|
||||
# Check whether compiler supports "VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE" intrinsic
|
||||
set(CMAKE_REQUIRED_FLAGS "${VGFMAFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#include <vecintrin.h>
|
||||
int main(void) {
|
||||
unsigned long long a __attribute__((vector_size(16))) = { 0 };
|
||||
unsigned long long b __attribute__((vector_size(16))) = { 0 };
|
||||
unsigned char c __attribute__((vector_size(16))) = { 0 };
|
||||
c = vec_gfmsum_accum_128(a, b, c);
|
||||
return c[0];
|
||||
}"
|
||||
HAVE_VGFMA_INTRIN FAIL_REGEX "not supported")
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
|
||||
macro(check_xsave_intrinsics)
|
||||
if(NOT NATIVEFLAG AND NOT MSVC AND NOT CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
set(XSAVEFLAG "-mxsave")
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS "${XSAVEFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
|
||||
check_c_source_compiles(
|
||||
"#ifdef _MSC_VER
|
||||
# include <intrin.h>
|
||||
#elif __GNUC__ == 8 && __GNUC_MINOR__ > 1
|
||||
# include <xsaveintrin.h>
|
||||
#else
|
||||
# include <immintrin.h>
|
||||
#endif
|
||||
unsigned int f(unsigned int a) { return (int) _xgetbv(a); }
|
||||
int main(void) { return 0; }"
|
||||
HAVE_XSAVE_INTRIN FAIL_REGEX "not supported")
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
endmacro()
|
||||
157
third_party/zlib-ng/cmake/detect-sanitizer.cmake
vendored
Normal file
157
third_party/zlib-ng/cmake/detect-sanitizer.cmake
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
# detect-sanitizer.cmake -- Detect supported compiler sanitizer flags
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
macro(add_common_sanitizer_flags)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options(-g3)
|
||||
endif()
|
||||
check_c_compiler_flag(-fno-omit-frame-pointer HAVE_NO_OMIT_FRAME_POINTER)
|
||||
if(HAVE_NO_OMIT_FRAME_POINTER)
|
||||
add_compile_options(-fno-omit-frame-pointer)
|
||||
add_link_options(-fno-omit-frame-pointer)
|
||||
endif()
|
||||
check_c_compiler_flag(-fno-optimize-sibling-calls HAVE_NO_OPTIMIZE_SIBLING_CALLS)
|
||||
if(HAVE_NO_OPTIMIZE_SIBLING_CALLS)
|
||||
add_compile_options(-fno-optimize-sibling-calls)
|
||||
add_link_options(-fno-optimize-sibling-calls)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(check_sanitizer_support known_checks supported_checks)
|
||||
set(available_checks "")
|
||||
|
||||
# Build list of supported sanitizer flags by incrementally trying compilation with
|
||||
# known sanitizer checks
|
||||
|
||||
foreach(check ${known_checks})
|
||||
if(available_checks STREQUAL "")
|
||||
set(compile_checks "${check}")
|
||||
else()
|
||||
set(compile_checks "${available_checks},${check}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS -fsanitize=${compile_checks})
|
||||
|
||||
check_c_source_compiles("int main() { return 0; }" HAVE_SANITIZER_${check}
|
||||
FAIL_REGEX "not supported|unrecognized command|unknown option")
|
||||
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
|
||||
if(HAVE_SANITIZER_${check})
|
||||
set(available_checks ${compile_checks})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(${supported_checks} ${available_checks})
|
||||
endmacro()
|
||||
|
||||
macro(add_address_sanitizer)
|
||||
set(known_checks
|
||||
address
|
||||
pointer-compare
|
||||
pointer-subtract
|
||||
)
|
||||
|
||||
check_sanitizer_support("${known_checks}" supported_checks)
|
||||
if(NOT ${supported_checks} STREQUAL "")
|
||||
message(STATUS "Address sanitizer is enabled: ${supported_checks}")
|
||||
add_compile_options(-fsanitize=${supported_checks})
|
||||
add_link_options(-fsanitize=${supported_checks})
|
||||
add_common_sanitizer_flags()
|
||||
else()
|
||||
message(STATUS "Address sanitizer is not supported")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING_EMULATOR)
|
||||
# Only check for leak sanitizer if not cross-compiling due to qemu crash
|
||||
message(WARNING "Leak sanitizer is not supported when cross compiling")
|
||||
else()
|
||||
# Leak sanitizer requires address sanitizer
|
||||
check_sanitizer_support("leak" supported_checks)
|
||||
if(NOT ${supported_checks} STREQUAL "")
|
||||
message(STATUS "Leak sanitizer is enabled: ${supported_checks}")
|
||||
add_compile_options(-fsanitize=${supported_checks})
|
||||
add_link_options(-fsanitize=${supported_checks})
|
||||
add_common_sanitizer_flags()
|
||||
else()
|
||||
message(STATUS "Leak sanitizer is not supported")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_memory_sanitizer)
|
||||
check_sanitizer_support("memory" supported_checks)
|
||||
if(NOT ${supported_checks} STREQUAL "")
|
||||
message(STATUS "Memory sanitizer is enabled: ${supported_checks}")
|
||||
add_compile_options(-fsanitize=${supported_checks})
|
||||
add_link_options(-fsanitize=${supported_checks})
|
||||
add_common_sanitizer_flags()
|
||||
|
||||
check_c_compiler_flag(-fsanitize-memory-track-origins HAVE_MEMORY_TRACK_ORIGINS)
|
||||
if(HAVE_MEMORY_TRACK_ORIGINS)
|
||||
add_compile_options(-fsanitize-memory-track-origins)
|
||||
add_link_options(-fsanitize-memory-track-origins)
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Memory sanitizer is not supported")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_thread_sanitizer)
|
||||
check_sanitizer_support("thread" supported_checks)
|
||||
if(NOT ${supported_checks} STREQUAL "")
|
||||
message(STATUS "Thread sanitizer is enabled: ${supported_checks}")
|
||||
add_compile_options(-fsanitize=${supported_checks})
|
||||
add_link_options(-fsanitize=${supported_checks})
|
||||
add_common_sanitizer_flags()
|
||||
else()
|
||||
message(STATUS "Thread sanitizer is not supported")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_undefined_sanitizer)
|
||||
set(known_checks
|
||||
alignment
|
||||
array-bounds
|
||||
bool
|
||||
bounds
|
||||
builtin
|
||||
enum
|
||||
float-cast-overflow
|
||||
float-divide-by-zero
|
||||
function
|
||||
integer-divide-by-zero
|
||||
local-bounds
|
||||
null
|
||||
nonnull-attribute
|
||||
pointer-overflow
|
||||
return
|
||||
returns-nonnull-attribute
|
||||
shift
|
||||
shift-base
|
||||
shift-exponent
|
||||
signed-integer-overflow
|
||||
undefined
|
||||
unsigned-integer-overflow
|
||||
unsigned-shift-base
|
||||
vla-bound
|
||||
vptr
|
||||
)
|
||||
|
||||
# Object size sanitizer has no effect at -O0 and produces compiler warning if enabled
|
||||
if(NOT CMAKE_C_FLAGS MATCHES "-O0")
|
||||
list(APPEND known_checks object-size)
|
||||
endif()
|
||||
|
||||
check_sanitizer_support("${known_checks}" supported_checks)
|
||||
|
||||
if(NOT ${supported_checks} STREQUAL "")
|
||||
message(STATUS "Undefined behavior sanitizer is enabled: ${supported_checks}")
|
||||
add_compile_options(-fsanitize=${supported_checks})
|
||||
add_link_options(-fsanitize=${supported_checks})
|
||||
|
||||
add_common_sanitizer_flags()
|
||||
else()
|
||||
message(STATUS "Undefined behavior sanitizer is not supported")
|
||||
endif()
|
||||
endmacro()
|
||||
19
third_party/zlib-ng/cmake/fallback-macros.cmake
vendored
Normal file
19
third_party/zlib-ng/cmake/fallback-macros.cmake
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# fallback-macros.cmake -- CMake fallback macros
|
||||
# Copyright (C) 2022 Nathan Moinvaziri
|
||||
# Licensed under the Zlib license, see LICENSE.md for details
|
||||
|
||||
# CMake less than version 3.5.2
|
||||
if(NOT COMMAND add_compile_options)
|
||||
macro(add_compile_options options)
|
||||
string(APPEND CMAKE_C_FLAGS ${options})
|
||||
string(APPEND CMAKE_CXX_FLAGS ${options})
|
||||
endmacro()
|
||||
endif()
|
||||
|
||||
# CMake less than version 3.14
|
||||
if(NOT COMMAND add_link_options)
|
||||
macro(add_link_options options)
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS ${options})
|
||||
string(APPEND CMAKE_SHARED_LINKER_FLAGS ${options})
|
||||
endmacro()
|
||||
endif()
|
||||
24
third_party/zlib-ng/cmake/toolchain-aarch64.cmake
vendored
Normal file
24
third_party/zlib-ng/cmake/toolchain-aarch64.cmake
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET "aarch64-linux-gnu")
|
||||
set(CMAKE_CXX_COMPILER_TARGET "aarch64-linux-gnu")
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
29
third_party/zlib-ng/cmake/toolchain-arm.cmake
vendored
Normal file
29
third_party/zlib-ng/cmake/toolchain-arm.cmake
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
if(NOT DEFINED CMAKE_C_COMPILER_TARGET)
|
||||
set(CMAKE_C_COMPILER_TARGET arm-linux-gnueabi)
|
||||
endif()
|
||||
if(NOT DEFINED CMAKE_CXX_COMPILER_TARGET)
|
||||
set(CMAKE_CXX_COMPILER_TARGET arm-linux-gnueabi)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-arm -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
25
third_party/zlib-ng/cmake/toolchain-armhf.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-armhf.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET arm-linux-gnueabihf)
|
||||
set(CMAKE_CXX_COMPILER_TARGET arm-linux-gnueabihf)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-arm -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-aarch64.cmake
vendored
Normal file
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-aarch64.cmake
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_C_COMPILER_FRONTEND_VARIANT GNU)
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET aarch64-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET aarch64-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET aarch64-w64-mingw32)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
# Required to propagate 'LLVM_MINGW_ROOT' variables to C compiler feature test.
|
||||
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES LLVM_MINGW_ROOT)
|
||||
|
||||
if(NOT LLVM_MINGW_ROOT)
|
||||
set(LLVM_MINGW_ROOT $ENV{LLVM_MINGW_ROOT})
|
||||
endif()
|
||||
cmake_path(CONVERT "${LLVM_MINGW_ROOT}" TO_CMAKE_PATH_LIST LLVM_MINGW_ROOT)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT} ${LLVM_MINGW_ROOT}/aarch64-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ALWAYS)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-clang HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Compiler for ${CMAKE_C_COMPILER_TARGET} not found. Try setting llvm-mingw root path to LLVM_MINGW_ROOT variable!")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH ${CMAKE_CXX_COMPILER_TARGET}-clang++ HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH ${CMAKE_RC_COMPILER_TARGET}-windres HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-gcodeview>)
|
||||
add_link_options(-Wl,-pdb=)
|
||||
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-armv7.cmake
vendored
Normal file
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-armv7.cmake
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_C_COMPILER_FRONTEND_VARIANT GNU)
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET armv7-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET armv7-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET armv7-w64-mingw32)
|
||||
set(CMAKE_SYSTEM_PROCESSOR armv7)
|
||||
|
||||
# Required to propagate 'LLVM_MINGW_ROOT' variables to C compiler feature test.
|
||||
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES LLVM_MINGW_ROOT)
|
||||
|
||||
if(NOT LLVM_MINGW_ROOT)
|
||||
set(LLVM_MINGW_ROOT $ENV{LLVM_MINGW_ROOT})
|
||||
endif()
|
||||
cmake_path(CONVERT "${LLVM_MINGW_ROOT}" TO_CMAKE_PATH_LIST LLVM_MINGW_ROOT)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT} ${LLVM_MINGW_ROOT}/armv7-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ALWAYS)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-clang HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Compiler for ${CMAKE_C_COMPILER_TARGET} not found. Try setting llvm-mingw root path to LLVM_MINGW_ROOT variable!")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH ${CMAKE_CXX_COMPILER_TARGET}-clang++ HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH ${CMAKE_RC_COMPILER_TARGET}-windres HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-gcodeview>)
|
||||
add_link_options(-Wl,-pdb=)
|
||||
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-i686.cmake
vendored
Normal file
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-i686.cmake
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_C_COMPILER_FRONTEND_VARIANT GNU)
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET i686-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET i686-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET i686-w64-mingw32)
|
||||
set(CMAKE_SYSTEM_PROCESSOR i686)
|
||||
|
||||
# Required to propagate 'LLVM_MINGW_ROOT' variables to C compiler feature test.
|
||||
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES LLVM_MINGW_ROOT)
|
||||
|
||||
if(NOT LLVM_MINGW_ROOT)
|
||||
set(LLVM_MINGW_ROOT $ENV{LLVM_MINGW_ROOT})
|
||||
endif()
|
||||
cmake_path(CONVERT "${LLVM_MINGW_ROOT}" TO_CMAKE_PATH_LIST LLVM_MINGW_ROOT)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT} ${LLVM_MINGW_ROOT}/i686-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ALWAYS)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-clang HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Compiler for ${CMAKE_C_COMPILER_TARGET} not found. Try setting llvm-mingw root path to LLVM_MINGW_ROOT variable!")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH ${CMAKE_CXX_COMPILER_TARGET}-clang++ HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH ${CMAKE_RC_COMPILER_TARGET}-windres HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-gcodeview>)
|
||||
add_link_options(-Wl,-pdb=)
|
||||
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-x86_64.cmake
vendored
Normal file
41
third_party/zlib-ng/cmake/toolchain-llvm-mingw-x86_64.cmake
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_C_COMPILER_FRONTEND_VARIANT GNU)
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
|
||||
# Required to propagate 'LLVM_MINGW_ROOT' variables to C compiler feature test.
|
||||
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES LLVM_MINGW_ROOT)
|
||||
|
||||
if(NOT LLVM_MINGW_ROOT)
|
||||
set(LLVM_MINGW_ROOT $ENV{LLVM_MINGW_ROOT})
|
||||
endif()
|
||||
cmake_path(CONVERT "${LLVM_MINGW_ROOT}" TO_CMAKE_PATH_LIST LLVM_MINGW_ROOT)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT} ${LLVM_MINGW_ROOT}/x86_64-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ALWAYS)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-clang HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Compiler for ${CMAKE_C_COMPILER_TARGET} not found. Try setting llvm-mingw root path to LLVM_MINGW_ROOT variable!")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH ${CMAKE_CXX_COMPILER_TARGET}-clang++ HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH ${CMAKE_RC_COMPILER_TARGET}-windres HINTS ${LLVM_MINGW_ROOT}/bin)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-gcodeview>)
|
||||
add_link_options(-Wl,-pdb=)
|
||||
35
third_party/zlib-ng/cmake/toolchain-mingw-i686.cmake
vendored
Normal file
35
third_party/zlib-ng/cmake/toolchain-mingw-i686.cmake
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET i686-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET i686-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET i686-w64-mingw32)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
# Prefer posix gcc variant for gtest pthread support
|
||||
find_program(C_COMPILER_FULL_PATH NAMES
|
||||
${CMAKE_C_COMPILER_TARGET}-gcc-posix
|
||||
${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES
|
||||
${CMAKE_CXX_COMPILER_TARGET}-g++-posix
|
||||
${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH NAMES
|
||||
${CMAKE_RC_COMPILER_TARGET}-windres)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
34
third_party/zlib-ng/cmake/toolchain-mingw-x86_64.cmake
vendored
Normal file
34
third_party/zlib-ng/cmake/toolchain-mingw-x86_64.cmake
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
set(CMAKE_CXX_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
set(CMAKE_RC_COMPILER_TARGET x86_64-w64-mingw32)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR wine)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
# Prefer posix gcc variant for gtest pthread support
|
||||
find_program(C_COMPILER_FULL_PATH NAMES
|
||||
${CMAKE_C_COMPILER_TARGET}-gcc-posix
|
||||
${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES
|
||||
${CMAKE_CXX_COMPILER_TARGET}-g++-posix
|
||||
${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
|
||||
find_program(RC_COMPILER_FULL_PATH NAMES ${CMAKE_RC_COMPILER_TARGET}-windres)
|
||||
if(RC_COMPILER_FULL_PATH)
|
||||
set(CMAKE_RC_COMPILER ${RC_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
29
third_party/zlib-ng/cmake/toolchain-mips.cmake
vendored
Normal file
29
third_party/zlib-ng/cmake/toolchain-mips.cmake
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR mips)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
if(NOT DEFINED CMAKE_C_COMPILER_TARGET)
|
||||
set(CMAKE_C_COMPILER_TARGET mips-linux-gnu)
|
||||
endif()
|
||||
if(NOT DEFINED CMAKE_CXX_COMPILER_TARGET)
|
||||
set(CMAKE_CXX_COMPILER_TARGET mips-linux-gnu)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-mips -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
29
third_party/zlib-ng/cmake/toolchain-mips64.cmake
vendored
Normal file
29
third_party/zlib-ng/cmake/toolchain-mips64.cmake
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR mips64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
if(NOT DEFINED CMAKE_C_COMPILER_TARGET)
|
||||
set(CMAKE_C_COMPILER_TARGET mips64-linux-gnuabi64)
|
||||
endif()
|
||||
if(NOT DEFINED CMAKE_CXX_COMPILER_TARGET)
|
||||
set(CMAKE_CXX_COMPILER_TARGET mips64-linux-gnuabi64)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-mips64 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
25
third_party/zlib-ng/cmake/toolchain-powerpc.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-powerpc.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR powerpc)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc -cpu 7400 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
16
third_party/zlib-ng/cmake/toolchain-powerpc64-clang.cmake
vendored
Normal file
16
third_party/zlib-ng/cmake/toolchain-powerpc64-clang.cmake
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER clang)
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER clang++)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64 -cpu power9 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
25
third_party/zlib-ng/cmake/toolchain-powerpc64-power9.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-powerpc64-power9.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64 -cpu power9 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
25
third_party/zlib-ng/cmake/toolchain-powerpc64.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-powerpc64.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64 -cpu power8 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
16
third_party/zlib-ng/cmake/toolchain-powerpc64le-clang.cmake
vendored
Normal file
16
third_party/zlib-ng/cmake/toolchain-powerpc64le-clang.cmake
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER clang)
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER clang++)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64le -cpu power9 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
25
third_party/zlib-ng/cmake/toolchain-powerpc64le-power9.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-powerpc64le-power9.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64le -cpu power9 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
25
third_party/zlib-ng/cmake/toolchain-powerpc64le.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-powerpc64le.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET powerpc64le-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-ppc64le -cpu power8 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
28
third_party/zlib-ng/cmake/toolchain-riscv.cmake
vendored
Normal file
28
third_party/zlib-ng/cmake/toolchain-riscv.cmake
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "riscv64")
|
||||
|
||||
# Avoid to use system path for cross-compile
|
||||
set(CMAKE_FIND_USE_CMAKE_SYSTEM_PATH FALSE)
|
||||
|
||||
set(TOOLCHAIN_PATH "" CACHE STRING "The toolchain path.")
|
||||
if(NOT TOOLCHAIN_PATH)
|
||||
set(TOOLCHAIN_PATH ${CMAKE_SOURCE_DIR}/prebuilt-riscv-toolchain-qemu/riscv-clang)
|
||||
endif()
|
||||
|
||||
set(TOOLCHAIN_PREFIX "riscv64-unknown-linux-gnu-" CACHE STRING "The toolchain prefix.")
|
||||
set(QEMU_PATH "" CACHE STRING "The qemu path.")
|
||||
if(NOT QEMU_PATH)
|
||||
set(QEMU_PATH ${CMAKE_SOURCE_DIR}/prebuilt-riscv-toolchain-qemu/riscv-qemu/bin/qemu-riscv64)
|
||||
endif()
|
||||
|
||||
# toolchain setting
|
||||
set(CMAKE_C_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}clang")
|
||||
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}clang++")
|
||||
|
||||
# disable auto-vectorizer
|
||||
add_compile_options(-fno-vectorize -fno-slp-vectorize)
|
||||
|
||||
# emulator setting
|
||||
set(QEMU_CPU_OPTION "rv64,zba=true,zbb=true,zbc=true,zbs=true,v=true,vlen=512,elen=64,vext_spec=v1.0")
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR ${QEMU_PATH} -cpu ${QEMU_CPU_OPTION} -L ${TOOLCHAIN_PATH}/sysroot/)
|
||||
25
third_party/zlib-ng/cmake/toolchain-s390x.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-s390x.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR s390x)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET s390x-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET s390x-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-s390x -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
25
third_party/zlib-ng/cmake/toolchain-sparc64.cmake
vendored
Normal file
25
third_party/zlib-ng/cmake/toolchain-sparc64.cmake
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR sparc64)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET sparc64-linux-gnu)
|
||||
set(CMAKE_CXX_COMPILER_TARGET sparc64-linux-gnu)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR qemu-sparc64 -L /usr/${CMAKE_C_COMPILER_TARGET}/)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
find_program(C_COMPILER_FULL_PATH NAMES ${CMAKE_C_COMPILER_TARGET}-gcc)
|
||||
if(NOT C_COMPILER_FULL_PATH)
|
||||
message(FATAL_ERROR "Cross-compiler for ${CMAKE_C_COMPILER_TARGET} not found")
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH})
|
||||
|
||||
find_program(CXX_COMPILER_FULL_PATH NAMES g++-${CMAKE_CXX_COMPILER_TARGET} ${CMAKE_CXX_COMPILER_TARGET}-g++)
|
||||
if(CXX_COMPILER_FULL_PATH)
|
||||
set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH})
|
||||
endif()
|
||||
Reference in New Issue
Block a user