mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 08:13:04 +04:00
Merge branch 4.x
This commit is contained in:
@@ -48,32 +48,23 @@ if(NOT DEFINED ARM_LINUX_SYSROOT AND DEFINED GNU_MACHINE)
|
||||
set(ARM_LINUX_SYSROOT /usr/${GNU_MACHINE}${FLOAT_ABI_SUFFIX})
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "" CACHE INTERNAL "")
|
||||
set(CMAKE_C_FLAGS "" CACHE INTERNAL "")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "" CACHE INTERNAL "")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "" CACHE INTERNAL "")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "" CACHE INTERNAL "")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm)
|
||||
set(CMAKE_CXX_FLAGS "-mthumb ${CMAKE_CXX_FLAGS}")
|
||||
set(CMAKE_C_FLAGS "-mthumb ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,nocopyreloc")
|
||||
# == Compiler flags
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm)
|
||||
set(CMAKE_CXX_FLAGS_INIT "-mthumb")
|
||||
set(CMAKE_C_FLAGS_INIT "-mthumb")
|
||||
set(common_ld_opt "-Wl,--fix-cortex-a8")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "${common_ld_opt}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_INIT "${common_ld_opt}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_INIT "${common_ld_opt} -Wl,-z,nocopyreloc")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/flags-aarch64.cmake")
|
||||
if(COMMAND ocv_set_platform_flags)
|
||||
ocv_set_platform_flags(CMAKE_CXX_FLAGS_INIT)
|
||||
ocv_set_platform_flags(CMAKE_C_FLAGS_INIT)
|
||||
endif()
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm)
|
||||
set(ARM_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
|
||||
set(ARM_LINKER_FLAGS "-Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||
endif()
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
|
||||
else()
|
||||
#message(WARNING "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}' is defined")
|
||||
endif()
|
||||
|
||||
|
||||
if(USE_NEON)
|
||||
message(WARNING "You use obsolete variable USE_NEON to enable NEON instruction set. Use -DENABLE_NEON=ON instead." )
|
||||
set(ENABLE_NEON TRUE)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# see https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html#index-march
|
||||
function(ocv_set_platform_flags VAR)
|
||||
unset(flags)
|
||||
if(ENABLE_BF16)
|
||||
set(flags "${flags}+bf16")
|
||||
endif()
|
||||
if(ENABLE_DOTPROD)
|
||||
set(flags "${flags}+dotprod")
|
||||
endif()
|
||||
if(ENABLE_FP16)
|
||||
set(flags "${flags}+fp16")
|
||||
endif()
|
||||
if(DEFINED ENABLE_NEON AND NOT ENABLE_NEON)
|
||||
set(flags "${flags}+nosimd")
|
||||
endif()
|
||||
if(flags)
|
||||
set(${VAR} "-march=armv8.2-a${flags}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -0,0 +1,9 @@
|
||||
# see https://gcc.gnu.org/onlinedocs/gcc/RISC-V-Options.html#index-march-14
|
||||
function(ocv_set_platform_flags VAR)
|
||||
if(ENABLE_RVV OR RISCV_RVV_SCALABLE)
|
||||
set(flags "-march=rv64gcv")
|
||||
else()
|
||||
set(flags "-march=rv64gc")
|
||||
endif()
|
||||
set(${VAR} "${flags}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -10,16 +10,12 @@ set(CMAKE_C_COMPILER ${RISCV_GCC_INSTALL_ROOT}/bin/riscv64-linux-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${RISCV_GCC_INSTALL_ROOT}/bin/riscv64-linux-g++)
|
||||
|
||||
# fix toolchain macro
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__ANDES=1")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__ANDES=1")
|
||||
|
||||
# enable rvp
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=rv64gc -mext-dsp")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=rv64gc -mext-dsp")
|
||||
set(CMAKE_C_FLAGS_INIT "-march=rv64gc -mext-dsp -D__ANDES=1")
|
||||
set(CMAKE_CXX_FLAGS_INIT "-march=rv64gc -mext-dsp -D__ANDES=1")
|
||||
|
||||
# fix segment address
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Ttext-segment=0x50000")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Ttext-segment=0x50000")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,-Ttext-segment=0x50000")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-Wl,-Ttext-segment=0x50000")
|
||||
|
||||
@@ -17,8 +17,13 @@ set(CMAKE_ASM_COMPILER_TARGET ${CLANG_TARGET_TRIPLE})
|
||||
# Don't run the linker on compiler check
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(CMAKE_C_FLAGS "-march=rv64gc --gcc-toolchain=${RISCV_GCC_INSTALL_ROOT} -w ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "-march=rv64gc --gcc-toolchain=${RISCV_GCC_INSTALL_ROOT} -w ${CMAKE_CXX_FLAGS}")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/flags-riscv64.cmake")
|
||||
if(COMMAND ocv_set_platform_flags)
|
||||
ocv_set_platform_flags(CMAKE_CXX_FLAGS_INIT)
|
||||
ocv_set_platform_flags(CMAKE_C_FLAGS_INIT)
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} --gcc-toolchain=${RISCV_GCC_INSTALL_ROOT} -w")
|
||||
set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} --gcc-toolchain=${RISCV_GCC_INSTALL_ROOT} -w")
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv64)
|
||||
set(GNU_MACHINE riscv64-unknown-linux-gnu CACHE STRING "GNU compiler triple")
|
||||
|
||||
if(NOT DEFINED CMAKE_CXX_FLAGS) # guards toolchain multiple calls
|
||||
set(CMAKE_C_FLAGS "-march=rv64gc")
|
||||
set(CMAKE_CXX_FLAGS "-march=rv64gc")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/flags-riscv64.cmake")
|
||||
if(COMMAND ocv_set_platform_flags)
|
||||
ocv_set_platform_flags(CMAKE_CXX_FLAGS_INIT)
|
||||
ocv_set_platform_flags(CMAKE_C_FLAGS_INIT)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/riscv-gnu.toolchain.cmake")
|
||||
|
||||
Reference in New Issue
Block a user