diff --git a/cppbuild.sh b/cppbuild.sh index 6d42cda8b13..c754ba9d867 100755 --- a/cppbuild.sh +++ b/cppbuild.sh @@ -33,6 +33,9 @@ case $ARCH in arm*) ARCH=arm ;; + aarch64*) + ARCH=arm64 + ;; i386|i486|i586|i686) ARCH=x86 ;; diff --git a/ffmpeg/cppbuild.sh b/ffmpeg/cppbuild.sh index ffd9a6d931d..b3f45e20ca7 100755 --- a/ffmpeg/cppbuild.sh +++ b/ffmpeg/cppbuild.sh @@ -586,6 +586,72 @@ case $PLATFORM in make install ;; + linux-arm64) + tar --totals -xjf ../alsa-lib-$ALSA_VERSION.tar.bz2 + + export CFLAGS="-march=armv8-a+crypto -mcpu=cortex-a57+crypto" + export CXXFLAGS="$CFLAGS" + export CPPFLAGS="$CFLAGS" + HOST_ARCH="$(uname -m)" + cd $ZLIB + CC="gcc -fPIC" ./configure --prefix=$INSTALL_PATH --static + make -j $MAKEJ V=0 + make install + cd ../$LAME + CC="gcc" ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ V=0 + make install + cd ../$SPEEX + ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ V=0 + make install + cd ../$OPUS + ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ V=0 + make install + cd ../$OPENCORE_AMR + ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ V=0 + make install + cd ../$VO_AMRWBENC + ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ V=0 + make install + cd ../$OPENSSL + ./Configure linux-aarch64 -fPIC --prefix=$INSTALL_PATH "$CFLAGS" no-shared no-afalgeng no-idea no-mdc2 no-rc5 no-zlib no-ssl3 no-ssl3-method enable-rfc3779 enable-cms + make -j $MAKEJ + make install_sw + cd ../openh264-$OPENH264_VERSION + make -j $MAKEJ DESTDIR=./ PREFIX=.. OS=linux ARCH=arm64 USE_ASM=No install-static CC=gcc CXX=g++ + cd ../$X264 + LDFLAGS="-Wl,-z,relro" ./configure --prefix=$INSTALL_PATH --enable-pic --enable-static --disable-shared --disable-opencl --disable-cli --enable-asm --host=aarch64-linux --extra-cflags="$CFLAGS -fno-aggressive-loop-optimizations" + make -j $MAKEJ V=0 + make install + cd ../x265-$X265 + $CMAKE -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DENABLE_LIBNUMA=OFF -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=armv8 -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.. source + make -j $MAKEJ + make install + cd ../libvpx-$VPX_VERSION + patch -Np1 < ../../../disable_vp8_loop_filter_simple_neon.patch + ./configure --prefix=$INSTALL_PATH --enable-static --enable-pic --disable-examples --disable-unit-tests + make -j $MAKEJ + make install + cd ../alsa-lib-$ALSA_VERSION/ + ./configure --host=aarch64-linux --prefix=$INSTALL_PATH --disable-python + make -j $MAKEJ V=0 + make install + cd ../freetype-$FREETYPE_VERSION + ./configure --prefix=$INSTALL_PATH --with-bzip2=no --with-harfbuzz=no --with-png=no --enable-static --disable-shared --with-pic --host=aarch64-linux + make -j $MAKEJ + make install + cd ../ffmpeg-$FFMPEG_VERSION + patch -Np1 < ../../../ffmpeg-linux.patch + LD_LIBRARY_PATH=../lib/ CC="gcc" CXX="g++" PKG_CONFIG_PATH=../lib/pkgconfig/ ./configure --prefix=.. $DISABLE $ENABLE --extra-cflags="$CFLAGS -fno-aggressive-loop-optimizations" --enable-pthreads --extra-cflags="-I../include/" --extra-ldflags="-Wl,-z,relro -L../lib/" --extra-ldexeflags="-static" --pkg-config-flags="--static" --pkg-config="pkg-config --static" --extra-libs="-lstdc++ -ldl" + make -j $MAKEJ + make install + ;; + + linux-ppc64le) MACHINE_TYPE=$( uname -m ) cd $ZLIB diff --git a/ffmpeg/disable_vp8_loop_filter_simple_neon.patch b/ffmpeg/disable_vp8_loop_filter_simple_neon.patch new file mode 100644 index 00000000000..3fce9b26ad5 --- /dev/null +++ b/ffmpeg/disable_vp8_loop_filter_simple_neon.patch @@ -0,0 +1,41 @@ +diff --git a/vp8/common/rtcd_defs.pl b/vp8/common/rtcd_defs.pl +index bc5e05799..961b002e9 100644 +--- a/vp8/common/rtcd_defs.pl ++++ b/vp8/common/rtcd_defs.pl +@@ -50,10 +50,9 @@ specialize qw/vp8_loop_filter_bh sse2 neon dspr2 msa/; + + + add_proto qw/void vp8_loop_filter_simple_mbv/, "unsigned char *y, int ystride, const unsigned char *blimit"; +-specialize qw/vp8_loop_filter_simple_mbv sse2 neon msa/; ++specialize qw/vp8_loop_filter_simple_mbv sse2 msa/; + $vp8_loop_filter_simple_mbv_c=vp8_loop_filter_simple_vertical_edge_c; + $vp8_loop_filter_simple_mbv_sse2=vp8_loop_filter_simple_vertical_edge_sse2; +-$vp8_loop_filter_simple_mbv_neon=vp8_loop_filter_mbvs_neon; + $vp8_loop_filter_simple_mbv_msa=vp8_loop_filter_simple_vertical_edge_msa; + + add_proto qw/void vp8_loop_filter_simple_mbh/, "unsigned char *y, int ystride, const unsigned char *blimit"; +@@ -64,10 +63,9 @@ $vp8_loop_filter_simple_mbh_neon=vp8_loop_filter_mbhs_neon; + $vp8_loop_filter_simple_mbh_msa=vp8_loop_filter_simple_horizontal_edge_msa; + + add_proto qw/void vp8_loop_filter_simple_bv/, "unsigned char *y, int ystride, const unsigned char *blimit"; +-specialize qw/vp8_loop_filter_simple_bv sse2 neon msa/; ++specialize qw/vp8_loop_filter_simple_bv sse2 msa/; + $vp8_loop_filter_simple_bv_c=vp8_loop_filter_bvs_c; + $vp8_loop_filter_simple_bv_sse2=vp8_loop_filter_bvs_sse2; +-$vp8_loop_filter_simple_bv_neon=vp8_loop_filter_bvs_neon; + $vp8_loop_filter_simple_bv_msa=vp8_loop_filter_bvs_msa; + + add_proto qw/void vp8_loop_filter_simple_bh/, "unsigned char *y, int ystride, const unsigned char *blimit"; +diff --git a/vp8/vp8_common.mk b/vp8/vp8_common.mk +index 137f5bb62..b22bcdb3a 100644 +--- a/vp8/vp8_common.mk ++++ b/vp8/vp8_common.mk +@@ -133,7 +133,7 @@ VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/idct_dequant_full_2x_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/iwalsh_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/vp8_loopfilter_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimplehorizontaledge_neon.c +-VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimpleverticaledge_neon.c ++#VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimpleverticaledge_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/mbloopfilter_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/shortidct4x4llm_neon.c + VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/sixtappredict_neon.c