Add qnx.toolchain.cmake
As an invoke example of build for qnx, create build/qnx-build.sh with contents:
#!/bin/bash
export QNX_HOST=/home/zz/soft/qnx700_sdp/host/linux/x86_64
export QNX_TARGET=/home/zz/soft/qnx700_sdp/target/qnx7
BUILD_DIR=qnx
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../.. \
-G Ninja \
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/qnx.toolchain.cmake
cmake --build .
The build of ncnn with qnx toolchain success.
Potential issue when integrating more code:
People may suffer POSIX functions like "access()" is not recognized issue. The solution is to define _QNX_SOURCE macro.
Related document pages:
http://www.qnx.com/developers/docs/qnxcar2/index.jsp?topic=%2Fcom.qnx.doc.neutrino.prog%2Ftopic%2Fdevel_ConformingToStandards.html
https://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.utilities/topic/q/qcc.html
Codecov Report
Merging #4213 (4ff66b8) into master (5eb56b2) will not change coverage. The diff coverage is
n/a.
@@ Coverage Diff @@
## master #4213 +/- ##
=======================================
Coverage 94.44% 94.44%
=======================================
Files 750 750
Lines 179180 179180
=======================================
Hits 169222 169222
Misses 9958 9958
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
Hello, Threre.
DId you verify this QNX patch in ncnn git? I can't find the verification result on it
Thanks.
@skyhblue
I don't understand the word "verify" and "verification result". Did you find any other platform's "verification result" in "ncnn git"?
@zchrissirhcz
I am trying to compile your patch on the ncnn git. but it makes the error at the last linking stage like the attached. qnx_build_error.txt Could you please help me to utilize your patch?
@skyhblue So your question is, there is linking error for the target benchncnn with your QNX toolchain?
I've re-compiled with my QNX toolchain, it can link successfully, see it from the attached file:
@zchrissirhcz Hi, Did you change the CMakeLists.txt for compiling QNX ?
@Stephenfang51 I did not change CMakeLists.txt when compile for QNX. If I have to do customization, I'll put them in the qnx-build.sh script. As you see the pasted script above(and I just tried again it links ok), I just specified ninja and CMAKE_TOOLCHAIN_FILE.
@Stephenfang51 I did not change CMakeLists.txt when compile for QNX. If I have to do customization, I'll put them in the
qnx-build.shscript. As you see the pasted script above(and I just tried again it links ok), I just specifiedninjaandCMAKE_TOOLCHAIN_FILE.
Thanks for the reply, is ninja necessary for compile ? In my case, the target platform always x86 like below (that's why i wonder if you modified the CMakelists.txt
-- NCNN_VERSION_STRING = 1.0.20221123
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
CMake Warning at CMakeLists.txt:473 (message):
The compiler does not support avx extension. NCNN_AVX will be OFF.
-- Target arch: x86
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND)
-- Configuring done
-- Generating done
@Stephenfang51
Full logs
The ncnn repo's commit I use:
git log --pretty=oneline -n 1
47c4ab7394b6d4a93d9d73c84fb083de27a2c46c (HEAD -> master, upstream/master) add example project link (#4365)
The content of build/qnx-build.sh is:
#!/bin/bash
export QNX_HOST=/home/zz/soft/qnx700_sdp/host/linux/x86_64
export QNX_TARGET=/home/zz/soft/qnx700_sdp/target/qnx7
BUILD_DIR=qnx2
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../.. \
-G Ninja \
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/qnx.toolchain.cmake
#cmake --build .
The full output when running build/qnx-build.sh (note I just comment out the build step, only keep cmake configuration step):
-- CMAKE_TOOLCHAIN_FILE = /home/zz/work/github/ncnn/toolchains/qnx.toolchain.cmake
-- CMAKE_INSTALL_PREFIX = /home/zz/work/github/ncnn/build/qnx2/install
-- NCNN_VERSION_STRING = 1.0.20221123
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/zz/soft/qnx700_sdp/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-gcc-5.4.0 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/zz/soft/qnx700_sdp/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM - Failed
CMake Warning at CMakeLists.txt:201 (message):
The compiler does not support arm vfpv4. NCNN_VFPV4 will be OFF.
CMake Warning at CMakeLists.txt:270 (message):
The compiler does not support armv8.2 fp16. NCNN_ARM82 will be OFF.
-- Target arch: arm
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND)
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zz/work/github/ncnn/build/qnx2
Is ninja required?
On Linux/macOSX, using make is OK. I prefer ninja due to its fast speed for compilation.
Why it prints x86
I suggest use same git commit of ncnn, then just place this PR provided qnx.toolchain.cmake file to toolchains directory, and put the build/qnx-build.sh file and run it.
@zchrissirhcz Thanks for the quick reply
why did you comment out the build step?
The x86 platfrom problem solved, just forgot to add set(CMAKE_SYSTEM_PROCESSOR arm)
but still got the following
[165/165] Linking CXX executable benchmark/benchncnn
FAILED: benchmark/benchncnn
: && /home/fangliwei/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++ -O3 -DNDEBUG benchmark/CMakeFiles/benchncnn.dir/benchncnn.cpp.o -o benchmark/benchncnn src/libncnn.a && :
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(batchnorm_arm.cpp.o): in function `ncnn::BatchNorm_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
batchnorm_arm.cpp:(.text+0x3ec): undefined reference to `ncnn::BatchNorm_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: batchnorm_arm.cpp:(.text+0x698): undefined reference to `ncnn::BatchNorm_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x85e8): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack1to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x8c88): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack1to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to1_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x927c): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to1_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x9948): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack8to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xa918): undefined reference to `ncnn::im2col_sgemm_pack8to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack1to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xaf14): undefined reference to `ncnn::im2col_sgemm_pack1to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack8to1_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xedf8): undefined reference to `ncnn::im2col_sgemm_pack8to1_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xf3f4): undefined reference to `ncnn::im2col_sgemm_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::Convolution_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolution_arm.cpp:(.text+0x67c54): undefined reference to `ncnn::Convolution_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolution_arm.cpp:(.text+0x6a3ec): undefined reference to `ncnn::Convolution_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::Convolution_arm::create_pipeline(ncnn::Option const&)':
convolution_arm.cpp:(.text+0x6cd84): undefined reference to `ncnn::Convolution_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolution_arm.cpp.o): in function `ncnn::Deconvolution_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
deconvolution_arm.cpp:(.text+0x2684): undefined reference to `ncnn::Deconvolution_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: deconvolution_arm.cpp:(.text+0x3f7c): undefined reference to `ncnn::Deconvolution_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolution_arm.cpp.o): in function `ncnn::Deconvolution_arm::create_pipeline(ncnn::Option const&)':
deconvolution_arm.cpp:(.text+0x5594): undefined reference to `ncnn::Deconvolution_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(eltwise_arm.cpp.o): in function `ncnn::Eltwise_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
eltwise_arm.cpp:(.text+0x2648): undefined reference to `ncnn::Eltwise_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: eltwise_arm.cpp:(.text+0x3550): undefined reference to `ncnn::Eltwise_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::create_pipeline_fp16s(ncnn::Option const&)':
innerproduct_arm.cpp:(.text+0x9c8): undefined reference to `ncnn::innerproduct_transform_kernel_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, int, int, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
innerproduct_arm.cpp:(.text+0x2c74): undefined reference to `ncnn::innerproduct_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: innerproduct_arm.cpp:(.text+0x2c9c): undefined reference to `ncnn::innerproduct_pack4_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: innerproduct_arm.cpp:(.text+0x3990): undefined reference to `ncnn::innerproduct_gemm_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
innerproduct_arm.cpp:(.text+0xa954): undefined reference to `ncnn::InnerProduct_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(pooling_arm.cpp.o): in function `ncnn::Pooling_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
pooling_arm.cpp:(.text+0x1a18): undefined reference to `ncnn::Pooling_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: pooling_arm.cpp:(.text+0x1e1c): undefined reference to `ncnn::Pooling_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(prelu_arm.cpp.o): in function `ncnn::PReLU_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
prelu_arm.cpp:(.text+0x4c): undefined reference to `ncnn::PReLU_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: prelu_arm.cpp:(.text+0x6dc): undefined reference to `ncnn::PReLU_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(relu_arm.cpp.o): in function `ncnn::ReLU_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
relu_arm.cpp:(.text+0x73c): undefined reference to `ncnn::ReLU_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(sigmoid_arm.cpp.o): in function `ncnn::Sigmoid_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
sigmoid_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Sigmoid_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: sigmoid_arm.cpp:(.text+0x13f0): undefined reference to `ncnn::Sigmoid_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(tanh_arm.cpp.o): in function `ncnn::TanH_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
tanh_arm.cpp:(.text+0x6c): undefined reference to `ncnn::TanH_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: tanh_arm.cpp:(.text+0x848): undefined reference to `ncnn::TanH_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::create_pipeline(ncnn::Option const&)':
rnn_arm.cpp:(.text+0x2f6c): undefined reference to `ncnn::RNN_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
rnn_arm.cpp:(.text+0x3fd8): undefined reference to `ncnn::RNN_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: rnn_arm.cpp:(.text+0x4760): undefined reference to `ncnn::RNN_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
rnn_arm.cpp:(.text+0x621c): undefined reference to `ncnn::RNN_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: rnn_arm.cpp:(.text+0x67ac): undefined reference to `ncnn::RNN_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::create_pipeline(ncnn::Option const&)':
lstm_arm.cpp:(.text+0x1160): undefined reference to `ncnn::LSTM_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
lstm_arm.cpp:(.text+0x4278): undefined reference to `ncnn::LSTM_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: lstm_arm.cpp:(.text+0x4b54): undefined reference to `ncnn::LSTM_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
lstm_arm.cpp:(.text+0x6aa4): undefined reference to `ncnn::LSTM_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: lstm_arm.cpp:(.text+0x6f74): undefined reference to `ncnn::LSTM_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(binaryop_arm.cpp.o): in function `ncnn::BinaryOp_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
binaryop_arm.cpp:(.text+0x2ae80): undefined reference to `ncnn::BinaryOp_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(binaryop_arm.cpp.o): in function `ncnn::BinaryOp_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
binaryop_arm.cpp:(.text+0x35750): undefined reference to `ncnn::BinaryOp_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(unaryop_arm.cpp.o): in function `ncnn::UnaryOp_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
unaryop_arm.cpp:(.text+0x683c): undefined reference to `ncnn::UnaryOp_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolutiondepthwise_arm.cpp.o): in function `ncnn::ConvolutionDepthWise_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolutiondepthwise_arm.cpp:(.text+0xcb80): undefined reference to `ncnn::ConvolutionDepthWise_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolutiondepthwise_arm.cpp:(.text+0xccbc): undefined reference to `ncnn::ConvolutionDepthWise_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolutiondepthwise_arm.cpp.o): in function `ncnn::ConvolutionDepthWise_arm::create_pipeline(ncnn::Option const&)':
convolutiondepthwise_arm.cpp:(.text+0x10bd0): undefined reference to `ncnn::ConvolutionDepthWise_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(interp_arm.cpp.o): in function `ncnn::Interp_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
interp_arm.cpp:(.text+0x3954): undefined reference to `ncnn::Interp_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: interp_arm.cpp:(.text+0x48ac): undefined reference to `ncnn::Interp_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolutiondepthwise_arm.cpp.o): in function `ncnn::DeconvolutionDepthWise_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
deconvolutiondepthwise_arm.cpp:(.text+0x1b28): undefined reference to `ncnn::DeconvolutionDepthWise_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: deconvolutiondepthwise_arm.cpp:(.text+0x2134): undefined reference to `ncnn::DeconvolutionDepthWise_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolutiondepthwise_arm.cpp.o): in function `ncnn::DeconvolutionDepthWise_arm::create_pipeline(ncnn::Option const&)':
deconvolutiondepthwise_arm.cpp:(.text+0x3694): undefined reference to `ncnn::DeconvolutionDepthWise_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(instancenorm_arm.cpp.o): in function `ncnn::InstanceNorm_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
instancenorm_arm.cpp:(.text+0x44): undefined reference to `ncnn::InstanceNorm_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(clip_arm.cpp.o): in function `ncnn::Clip_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
clip_arm.cpp:(.text+0x2f4): undefined reference to `ncnn::Clip_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(quantize_arm.cpp.o): in function `ncnn::Quantize_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
quantize_arm.cpp:(.text+0x3d8c): undefined reference to `ncnn::Quantize_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: quantize_arm.cpp:(.text+0x46a4): undefined reference to `ncnn::Quantize_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(dequantize_arm.cpp.o): in function `ncnn::Dequantize_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
dequantize_arm.cpp:(.text+0x2374): undefined reference to `ncnn::Dequantize_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: dequantize_arm.cpp:(.text+0x25a0): undefined reference to `ncnn::Dequantize_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(hardsigmoid_arm.cpp.o): in function `ncnn::HardSigmoid_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
hardsigmoid_arm.cpp:(.text+0x4c): undefined reference to `ncnn::HardSigmoid_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: hardsigmoid_arm.cpp:(.text+0x6fc): undefined reference to `ncnn::HardSigmoid_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(hardswish_arm.cpp.o): in function `ncnn::HardSwish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
hardswish_arm.cpp:(.text+0x4c): undefined reference to `ncnn::HardSwish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: hardswish_arm.cpp:(.text+0x74c): undefined reference to `ncnn::HardSwish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(mish_arm.cpp.o): in function `ncnn::Mish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
mish_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Mish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: mish_arm.cpp:(.text+0xe94): undefined reference to `ncnn::Mish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(swish_arm.cpp.o): in function `ncnn::Swish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
swish_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Swish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: swish_arm.cpp:(.text+0x1330): undefined reference to `ncnn::Swish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::create_pipeline(ncnn::Option const&)':
gru_arm.cpp:(.text+0x343c): undefined reference to `ncnn::GRU_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
gru_arm.cpp:(.text+0x8550): undefined reference to `ncnn::GRU_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: gru_arm.cpp:(.text+0x8cd8): undefined reference to `ncnn::GRU_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
gru_arm.cpp:(.text+0xa794): undefined reference to `ncnn::GRU_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: gru_arm.cpp:(.text+0xad24): undefined reference to `ncnn::GRU_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution1d_arm.cpp.o): in function `ncnn::Convolution1D_arm::create_pipeline(ncnn::Option const&)':
convolution1d_arm.cpp:(.text+0xf30): undefined reference to `ncnn::Convolution1D_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution1d_arm.cpp.o): in function `ncnn::Convolution1D_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolution1d_arm.cpp:(.text+0x248c): undefined reference to `ncnn::Convolution1D_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolution1d_arm.cpp:(.text+0x27dc): undefined reference to `ncnn::Convolution1D_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
@Stephenfang51 I comment out build step to help you first figure out if there is something wrong/different in the configure step. As we can see, my configure step log prints "The compiler does not support armv8.2 fp16", thus no fp16 related functions will be compiled further. Your latest compile/link log shows it seems related to fp16sa.
I know nearly nothing about fp16 in ncnn. @nihui Is there any idea?
@Stephenfang51 Btw, if you are using a different qnx.toolchain.cmake file, you may paste it here. Different flags may cause different compile/link output.
@zchrissirhcz
set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_HOST_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_SYSTEM_VERSION 7.1.0)
# set(QCC_COMPILER_TARGET "$ENV{QCC_COMPILER_TARGET}")
set(QCC_NTOARCH "aarch64")
set(ARM 1)
#Check environment variables
if ("$ENV{QNX_HOST}" STREQUAL "")
message(FATAL_ERROR "QNX_HOST environment variable not set")
endif()
if ("$ENV{QNX_TARGET}" STREQUAL "")
message(FATAL_ERROR "QNX_TARGET environment variable not set")
endif()
set(QNX_HOST "$ENV{QNX_HOST}")
message(STATUS "QNX_HOST: " ${QNX_HOST})
set(QNX_TARGET "$ENV{QNX_TARGET}")
message(STATUS "QNX_TARGET: " ${QNX_TARGET})
set(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-gcc)
#set(CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-g++")
set(CMAKE_CXX_COMPILER ${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-g++)
set(CMAKE_LINKER "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ld" CACHE PATH "QNX linker program" FORCE)
set(CMAKE_AR "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ar" CACHE PATH "QNX ar program" FORCE)
set(CMAKE_NM "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-nm" CACHE PATH "QNX nm program" FORCE)
set(CMAKE_OBJCOPY "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-objcopy" CACHE PATH "QNX objcopy program" FORCE)
set(CMAKE_OBJDUMP "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-objdump" CACHE PATH "QNX objdump program" FORCE)
set(CMAKE_RANLIB "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ranlib" CACHE PATH "QNX ranlib program" FORCE)
set(CMAKE_STRIP "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-strip" CACHE PATH "QNX strip program" FORCE)
set (CMAKE_SH "${QNX_HOST}/usr/bin/sh" CACHE PATH "QNX shell program" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}/${QCC_NTOARCH}le")
set(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}" "${CMAKE_FIND_ROOT_PATH}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Here is my toolchain.cmake
as you said, my configuration below
-- NCNN_VERSION_STRING = 1.0.20221123
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-gcc
-- Check for working C compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++
-- Check for working CXX compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16 - Success
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD - Success
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM - Failed
I noticed that my arm82 was sucessful which is different from yours ?
Quick solution is turn off NCNN_ARM82.
Quick solution is turn off NCNN_ARM82.
yes, did it mean I can only run fp32 on QNX platform ?
Thanks for your contribution !
https://github.com/Tencent/ncnn/pull/4709
add build doc for qnx