]> git.sesse.net Git - x264/commitdiff
aarch64: initial build support
authorJanne Grunau <janne-x264@jannau.net>
Tue, 18 Mar 2014 21:10:24 +0000 (22:10 +0100)
committerFiona Glaser <fiona@x264.com>
Tue, 26 Aug 2014 16:19:20 +0000 (09:19 -0700)
Makefile
configure

index 773deedafe638baaf1b49a0c0dbc31cf9217fbd8..8bc7f9a80f39f96579fef14635e2ae441c2da63a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -123,6 +123,15 @@ OBJASM  = $(ASMSRC:%.S=%.o)
 endif
 endif
 
+# AArch64 NEON optims
+ifeq ($(ARCH),AARCH64)
+ifneq ($(AS),)
+ASMSRC +=
+SRCS   +=
+OBJASM  = $(ASMSRC:%.S=%.o)
+endif
+endif
+
 ifneq ($(HAVE_GETOPT_LONG),1)
 SRCCLI += extras/getopt.c
 endif
index ebf737a79106e0d6c629d2fb3086562d8292856a..fe4a9c23c70ed9b89602b0acbe3253a1f5b7551e 100755 (executable)
--- a/configure
+++ b/configure
@@ -684,6 +684,15 @@ case $host_cpu in
             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"
         ;;
@@ -767,7 +776,20 @@ if [ $asm = auto -a $ARCH = ARM ] ; then
     fi
 fi
 
-if [ $asm = auto -a $ARCH = ARM ] ; then
+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
@@ -1318,7 +1340,7 @@ cat conftest.log
 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."