fix core module android arm64 build#19521
Conversation
modules/core/src/rand.cpp
Outdated
|
|
||
| #if defined __ARM_NEON && defined __aarch64__ | ||
| #include <arm_neon.h> | ||
| #endif |
There was a problem hiding this comment.
It should be handled by this code.
Could you please add dump of error message and passed compiler options?
|
Can't reproduce problem with: Please provide more details to reproduce observed problem.
|
Build CommandDetailsI created @echo off
set ANDROID_NDK=D:/soft/Android/ndk-r18b
set TOOLCHAIN=%ANDROID_NDK%/build/cmake/android.toolchain.cmake
set BUILD_DIR=android-arm64-r18b
if not exist %BUILD_DIR% md %BUILD_DIR%
cd %BUILD_DIR%
cmake -G Ninja ^
-DCMAKE_TOOLCHAIN_FILE=%TOOLCHAIN% ^
-DANDROID_LD=lld ^
-DANDROID_ABI="arm64-v8a" ^
-DANDROID_PLATFORM=android-24 ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=d:/lib/opencv/4.5.1-pr-android ^
-DBUILD_LIST=core,imgcodecs ^
-D BUILD_TESTS=OFF ^
-D BUILD_PERF_TESTS=OFF ^
-D WITH_CUDA=OFF ^
-D WITH_VTK=OFF ^
-D WITH_MATLAB=OFF ^
-D BUILD_DOCS=OFF ^
-D BUILD_opencv_python3=OFF ^
-D BUILD_opencv_python2=OFF ^
-D WITH_IPP=OFF ^
-DBUILD_ANDROID_PROJECTS=OFF ^
-DBUILD_ANDROID_EXAMPLES=OFF ^
-DBUILD_ANDROID_SERVICE=OFF ^
-D WITH_CUDA=OFF ^
-D WITH_OPENCL=OFF ^
-D WITH_VTK=OFF ^
-D WITH_MATLAB=OFF ^
-D BUILD_DOCS=OFF ^
-D BUILD_opencv_python3=OFF ^
-D BUILD_opencv_python2=OFF ^
-D WITH_IPP=OFF ^
-D WITH_WEBP=OFF ^
-D WITH_JASPER=OFF ^
-D WITH_OPENEXR=OFF ^
-D WITH_OPENGL=OFF ^
-D WITH_OPENNI=OFF ^
-D WITH_OPENNI2=OFF ^
-D WITH_GDCM=OFF ^
-D WITH_PVAPI=OFF ^
-D WITH_ARAVIS=OFF ^
-D WITH_QT=OFF ^
-D WITH_WIN32UI=OFF ^
-D WITH_TBB=OFF ^
-D WITH_HPX=OFF ^
-D WITH_TIFF=OFF ^
-D BUILD_JAVA=OFF ^
-D BUILD_FAT_JAVA_LIB=OFF ^
-D CV_DISABLE_OPTIMIZATION=ON ^
-D BUILD_TIFF=OFF ^
-D BUILD_OPENJPEG=OFF ^
-D BUILD_JASPER=OFF ^
-D BUILD_JPEG=OFF ^
-D BUILD_OPENEXR=OFF ^
-D BUILD_WEBP=OFF ^
-D BUILD_TBB=OFF ^
-D BUILD_IPP_IW=OFF ^
-D BUILD_ITT=OFF ^
-DWITH_OPENJPEG=OFF ^
-DWITH_DSHOW=OFF ^
-DWITH_MSMF=OFF ^
-DWITH_MSMF_DXVA=OFF ^
-DCV_TRACE=OFF ^
-DWITH_IMGCODEC_HDR=OFF ^
-DWITH_IMGCODEC_SUNRASTER=OFF ^
-DWITH_IMGCODEC_PXM=OFF ^
-DWITH_IMGCODEC_PFM=OFF ^
-DWITH_JPEG=OFF ^
-DBUILD_opencv_apps=OFF ^
-DCPU_BASELINE_DISABLE=ON ^
-DCPU_BASELINE_DETECT=OFF ^
-DENABLE_PRECOMPILED_HEADERS=OFF ^
-DWITH_FFMPEG=OFF ^
-DWITH_PROTOBUF=OFF ^
-DBUILD_PERF_TESTS=OFF ^
-DBUILD_TESTS=OFF ^
-DWITH_QUIRC=OFF ^
-DOPENCV_CMAKE_DEBUG_MESSAGES=OFF ^
-DWITH_DIRECTX=OFF ^
../..
cd ..CMake OutputNinja OutputCMakeCache.txt and CMakeVars.txthttps://drive.google.com/drive/folders/1Db8iqVlGItwhS4nhmbCaFJxC0Rno6Uuu?usp=sharing |
|
Oh I should do more test locally. Sorry for that. Now I know: Using |
|
The mentioned "missing arm_neon.h" issue, only occur in 3.4 branch, not occured in 4.5.1 branch. I think
i.e. change: #elif defined __ARM_NEON && defined __aarch64__to #elif CV_NEON && defined __aarch64__ |
When building for Android ARM platform, cmake with `-D CV_DISABLE_OPTIMIZATION=ON`, the expected behavior is not using ARM NEON, using naive computation instead. This commit fix the un-expected compile error for neon intrinsincs.
This PR fix 3.4 branch's core module failure build on android arm64, by determine and including
arm_neon.hheader file.Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.