Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
941d89e0
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
941d89e0
编写于
12月 05, 2022
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cmake: fix RISC-V toolchains
- RVV options are moved to configuration scripts instead of toolchains
上级
b16f76ee
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
86 addition
and
48 deletion
+86
-48
cmake/OpenCVCompilerOptimizations.cmake
cmake/OpenCVCompilerOptimizations.cmake
+13
-5
modules/core/include/opencv2/core/hal/intrin.hpp
modules/core/include/opencv2/core/hal/intrin.hpp
+5
-4
platforms/linux/riscv-gnu.toolchain.cmake
platforms/linux/riscv-gnu.toolchain.cmake
+60
-0
platforms/linux/riscv64-clang.toolchain.cmake
platforms/linux/riscv64-clang.toolchain.cmake
+2
-9
platforms/linux/riscv64-gcc.toolchain.cmake
platforms/linux/riscv64-gcc.toolchain.cmake
+6
-25
platforms/linux/riscv64-gnu.toolchain.cmake
platforms/linux/riscv64-gnu.toolchain.cmake
+0
-5
未找到文件。
cmake/OpenCVCompilerOptimizations.cmake
浏览文件 @
941d89e0
...
...
@@ -20,6 +20,9 @@
# VSX (always available on Power8)
# VSX3 (always available on Power9)
# RISC-V arch:
# RVV
# CPU_{opt}_SUPPORTED=ON/OFF - compiler support (possibly with additional flag)
# CPU_{opt}_IMPLIES=<list>
# CPU_{opt}_FORCE=<list> - subset of "implies" list
...
...
@@ -104,8 +107,6 @@ ocv_optimization_process_obsolete_option(ENABLE_NEON NEON OFF)
ocv_optimization_process_obsolete_option
(
ENABLE_VSX VSX ON
)
ocv_optimization_process_obsolete_option
(
ENABLE_RVV RVV OFF
)
macro
(
ocv_is_optimization_in_list resultvar check_opt
)
set
(
__checked
""
)
set
(
__queue
${
ARGN
}
)
...
...
@@ -375,11 +376,18 @@ elseif(PPC64LE)
set
(
CPU_BASELINE
"VSX"
CACHE STRING
"
${
HELP_CPU_BASELINE
}
"
)
elseif
(
RISCV
)
option
(
RISCV_RVV_SCALABLE
"Use scalable RVV API on RISC-V"
ON
)
ocv_update
(
CPU_RVV_TEST_FILE
"
${
OpenCV_SOURCE_DIR
}
/cmake/checks/cpu_rvv.cpp"
)
ocv_update
(
CPU_KNOWN_OPTIMIZATIONS
"RVV"
)
ocv_update
(
CPU_RVV_FLAGS_ON
""
)
set
(
CPU_DISPATCH
"RVV"
CACHE STRING
"
${
HELP_CPU_DISPATCH
}
"
)
set
(
CPU_BASELINE
"RVV"
CACHE STRING
"
${
HELP_CPU_BASELINE
}
"
)
ocv_update
(
CPU_RVV_FLAGS_ON
"-march=rv64gcv"
)
if
(
RISCV_RVV_SCALABLE
)
set
(
CPU_RVV_FLAGS_ON
"
${
CPU_RVV_FLAGS_ON
}
-DCV_RVV_SCALABLE"
)
endif
()
ocv_update
(
CPU_RVV_FLAGS_CONFLICT
"-march=[^ ]*"
)
set
(
CPU_DISPATCH
""
CACHE STRING
"
${
HELP_CPU_DISPATCH
}
"
)
set
(
CPU_BASELINE
"DETECT"
CACHE STRING
"
${
HELP_CPU_BASELINE
}
"
)
elseif
(
LOONGARCH64
)
ocv_update
(
CPU_LASX_TEST_FILE
"
${
OpenCV_SOURCE_DIR
}
/cmake/checks/cpu_lasx.cpp"
)
...
...
modules/core/include/opencv2/core/hal/intrin.hpp
浏览文件 @
941d89e0
...
...
@@ -235,11 +235,12 @@ using namespace CV_CPU_OPTIMIZATION_HAL_NAMESPACE;
#elif CV_WASM_SIMD && !defined(CV_FORCE_SIMD128_CPP)
#include "opencv2/core/hal/intrin_wasm.hpp"
#elif CV_RVV && !defined(CV_FORCE_SIMD128_CPP) && !defined(CV_RVV_SCALABLE)
#include "opencv2/core/hal/intrin_rvv.hpp"
#elif CV_RVV && !defined(CV_FORCE_SIMD128_CPP) && CV_RVV_SCALABLE
#elif CV_RVV && !defined(CV_FORCE_SIMD128_CPP)
#if defined(CV_RVV_SCALABLE)
#include "opencv2/core/hal/intrin_rvv_scalable.hpp"
#else
#include "opencv2/core/hal/intrin_rvv.hpp"
#endif
#elif CV_LASX
#if !defined(CV_FORCE_SIMD128_CPP)
...
...
platforms/linux/riscv.toolchain.cmake
→
platforms/linux/riscv
-gnu
.toolchain.cmake
浏览文件 @
941d89e0
cmake_minimum_required
(
VERSION 3.5
)
if
(
COMMAND toolchain_save_config
)
return
()
# prevent recursive call
endif
()
set
(
CMAKE_SYSTEM_NAME Linux
)
set
(
CMAKE_SYSTEM_VERSION 1
)
if
(
NOT DEFINED CMAKE_SYSTEM_PROCESSOR
)
set
(
CMAKE_SYSTEM_PROCESSOR riscv64
)
else
()
#message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
endif
()
include
(
"
${
CMAKE_CURRENT_LIST_DIR
}
/gnu.toolchain.cmake"
)
MESSAGE
(
STATUS
"Debug: CMAKE_C_COMPILER:
${
CMAKE_C_COMPILER
}
"
)
if
(
NOT
"x
${
GCC_COMPILER_VERSION
}
"
STREQUAL
"x"
)
set
(
__GCC_VER_SUFFIX
"-
${
GCC_COMPILER_VERSION
}
"
)
endif
()
if
(
NOT DEFINED GNU_MACHINE
)
set
(
GNU_MACHINE riscv64-unknown-linux-gnu CACHE STRING
"GNU compiler triple"
)
endif
()
if
(
NOT DEFINED TOOLCHAIN_COMPILER_LOCATION_HINT
)
set
(
TOOLCHAIN_COMPILER_LOCATION_HINT PATHS /opt/riscv/bin ENV PATH
)
endif
()
if
(
NOT DEFINED CMAKE_C_COMPILER
)
MESSAGE
(
"Looking for compler..
${
GNU_MACHINE
}
-gcc
${
__GCC_VER_SUFFIX
}
"
)
find_program
(
CMAKE_C_COMPILER NAMES
${
GNU_MACHINE
}
-gcc
${
__GCC_VER_SUFFIX
}
)
find_program
(
CMAKE_C_COMPILER NAMES
${
GNU_MACHINE
}
-gcc
${
__GCC_VER_SUFFIX
}
${
TOOLCHAIN_COMPILER_LOCATION_HINT
}
)
else
()
#message(WARNING "CMAKE_C_COMPILER=${CMAKE_C_COMPILER} is defined")
endif
()
if
(
NOT DEFINED CMAKE_CXX_COMPILER
)
find_program
(
CMAKE_CXX_COMPILER NAMES
${
GNU_MACHINE
}
-g++
${
__GCC_VER_SUFFIX
}
)
find_program
(
CMAKE_CXX_COMPILER NAMES
${
GNU_MACHINE
}
-g++
${
__GCC_VER_SUFFIX
}
${
TOOLCHAIN_COMPILER_LOCATION_HINT
}
)
else
()
#message(WARNING "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} is defined")
endif
()
if
(
NOT DEFINED CMAKE_LINKER
)
find_program
(
CMAKE_LINKER NAMES
${
GNU_MACHINE
}
-ld
${
__GCC_VER_SUFFIX
}
${
GNU_MACHINE
}
-ld
)
find_program
(
CMAKE_LINKER NAMES
${
GNU_MACHINE
}
-ld
${
__GCC_VER_SUFFIX
}
${
GNU_MACHINE
}
-ld
${
TOOLCHAIN_COMPILER_LOCATION_HINT
}
)
else
()
#message(WARNING "CMAKE_LINKER=${CMAKE_LINKER} is defined")
endif
()
if
(
NOT DEFINED CMAKE_AR
)
find_program
(
CMAKE_AR NAMES
${
GNU_MACHINE
}
-ar
${
__GCC_VER_SUFFIX
}
${
GNU_MACHINE
}
-ar
)
find_program
(
CMAKE_AR NAMES
${
GNU_MACHINE
}
-ar
${
__GCC_VER_SUFFIX
}
${
GNU_MACHINE
}
-ar
${
TOOLCHAIN_COMPILER_LOCATION_HINT
}
)
else
()
#message(WARNING "CMAKE_AR=${CMAKE_AR} is defined")
endif
()
if
(
NOT DEFINED RISCV_LINUX_SYSROOT AND DEFINED GNU_MACHINE
)
set
(
RISCV_LINUX_SYSROOT /usr/
${
GNU_MACHINE
}
)
endif
()
if
(
NOT DEFINED CMAKE_CXX_FLAGS
)
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"
)
set
(
CMAKE_EXE_LINKER_FLAGS
"
${
CMAKE_EXE_LINKER_FLAGS
}
-Wl,-z,nocopyreloc"
)
set
(
RISCV_LINKER_FLAGS
"-Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now"
)
set
(
CMAKE_SHARED_LINKER_FLAGS
"
${
RISCV_LINKER_FLAGS
}
${
CMAKE_SHARED_LINKER_FLAGS
}
"
)
set
(
CMAKE_MODULE_LINKER_FLAGS
"
${
RISCV_LINKER_FLAGS
}
${
CMAKE_MODULE_LINKER_FLAGS
}
"
)
set
(
CMAKE_EXE_LINKER_FLAGS
"
${
RISCV_LINKER_FLAGS
}
${
CMAKE_EXE_LINKER_FLAGS
}
"
)
else
()
message
(
STATUS
"User provided flags are used instead of defaults"
)
if
(
NOT DEFINED RISCV_SYSROOT
)
get_filename_component
(
_base_dir
${
CMAKE_C_COMPILER
}
DIRECTORY
)
get_filename_component
(
_base_dir
${
_base_dir
}
DIRECTORY
)
set
(
RISCV_SYSROOT
${
_base_dir
}
/sysroot CACHE PATH
"RISC-V sysroot"
)
endif
()
set
(
CMAKE_FIND_ROOT_PATH
${
CMAKE_FIND_ROOT_PATH
}
${
RISCV_LINUX_SYSROOT
}
)
set
(
CMAKE_SYSROOT
"
${
RISCV_SYSROOT
}
"
)
set
(
CMAKE_FIND_ROOT_PATH
${
CMAKE_FIND_ROOT_PATH
}
${
RISCV_SYSROOT
}
)
set
(
TOOLCHAIN_CONFIG_VARS
${
TOOLCHAIN_CONFIG_VARS
}
RISCV_
LINUX_
SYSROOT
RISCV_SYSROOT
)
toolchain_save_config
()
platforms/linux/riscv64-clang.toolchain.cmake
浏览文件 @
941d89e0
...
...
@@ -17,15 +17,8 @@ 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=rv64gcv --gcc-toolchain=
${
RISCV_GCC_INSTALL_ROOT
}
-w
${
CMAKE_C_FLAGS
}
"
)
set
(
CMAKE_CXX_FLAGS
"-march=rv64gcv --gcc-toolchain=
${
RISCV_GCC_INSTALL_ROOT
}
-w
${
CXX_FLAGS
}
"
)
set
(
CMAKE_C_FLAGS_RELEASE
"
${
CMAKE_C_FLAGS_RELEASE
}
-O2"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
CMAKE_CXX_FLAGS_RELEASE
}
-O2"
)
OPTION
(
RISCV_RVV_SCALABLE
"Use scalable RVV API on RISC-V"
ON
)
# Enabled by default
IF
(
RISCV_RVV_SCALABLE
)
ADD_DEFINITIONS
(
-DCV_RVV_SCALABLE
)
ENDIF
()
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
${
CXX_FLAGS
}
"
)
set
(
CMAKE_FIND_ROOT_PATH
${
CMAKE_SYSROOT
}
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER
)
...
...
platforms/linux/riscv64-gcc.toolchain.cmake
浏览文件 @
941d89e0
set
(
CMAKE_SYSTEM_NAME Linux
)
set
(
CMAKE_SYSTEM_PROCESSOR riscv64
)
set
(
CMAKE_SYSTEM_VERSION 1
)
set
(
GNU_MACHINE riscv64-unknown-linux-gnu CACHE STRING
"GNU compiler triple"
)
if
(
NOT DEFINED CMAKE_C
_COMPILER
)
find_program
(
CMAKE_C_COMPILER NAMES riscv64-unknown-linux-gnu-gcc
PATHS /opt/riscv/bin ENV PATH
)
if
(
NOT DEFINED CMAKE_C
XX_FLAGS
)
# guards toolchain multiple calls
set
(
CMAKE_C_FLAGS
"-march=rv64gc"
)
set
(
CMAKE_CXX_FLAGS
"-march=rv64gc"
)
endif
()
if
(
NOT DEFINED CMAKE_CXX_COMPILER
)
find_program
(
CMAKE_CXX_COMPILER NAMES riscv64-unknown-linux-gnu-g++
PATHS /opt/riscv/bin ENV PATH
)
endif
()
get_filename_component
(
RISCV_GCC_INSTALL_ROOT
${
CMAKE_C_COMPILER
}
DIRECTORY
)
get_filename_component
(
RISCV_GCC_INSTALL_ROOT
${
RISCV_GCC_INSTALL_ROOT
}
DIRECTORY
)
set
(
CMAKE_SYSROOT
${
RISCV_GCC_INSTALL_ROOT
}
/sysroot CACHE PATH
"RISC-V sysroot"
)
# Don't run the linker on compiler check
set
(
CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY
)
set
(
CMAKE_C_FLAGS
"-march=rv64gcv_zfh
${
CMAKE_C_FLAGS
}
"
)
set
(
CMAKE_CXX_FLAGS
"-march=rv64gcv_zfh
${
CXX_FLAGS
}
"
)
set
(
CMAKE_FIND_ROOT_PATH
${
CMAKE_SYSROOT
}
)
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
)
\ No newline at end of file
include
(
"
${
CMAKE_CURRENT_LIST_DIR
}
/riscv-gnu.toolchain.cmake"
)
platforms/linux/riscv64-gnu.toolchain.cmake
已删除
100644 → 0
浏览文件 @
b16f76ee
set
(
CMAKE_SYSTEM_PROCESSOR riscv64
)
set
(
GNU_MACHINE riscv64-linux-gnu CACHE STRING
"GNU compiler triple"
)
set
(
GCC_COMPILER_VERSION
""
CACHE STRING
"GCC Compiler version"
)
include
(
"
${
CMAKE_CURRENT_LIST_DIR
}
/riscv.toolchain.cmake"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录