| Index: acinclude.m4
|
| diff --git a/acinclude.m4 b/acinclude.m4
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2c907620fee080a78730d1999b70dcc822548a4f
|
| --- /dev/null
|
| +++ b/acinclude.m4
|
| @@ -0,0 +1,254 @@
|
| +# AC_PROG_NASM
|
| +# --------------------------
|
| +# Check that NASM exists and determine flags
|
| +AC_DEFUN([AC_PROG_NASM],[
|
| +
|
| +AC_ARG_VAR(NASM, [NASM command (used to build the x86/x86-64 SIMD code)])
|
| +if test "x$NASM" = "x"; then
|
| + AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
|
| + test -z "$NASM" && AC_MSG_ERROR([no nasm (Netwide Assembler) found])
|
| +fi
|
| +
|
| +AC_MSG_CHECKING([for object file format of host system])
|
| +case "$host_os" in
|
| + cygwin* | mingw* | pw32* | interix*)
|
| + case "$host_cpu" in
|
| + x86_64)
|
| + objfmt='Win64-COFF'
|
| + ;;
|
| + *)
|
| + objfmt='Win32-COFF'
|
| + ;;
|
| + esac
|
| + ;;
|
| + msdosdjgpp* | go32*)
|
| + objfmt='COFF'
|
| + ;;
|
| + os2-emx*) # not tested
|
| + objfmt='MSOMF' # obj
|
| + ;;
|
| + linux*coff* | linux*oldld*)
|
| + objfmt='COFF' # ???
|
| + ;;
|
| + linux*aout*)
|
| + objfmt='a.out'
|
| + ;;
|
| + linux*)
|
| + case "$host_cpu" in
|
| + x86_64)
|
| + objfmt='ELF64'
|
| + ;;
|
| + *)
|
| + objfmt='ELF'
|
| + ;;
|
| + esac
|
| + ;;
|
| + kfreebsd* | freebsd* | netbsd* | openbsd*)
|
| + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
| + objfmt='BSD-a.out'
|
| + else
|
| + case "$host_cpu" in
|
| + x86_64 | amd64)
|
| + objfmt='ELF64'
|
| + ;;
|
| + *)
|
| + objfmt='ELF'
|
| + ;;
|
| + esac
|
| + fi
|
| + ;;
|
| + solaris* | sunos* | sysv* | sco*)
|
| + case "$host_cpu" in
|
| + x86_64)
|
| + objfmt='ELF64'
|
| + ;;
|
| + *)
|
| + objfmt='ELF'
|
| + ;;
|
| + esac
|
| + ;;
|
| + darwin* | rhapsody* | nextstep* | openstep* | macos*)
|
| + case "$host_cpu" in
|
| + x86_64)
|
| + objfmt='Mach-O64'
|
| + ;;
|
| + *)
|
| + objfmt='Mach-O'
|
| + ;;
|
| + esac
|
| + ;;
|
| + *)
|
| + objfmt='ELF ?'
|
| + ;;
|
| +esac
|
| +
|
| +AC_MSG_RESULT([$objfmt])
|
| +if test "$objfmt" = 'ELF ?'; then
|
| + objfmt='ELF'
|
| + AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
|
| +fi
|
| +
|
| +AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
|
| +case "$objfmt" in
|
| + MSOMF) NAFLAGS='-fobj -DOBJ32';;
|
| + Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
|
| + Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
|
| + COFF) NAFLAGS='-fcoff -DCOFF';;
|
| + a.out) NAFLAGS='-faout -DAOUT';;
|
| + BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
|
| + ELF) NAFLAGS='-felf -DELF';;
|
| + ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
|
| + RDF) NAFLAGS='-frdf -DRDF';;
|
| + Mach-O) NAFLAGS='-fmacho -DMACHO';;
|
| + Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
|
| +esac
|
| +AC_MSG_RESULT([$NAFLAGS])
|
| +AC_SUBST([NAFLAGS])
|
| +
|
| +AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
|
| +cat > conftest.asm <<EOF
|
| +[%line __oline__ "configure"
|
| + section .text
|
| + global _main,main
|
| +_main:
|
| +main: xor eax,eax
|
| + ret
|
| +]EOF
|
| +try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
|
| +if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
|
| + AC_MSG_RESULT(yes)
|
| +else
|
| + echo "configure: failed program was:" >&AC_FD_CC
|
| + cat conftest.asm >&AC_FD_CC
|
| + rm -rf conftest*
|
| + AC_MSG_RESULT(no)
|
| + AC_MSG_ERROR([installation or configuration problem: assembler cannot create object files.])
|
| +fi
|
| +
|
| +AC_MSG_CHECKING([whether the linker accepts assembler output])
|
| +try_nasm='${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.o $LIBS 1>&AC_FD_CC'
|
| +if AC_TRY_EVAL(try_nasm) && test -s conftest${ac_exeext}; then
|
| + rm -rf conftest*
|
| + AC_MSG_RESULT(yes)
|
| +else
|
| + rm -rf conftest*
|
| + AC_MSG_RESULT(no)
|
| + AC_MSG_ERROR([configuration problem: maybe object file format mismatch.])
|
| +fi
|
| +
|
| +])
|
| +
|
| +# AC_CHECK_COMPATIBLE_ARM_ASSEMBLER_IFELSE
|
| +# --------------------------
|
| +# Test whether the assembler is suitable and supports NEON instructions
|
| +AC_DEFUN([AC_CHECK_COMPATIBLE_ARM_ASSEMBLER_IFELSE],[
|
| + ac_good_gnu_arm_assembler=no
|
| + ac_save_CC="$CC"
|
| + ac_save_CFLAGS="$CFLAGS"
|
| + CFLAGS="$CCASFLAGS -x assembler-with-cpp"
|
| + CC="$CCAS"
|
| + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
| + .text
|
| + .fpu neon
|
| + .arch armv7a
|
| + .object_arch armv4
|
| + .arm
|
| + pld [r0]
|
| + vmovn.u16 d0, q0]])], ac_good_gnu_arm_assembler=yes)
|
| +
|
| + ac_use_gas_preprocessor=no
|
| + if test "x$ac_good_gnu_arm_assembler" = "xno" ; then
|
| + CC="gas-preprocessor.pl $CCAS"
|
| + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
| + .text
|
| + .fpu neon
|
| + .arch armv7a
|
| + .object_arch armv4
|
| + .arm
|
| + pld [r0]
|
| + vmovn.u16 d0, q0]])], ac_use_gas_preprocessor=yes)
|
| + fi
|
| + CFLAGS="$ac_save_CFLAGS"
|
| + CC="$ac_save_CC"
|
| +
|
| + if test "x$ac_use_gas_preprocessor" = "xyes" ; then
|
| + CCAS="gas-preprocessor.pl $CCAS"
|
| + AC_SUBST([CCAS])
|
| + ac_good_gnu_arm_assembler=yes
|
| + fi
|
| +
|
| + if test "x$ac_good_gnu_arm_assembler" = "xyes" ; then
|
| + $1
|
| + else
|
| + $2
|
| + fi
|
| +])
|
| +
|
| +# AC_CHECK_COMPATIBLE_MIPSEL_ASSEMBLER_IFELSE
|
| +# --------------------------
|
| +# Test whether the assembler is suitable and supports MIPS instructions
|
| +AC_DEFUN([AC_CHECK_COMPATIBLE_MIPS_ASSEMBLER_IFELSE],[
|
| + have_mips_dspr2=no
|
| + ac_save_CFLAGS="$CFLAGS"
|
| + CFLAGS="$CCASFLAGS -mdspr2"
|
| +
|
| + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
| +
|
| + int main ()
|
| + {
|
| + int c = 0, a = 0, b = 0;
|
| + __asm__ __volatile__ (
|
| + "precr.qb.ph %[c], %[a], %[b] \n\t"
|
| + : [c] "=r" (c)
|
| + : [a] "r" (a), [b] "r" (b)
|
| + );
|
| + return c;
|
| + }
|
| + ]])], have_mips_dspr2=yes)
|
| + CFLAGS=$ac_save_CFLAGS
|
| +
|
| + if test "x$have_mips_dspr2" = "xyes" ; then
|
| + $1
|
| + else
|
| + $2
|
| + fi
|
| +])
|
| +
|
| +AC_DEFUN([AC_CHECK_COMPATIBLE_ARM64_ASSEMBLER_IFELSE],[
|
| + ac_good_gnu_arm_assembler=no
|
| + ac_save_CC="$CC"
|
| + ac_save_CFLAGS="$CFLAGS"
|
| + CFLAGS="$CCASFLAGS -x assembler-with-cpp"
|
| + CC="$CCAS"
|
| + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
| + .text
|
| + MYVAR .req x0
|
| + movi v0.16b, #100
|
| + mov MYVAR, #100
|
| + .unreq MYVAR]])], ac_good_gnu_arm_assembler=yes)
|
| +
|
| + ac_use_gas_preprocessor=no
|
| + if test "x$ac_good_gnu_arm_assembler" = "xno" ; then
|
| + CC="gas-preprocessor.pl $CCAS"
|
| + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
| + .text
|
| + MYVAR .req x0
|
| + movi v0.16b, #100
|
| + mov MYVAR, #100
|
| + .unreq MYVAR]])], ac_use_gas_preprocessor=yes)
|
| + fi
|
| + CFLAGS="$ac_save_CFLAGS"
|
| + CC="$ac_save_CC"
|
| +
|
| + if test "x$ac_use_gas_preprocessor" = "xyes" ; then
|
| + CCAS="gas-preprocessor.pl $CCAS"
|
| + AC_SUBST([CCAS])
|
| + ac_good_gnu_arm_assembler=yes
|
| + fi
|
| +
|
| + if test "x$ac_good_gnu_arm_assembler" = "xyes" ; then
|
| + $1
|
| + else
|
| + $2
|
| + fi
|
| +])
|
|
|