as_check() {
log_check "whether $AS supports $1"
- echo "$1" > conftest.asm
- if $AS conftest.asm $ASFLAGS $2 -o conftest.o >conftest.log 2>&1; then
+ echo "$1" > conftest$AS_EXT
+ as_cmd="$AS conftest$AS_EXT $ASFLAGS $2 -o conftest.o"
+ if $as_cmd >conftest.log 2>&1; then
res=$?
log_ok
else
log_fail
log_msg "Failed commandline was:"
log_msg "--------------------------------------------------"
- log_msg "$AS conftest.asm $ASFLAGS $2 -o conftest.o"
+ log_msg "$as_cmd"
cat conftest.log >> config.log
log_msg "--------------------------------------------------"
log_msg "Failed program was:"
log_msg "--------------------------------------------------"
- cat conftest.asm >> config.log
+ cat conftest$AS_EXT >> config.log
log_msg "--------------------------------------------------"
fi
return $res
cross_prefix=""
EXE=""
+AS_EXT=".S"
+NL="
+"
# list of all preprocessor HAVE values we can define
CONFIG_HAVE="MALLOC_H ALTIVEC ALTIVEC_H MMX ARMV6 ARMV6T2 NEON BEOSTHREAD POSIXTHREAD WIN32THREAD THREAD LOG2F SWSCALE \
- LAVF FFMS GPAC AVS GPL VECTOREXT INTERLACED CPU_COUNT OPENCL THP LSMASH X86_INLINE_ASM"
+ LAVF FFMS GPAC AVS GPL VECTOREXT INTERLACED CPU_COUNT OPENCL THP LSMASH X86_INLINE_ASM AS_FUNC"
# parse options
i*86)
ARCH="X86"
AS="yasm"
+ AS_EXT=".asm"
ASFLAGS="$ASFLAGS -O2 -DARCH_X86_64=0 -I\$(SRCPATH)/common/x86/"
if [ $compiler = GNU ]; then
if [[ "$asm" == auto && "$CFLAGS" != *-march* ]]; then
x86_64)
ARCH="X86_64"
AS="yasm"
+ AS_EXT=".asm"
ASFLAGS="$ASFLAGS -DARCH_X86_64=1 -I\$(SRCPATH)/common/x86/"
[ $compiler = GNU ] && CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS"
if [ "$SYS" = MACOSX ]; then
if [ $asm = auto ] ; then
define HAVE_ALTIVEC
AS="${AS-${CC}}"
+ AS_EXT=".c"
if [ $SYS = MACOSX ] ; then
CFLAGS="$CFLAGS -faltivec -fastf -mcpu=G4"
else
AS="${AS-${CC}}"
fi
;;
+ aarch64)
+ ARCH="AARCH64"
+ if [ "$SYS" = MACOSX ] ; then
+ AS="${AS-extras/gas-preprocessor.pl $CC}"
+ ASFLAGS="$ASFLAGS -DPREFIX"
+ else
+ AS="${AS-${CC}}"
+ fi
+ ;;
s390|s390x)
ARCH="S390"
;;
fi
fi
+if [ $asm = auto -a $ARCH = AARCH64 ] ; then
+ # set flags so neon is built by default
+ echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu|-arch)' || CFLAGS="$CFLAGS -arch arm64 -mfpu=neon"
+
+ if cc_check '' '' '__asm__("cmeq v0.8h, v0.8h, #0");' ; then define HAVE_NEON
+ ASFLAGS="$ASFLAGS -c"
+ else
+ echo "no NEON support, try adding -mfpu=neon to CFLAGS"
+ echo "If you really want to run on such a CPU, configure with --disable-asm."
+ exit 1
+ fi
+fi
+
+if [ $asm = auto -a \( $ARCH = ARM -o $ARCH = AARCH64 \) ] ; then
+ # check if the assembler supports '.func' (clang 3.5 does not)
+ as_check ".func test${NL}.endfunc" && define HAVE_AS_FUNC 1
+fi
+
[ $asm = no ] && AS=""
[ "x$AS" = x ] && asm="no" || asm="yes"
rm conftest.log
[ "$SRCPATH" != "." ] && ln -sf ${SRCPATH}/Makefile ./Makefile
-mkdir -p common/{arm,ppc,x86} encoder extras filters/video input output tools
+mkdir -p common/{aarch64,arm,ppc,x86} encoder extras filters/video input output tools
echo
echo "You can run 'make' or 'make fprofiled' now."