aarch64 cross-compile issue since version 3.4
Issue #554
new
Getting the following wih version 3.4 (used to work OK with version 3.3)
Getting the following wih version 3.4 (used to work OK with version 3.3)
[ 26%] Building CXX object encoder/CMakeFiles/encoder.dir/reference.cpp.o
[ 28%] Building CXX object encoder/CMakeFiles/encoder.dir/encoder.cpp.o
[ 30%] Building CXX object encoder/CMakeFiles/encoder.dir/api.cpp.o
[ 32%] Building CXX object encoder/CMakeFiles/encoder.dir/weightPrediction.cpp.o
make[4]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
[ 32%] Built target encoder
make[4]: Entering directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
Scanning dependencies of target dynamicHDR10
make[4]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
make[4]: Entering directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
[ 33%] Building CXX object dynamicHDR10/CMakeFiles/dynamicHDR10.dir/json11/json11.cpp.o
aarch64-unknown-linux-gnueabi-g++: error: unrecognized command line option ‘-mfloat-abi=soft’
aarch64-unknown-linux-gnueabi-g++: error: unrecognized command line option ‘-mfpu=vfp’
aarch64-unknown-linux-gnueabi-g++: error: unrecognized command line option ‘-marm’
dynamicHDR10/CMakeFiles/dynamicHDR10.dir/build.make:62: recipe for target 'dynamicHDR10/CMakeFiles/dynamicHDR10.dir/json11/json11.cpp.o' failed
make[4]: *** [dynamicHDR10/CMakeFiles/dynamicHDR10.dir/json11/json11.cpp.o] Error 1
make[4]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
CMakeFiles/Makefile2:225: recipe for target 'dynamicHDR10/CMakeFiles/dynamicHDR10.dir/all' failed
make[3]: *** [dynamicHDR10/CMakeFiles/dynamicHDR10.dir/all] Error 2
make[3]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
Makefile:129: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265/work-aarch64-6.1/x265_3.4/build12bit'
Makefile:92: recipe for target 'x265_3.4/source/libx265_main12.a' failed
make[1]: *** [x265_3.4/source/libx265_main12.a] Error 2
make[1]: Leaving directory '/home/spksrc/git-ffmpeg-next/spksrc/cross/x265'
../../mk/spksrc.cross-cc.mk:81: recipe for target 'arch-aarch64-6.1' failed
make: [arch-aarch64-6.1] Error 2 (ignored)
Here is my temp fix I currently use to circumvent the issue (revert to previous state):
--- ./CMakeLists.txt-orig 2020-06-29 16:57:09.926383581 -0400
+++ ./CMakeLists.txt 2020-06-29 16:53:48.890687191 -0400
@@ -40,7 +40,7 @@ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_
# System architecture detection
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
set(X86_ALIASES x86 i386 i686 x86_64 amd64)
-set(ARM_ALIASES armv6l armv7l aarch64)
+set(ARM_ALIASES armv6l armv7l)
list(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
list(FIND ARM_ALIASES "${SYSPROC}" ARMMATCH)
set(POWER_ALIASES ppc64 ppc64le)
Always compiled great with the following options using gcc 4.9.4 (yes, it’s old, I know):
-DCMAKE_CXX_FLAGS=-fPIC
-DCROSS_COMPILE_ARM=ON
-DENABLE_ASSEMBLY=OFF
-DCMAKE_SYSTEM_PROCESSOR=aarch64
Ive got it working like this