aarch64 cross-compile issue since version 3.4

Issue #554 new
th0ma7 created an issue

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

Comments (1)

  1. Max Barrass

    Ive got it working like this

            sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \
            sed -i "/-DEXTRA_LIB/ s/$/ -DENABLE_SHARED:bool=off/" multilib.sh && \
            sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
            sed -i '/^cmake/ s/$/ -DCMAKE_CXX_FLAGS=\"-fPIC\"/' multilib.sh && \
            sed -i '/^cmake/ s/$/ -DCROSS_COMPILE_ARM=ON/' multilib.sh && \
            sed -i '/^cmake/ s/$/ -DENABLE_ASSEMBLY=OFF/' multilib.sh && \
            sed -i '/^cmake/ s/$/ -DCMAKE_SYSTEM_PROCESSOR=aarch64/' multilib.sh && \
            sed -i '/^cd 12bit/ s/$/ \&\& echo MAKE 12bit/' multilib.sh && \
            sed -i '/^cd 10bit/ s/$/ \&\& echo MAKE 10bit/' multilib.sh && \
            sed -i '/^cd 8bit/ s/$/ \&\& echo MAKE 8bit/' multilib.sh && \
    

  2. Log in to comment