mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-05 15:30:02 +01:00
927 lines
27 KiB
Plaintext
927 lines
27 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
dnl AC_INIT
|
|
AC_INIT([veejaycore],[1.5.67],[http://www.veejayhq.net])
|
|
AC_PREREQ([2.69])
|
|
AC_CONFIG_SRCDIR([veejaycore/core.c])
|
|
|
|
VEEJAYCORE_MAJOR_VERSION=1
|
|
VEEJAYCORE_MINOR_VERSION=5
|
|
VEEJAYCORE_MICRO_VERSION=67
|
|
VEEJAYCORE_VERSION=$VEEJAYCORE_MAJOR_VERSION.$VEEJAYCORE_MINOR_VERSION.$VEEJAYCORE_MICRO_VERSION
|
|
VEEJAYCORE_CODENAME="Veejay Core - build $VEEJAY_MINOR_VERSION $VEEJAY_MICRO_VERSION"
|
|
AC_CONFIG_HEADERS([config.h])
|
|
dnl AX_CONFIG_PREFIXED_HEADER([veejay-config.h], [VEEJAY], [config.h])
|
|
|
|
AC_CANONICAL_HOST
|
|
AC_CANONICAL_TARGET
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AM_INIT_AUTOMAKE([subdir-objects])
|
|
AM_MAINTAINER_MODE
|
|
|
|
AC_DEFINE(VEEJAYCORE,1,[Building Veejay Core])
|
|
AC_DEFINE(HAVE_CONFIG_H,1,[Include config.h])
|
|
# libtool versioning
|
|
LT_RELEASE=$VEEJAYCORE_MAJOR_VERSION.$VEEJAYCORE_MINOR_VERSION
|
|
LT_CURRENT=$VEEJAYCORE_MAJOR_VERSION
|
|
LT_REVISION=$VEEJAYCORE_MINOR_VERSION
|
|
LT_AGE=$VEEJAYCORE_MAJOR_VERSION
|
|
AC_SUBST(LT_RELEASE)
|
|
AC_SUBST(LT_CURRENT)
|
|
AC_SUBST(LT_REVISION)
|
|
AC_SUBST(LT_AGE)
|
|
dnl **********************************************************************
|
|
dnl Options
|
|
|
|
#AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
|
|
dnl kill CFLAGS
|
|
USER_CFLAGS="$CFLAGS"
|
|
CFLAGS=""
|
|
dnl enable auto vectorization for libvjmem, libvje and libyuv
|
|
|
|
AC_ARG_ENABLE([strict],
|
|
AS_HELP_STRING([--enable-strict],[Compile in paranoia assertion checking]))
|
|
|
|
AC_ARG_ENABLE([sanitizer],
|
|
AS_HELP_STRING([--enable-sanitizer],[Enable AddressSanitizer]))
|
|
|
|
AC_ARG_ENABLE([portleak],
|
|
AS_HELP_STRING([--enable-portleak],[Compile in vevo port validation (requires --enable-strict)]))
|
|
|
|
AC_ARG_ENABLE([debug],
|
|
AS_HELP_STRING([--enable-debug],[Compile in debugging information]))
|
|
AC_ARG_ENABLE([threadsanitizer],
|
|
AS_HELP_STRING([--enable-threadsanitizer],[Compile with -fsanitize=thread]))
|
|
AC_ARG_ENABLE([profile],
|
|
AS_HELP_STRING([--enable-profiling],[Compile in profiling information]))
|
|
AC_ARG_ENABLE([strict],
|
|
AS_HELP_STRING([--enable-strict],[Compile in strict checking]))
|
|
AC_ARG_ENABLE([compile-warnings],
|
|
AS_HELP_STRING([--enable-compile-warnings],[Turn on compiler warnings.]))
|
|
AC_ARG_ENABLE([warnings_as_errors],
|
|
AS_HELP_STRING([--enable-warnings_as_errors],[Compiler warnings are errors.]))
|
|
AC_ARG_WITH([extra-cflags],
|
|
AS_HELP_STRING([--with-extra-cflags=flags],[Options to be added to CFLAGS (optional)]))
|
|
arch_target="auto"
|
|
AC_ARG_WITH(arch-target, AS_HELP_STRING( [--with-arch-target=generic, auto or user defined],
|
|
[Build a generic binary, auto-detect current cpu type or user defined -mtune/-march setting)]),
|
|
[ arch_target="$withval"])
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
dnl Initialize libtool
|
|
LT_INIT
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
AC_PROG_YACC
|
|
AC_PROG_CXX
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_C_BIGENDIAN
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_SYS_LARGEFILE
|
|
|
|
dnl configure AS and ASFLAGS...
|
|
AM_PROG_AS
|
|
|
|
AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h sys/time.h sys/times.h])
|
|
|
|
AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp])
|
|
AC_CHECK_FUNCS([sched_get_priority_max])
|
|
AC_CHECK_FUNCS([select socket getpagesize memcpy])
|
|
|
|
AC_CHECK_FUNC(getopt_long,
|
|
[AC_DEFINE(HAVE_GETOPT_LONG, 1, [long getopt support])],
|
|
[ # FreeBSD and BSD/OS have a gnugetopt library for this:
|
|
AC_CHECK_LIB([gnugetopt], [getopt_long],
|
|
[AC_DEFINE(HAVE_GETOPT_LONG, 1,
|
|
[long getopt support])
|
|
LIBGETOPT_LIB="-lgnugetopt"])
|
|
])
|
|
|
|
AC_CHECK_SIZEOF([int])
|
|
AC_CHECK_SIZEOF([long int])
|
|
AC_CHECK_SIZEOF([size_t])
|
|
AC_CHECK_SIZEOF([float])
|
|
|
|
|
|
AC_TYPE_OFF_T
|
|
AC_CHECK_TYPE(ptrdiff_t, long)
|
|
AC_TYPE_SIZE_T
|
|
|
|
AC_SEARCH_LIBS([clock_gettime], [rt],
|
|
[AC_DEFINE(HAVE_POSIX_TIMERS,[1],[Set to 1 if clock_gettime and POSIX timers are available])])
|
|
|
|
|
|
AC_SUBST(LIBGETOPT_LIB)
|
|
|
|
AC_MSG_NOTICE([The host is $host $host_cpu $host_vendor $host_os .])
|
|
|
|
dnl e_xdpms=no
|
|
dnl ACCHECK_HEADER(X11/extensions/dpms.h,
|
|
dnl AC_DEFINE( HAVE_XDPMS, 1, [If we have xpdms] ) have_xdpms=yes,,
|
|
dnl [])
|
|
|
|
have_linux=false
|
|
have_darwin=false
|
|
case "${host_os}" in
|
|
linux*)
|
|
AC_CHECK_HEADER(linux/version.h,
|
|
[have_linux=true
|
|
AC_DEFINE(HAVE_LINUX,1,[Linux platform])
|
|
],
|
|
[AC_MSG_ERROR([version.h not found - please install the linux kernel headers])
|
|
])
|
|
LIBM_LIBS="-lm"
|
|
;;
|
|
darwin*)
|
|
AC_DEFINE(HAVE_DARWIN,1,[MAC OS X Darwin])
|
|
dnl OS-X/Darwin needs no-cpp-precomp
|
|
CFLAGS="$CFLAGS -no-cpp-precomp"
|
|
OP_CFLAGS="$OP_CFLAGS -no-cpp-precomp"
|
|
have_darwin=true
|
|
LIBM_LIBS=""
|
|
;;
|
|
*)
|
|
AC_MSG_WARN([Alien platform - Good Luck!])
|
|
LIBM_LIBS=""
|
|
;;
|
|
esac
|
|
|
|
|
|
dnl ====== check for PKG_CONFIG_PATH
|
|
if test x"$PKG_CONFIG_PATH" = x ; then
|
|
AC_MSG_NOTICE([The PKG_CONFIG_PATH variable was not set])
|
|
AC_MSG_NOTICE([You should set it to the directories that contain the .pc files])
|
|
|
|
PKG_CONFIG_PATH=/usr/lib/pkgconfig
|
|
fi
|
|
|
|
AC_MSG_CHECKING(whether to compile in debugging information)
|
|
debugCFLAGS=""
|
|
if test "x$enable_debug" = "xyes" ; then
|
|
debugCFLAGS="-g -Wall"
|
|
CFLAGS="$CFLAGS $debugCFLAGS"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_MSG_CHECKING([whether to compile in thread sanitizer])
|
|
if test "x$enable_threadsanitizer" = "xyes" ; then
|
|
CFLAGS="$CFLAGS -fsanitize=thread"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_MSG_CHECKING(whether to compile in profiling information)
|
|
if test "x$enable_profiling" = "xyes" ; then
|
|
debugCFLAGS="$debugCFLAGS -fprofile-arcs -ftest-coverage"
|
|
DEBUGLIBS="-lgcov"
|
|
AC_SUBST(DEBUGLIBS)
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_MSG_CHECKING(whether to compile in assertion checking)
|
|
if test "x$enable_strict" = "xyes" ; then
|
|
debugCFLAGS="$debugCFLAGS -DSTRICT_CHECKING"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_MSG_CHECKING(whether to compile in assertion checking)
|
|
if test "x$enable_strict" = "xyes" ; then
|
|
debugCFLAGS="$debugCFLAGS -DSTRICT_CHECKING"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
if test "x$enable_sanitizer" = "xyes" ; then
|
|
debugCFLAGS="$debugCFLAGS -fsanitize=address -fno-omit-frame-pointer"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AC_MSG_CHECKING(whether to compile in vevo port tracking)
|
|
if test "x$enable_portleak" = "xyes"; then
|
|
debugCFLAGS="$debugCFLAGS -DVEVO_TRACKPORTS"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
|
|
dnl ********************************************************************
|
|
dnl Test for MMX support if an IA32 platform. If on a PPC then look for
|
|
dnl Altivec support. For the IA32 platform see if gcc understands inline
|
|
dnl MMX instructions.
|
|
dnl
|
|
dnl TODO: host = non intel, target = intel <blah> do the checks also?
|
|
dnl Remember we are checking that the toolchain can generate the
|
|
dnl code, not whether the host can execute the code, thats done
|
|
dnl at run time with the exception of the SSE code.
|
|
|
|
|
|
have_asm_nasm=false
|
|
have_asm_mmx=false
|
|
have_asm_sse=false
|
|
have_asm_sse2=false
|
|
have_asm_mmx2=false
|
|
have_asm_avx=false
|
|
have_asm_avx2=false
|
|
have_asm_avx512=false
|
|
have_asm_erms=false
|
|
have_asm_3dnow=false
|
|
have_cmov=false
|
|
have_x86cpu=false
|
|
have_x86_64cpu=false
|
|
have_altivec=false
|
|
have_mips=false
|
|
have_ppccpu=false
|
|
have_ps2=false
|
|
have_arm=false
|
|
have_armv7a=false
|
|
|
|
|
|
OP_CFLAGS=""
|
|
LZO_EXTRA_CFLAGS="-DMINILZO_HAVE_CONFIG_H"
|
|
|
|
AC_MSG_CHECKING([Architecture])
|
|
case $host_cpu in
|
|
i[[3-7]]86)
|
|
AC_DEFINE(HAVE_X86CPU,1, [Compiling for x86 architecture CPU])
|
|
AC_DEFINE(ARCH_X86,1,[Compiling for x86 architecture])
|
|
have_x86cpu=true
|
|
PROGRAM_NOPIC="-fno-PIC"
|
|
OP_CFLAGS="-O3 -ffast-math"
|
|
AC_MSG_RESULT([x86])
|
|
;;
|
|
x86_64*|k8-*)
|
|
AC_DEFINE(HAVE_X86_CPU,1, [Compiling for x86-64 architecture CPU])
|
|
AC_DEFINE(ARCH_X86_64,1, [Compiling for x86-64 architecture CPU])
|
|
have_x86cpu=true
|
|
have_x86_64cpu=true
|
|
OP_CFLAGS="$OP_CFLAGS -O3 -ftree-vectorize -ffast-math -fopenmp -m64"
|
|
AC_MSG_RESULT([x86_64])
|
|
;;
|
|
powerpc | powerpc64)
|
|
AC_DEFINE(HAVE_PPCCPU,1, [Compiling for PowerPC CPU])
|
|
AC_DEFINE(ARCH_PPC,1,[Compiling for PowerPC])
|
|
have_ppccpu=true
|
|
|
|
case $host in
|
|
*-apple-darwin*)
|
|
PROGRAM_NOPIC="-mdynamic-no-pic" # dynamic-no-pic is an Apple gcc option
|
|
;;
|
|
*)
|
|
PROGRAM_NOPIC=""
|
|
;;
|
|
esac
|
|
OP_CFLAGS="$OP_CFLAGS -O3"
|
|
AC_MSG_RESULT([powerpc])
|
|
;;
|
|
mips | mipsel)
|
|
AC_DEFINE(ARCH_MIPS,1,[Compiling for MIPS CPU])
|
|
AC_DEFINE(HAVE_MIPS,1,[Compiling for MIPS CPU])
|
|
have_mips=true
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
|
|
[[#include <linux/ps2/dev.h>
|
|
#include <linux/ps2/gs.h>
|
|
]])],
|
|
[have_ps2=true],
|
|
[have_ps2=false])
|
|
OP_CFLAGS="$OP_CFLAGS -O3 -ffast-math"
|
|
AC_MSG_RESULT([mips])
|
|
|
|
AC_MSG_CHECKING([if we are compiling on playstation2 hardware])
|
|
if test x$have_ps2 = xtrue ; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PS2,1,[Compile for playstation2])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
;;
|
|
aarch64* |arm)
|
|
AC_DEFINE(HAVE_ARM,1,[Compiling for ARM CPU])
|
|
AC_DEFINE(ARCH_ARM64,1,[Compiling for ARM64 arch])
|
|
have_arm=true
|
|
have_arm64=true
|
|
OP_CFLAGS="$OP_CFLAGS -O3 -ftree-vectorize -fPIC -DPIC"
|
|
AC_MSG_RESULT([arm])
|
|
;;
|
|
armv7* | arm7* )
|
|
AC_DEFINE(HAVE_ARM,1,[Compiling for ARM CPU])
|
|
AC_DEFINE(HAVE_ARMV7A,1,[Compiling for ARM7L CPU])
|
|
OP_CFLAGS="$OP_CFLAGS -O3 -fPIC -DPIC"
|
|
|
|
have_arm=true
|
|
have_armv7a=true
|
|
AC_MSG_RESULT([arm7])
|
|
;;
|
|
*)
|
|
|
|
dnl If you get here, you can change AC_MSG_ERROR to AC_MSG_RESULT
|
|
dnl and uncomment setting the CFLAGS below to have it compile anyway on your system
|
|
AC_MSG_ERROR([unknown, good luck])
|
|
|
|
|
|
;;
|
|
esac
|
|
|
|
if test x$host_alias != x; then
|
|
dnl Cross compiling
|
|
AC_MSG_CHECKING(sub-architecture settings)
|
|
if test x$have_x86cpu = xtrue; then
|
|
host_mod_cpu=`echo $host_cpu|tr _ -`
|
|
ARCHFLAGS="-march=$host_mod_cpu -mcpu=$host_mod_cpu"
|
|
AC_MSG_RESULT($ARCHFLAGS)
|
|
fi
|
|
else
|
|
AC_MSG_CHECKING(sub-architecture settings)
|
|
|
|
chmod +x $srcdir/cpuinfo.sh
|
|
|
|
if test "$arch_target" = "auto"; then
|
|
TMP=`$srcdir/cpuinfo.sh`
|
|
ARCHFLAGS=`cat veejay.arch`
|
|
else
|
|
ARCHFLAGS="-mtune=$arch_target"
|
|
fi
|
|
AC_MSG_RESULT($ARCHFLAGS)
|
|
fi
|
|
|
|
dnl ARM architecture detect NEON and set CFLAGS
|
|
if test x$have_armv7a = xtrue
|
|
then
|
|
AC_CACHE_CHECK(for NEON on processor(s), ac_cv_flag_neon, [
|
|
if grep "^Features.* neon" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_neon=yes
|
|
else
|
|
ac_cv_flag_neon=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_neon = yes ; then
|
|
AC_DEFINE(HAVE_ARM_NEON,1,[Compiling in NEON support])
|
|
OP_CFLAGS="$OP_CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
|
|
FASTARM_CFLAGS="$ARCHFLAGS -march=armv7-a -mthumb -mimplicit-it=always -mthumb-interwork -DCONFIG_THUMB"
|
|
else
|
|
OP_CFLAGS="$OP_CFLAGS -march=native"
|
|
FASTARM_CFLAGS="$ARCHFLAGS"
|
|
fi
|
|
|
|
AC_SUBST(FASTARM_CFLAGS)
|
|
fi
|
|
|
|
if test x$have_arm = xtrue
|
|
then
|
|
AC_CACHE_CHECK(for ASIMD on processor(s), ac_cv_flag_asimd, [
|
|
if grep "^Features.* asimd" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_asimd=yes
|
|
else
|
|
ac_cv_flag_asimd=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_asimd = yes ; then
|
|
AC_DEFINE(HAVE_ARM_ASIMD, 1,[Compiling in ASIMD support])
|
|
fi
|
|
|
|
AC_SUBST(FASTARM_CFLAGS)
|
|
fi
|
|
|
|
|
|
dnl This flag is used for PROGRAMS not SHARED LIBRARIES. PIC code is required
|
|
dnl for shared libraries but is slower than non-pic code. Compute bound
|
|
dnl programs such as yuvdenoise and y4mspatialfilter can use this flag by
|
|
dnl simply adding programname_CFLAGS=@PROGRAM_NOPIC@ to the Makefile.am
|
|
|
|
AC_SUBST(PROGRAM_NOPIC)
|
|
|
|
if test x$have_x86cpu = xtrue
|
|
then
|
|
if test x$have_darwin = xtrue
|
|
then
|
|
dnl Modern OSx, has MMX, SSE, SSE2 and SSE3
|
|
dnl This is not really the right way to do it, but should work for most systems.
|
|
ac_cv_flag_mmx=yes
|
|
ac_cv_flag_sse=yes
|
|
ac_cv_flag_sse4_2=yes
|
|
ac_cv_flag_sse4_1=yes
|
|
ac_cv_flag_sse2=yes
|
|
ac_cv_flag_cmov=yes
|
|
|
|
AC_DEFINE(HAVE_ASM_MMX,1,[Compiling in MMX support])
|
|
AC_DEFINE(HAVE_MMX,1,[Compiling in MMX support])
|
|
have_asm_mmx=true
|
|
|
|
AC_DEFINE(HAVE_ASM_SSE,1,[Compiling in SSE support])
|
|
AC_DEFINE(HAVE_SSE,1,[Compiling in SSE support])
|
|
have_asm_sse=true
|
|
|
|
AC_DEFINE(HAVE_ASM_SSE2,1,[Compiling in SSE2 support])
|
|
AC_DEFINE(HAVE_SSE2,1,[Compiling in SSE2 support])
|
|
have_asm_sse2=true
|
|
|
|
AC_DEFINE(HAVE_CMOV,1,[Compiling in CMOV])
|
|
have_cmov=true
|
|
fi
|
|
|
|
if test x$have_linux = xtrue
|
|
then
|
|
AC_CACHE_CHECK(for MMX on processor(s), ac_cv_flag_mmx, [
|
|
if grep "^flags.* mmx" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_mmx=yes
|
|
else
|
|
ac_cv_flag_mmx=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_mmx = yes; then
|
|
AC_DEFINE(HAVE_ASM_MMX,1,[Compiling in MMX support])
|
|
AC_DEFINE(HAVE_MMX,1,[Compiling in MMX support])
|
|
have_asm_mmx=true
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for SSE on processor(s), ac_cv_flag_sse, [
|
|
if grep "^flags.* sse" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_sse=yes
|
|
else
|
|
ac_cv_flag_sse=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_sse = yes; then
|
|
AC_DEFINE(HAVE_ASM_SSE,1,[Compiling in SSE support])
|
|
AC_DEFINE(HAVE_SSE,1,[Compiling in SSE support])
|
|
have_asm_sse=true
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for SSE2 on processor(s), ac_cv_flag_sse2, [
|
|
if grep "^flags.* sse2" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_sse2=yes
|
|
else
|
|
ac_cv_flag_sse2=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_sse2 = yes; then
|
|
AC_DEFINE(HAVE_ASM_SSE2,1,[Compiling in SSE2 support])
|
|
AC_DEFINE(HAVE_SSE2,1,[Compiling in SSE2 support])
|
|
have_asm_sse2=true
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for SSE4_2 on processor(s), ac_cv_flag_sse4_2, [
|
|
if grep "^flags.* sse4_2" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_sse4_2=yes
|
|
else
|
|
ac_cv_flag_sse4_2=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_sse4_2 = yes; then
|
|
AC_DEFINE(HAVE_ASM_SSE4_2,1,[Compiling in SSE4_2 support])
|
|
AC_DEFINE(HAVE_SSE4_2,1,[Compiling in SSE4_2 support])
|
|
have_asm_sse4_2=true
|
|
OP_CFLAGS="$OP_CFLAGS -msse4.2"
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK(for SSE4_1 on processor(s), ac_cv_flag_sse4_1, [
|
|
if grep "^flags.* sse4_1" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_sse4_1=yes
|
|
else
|
|
ac_cv_flag_sse4_1=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_sse4_1 = yes; then
|
|
AC_DEFINE(HAVE_ASM_SSE4_1,1,[Compiling in SSE4_1 support])
|
|
AC_DEFINE(HAVE_SSE4_1,1,[Compiling in SSE4_1 support])
|
|
have_asm_sse4_1=true
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK(for 3DNOW on processor(s), ac_cv_flag_3dnow, [
|
|
if grep "^flags.*\b3dnow\b" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_3dnow=yes
|
|
else
|
|
ac_cv_flag_3dnow=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_3dnow = yes; then
|
|
AC_MSG_CHECKING([if your CPU understands 3DNOW femms])
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
|
|
[[__asm__ __volatile__("femms":::"memory");]])],
|
|
[have_asm_3dnow=true],
|
|
[have_asm_3dnow=false])
|
|
if test $have_asm_3dnow = true; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_ASM_3DNOW,1,[Compiling in 3Dnow])
|
|
have_asm_3dnow=true
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for CMOV on processor(s), ac_cv_flag_cmov, [
|
|
if grep "^flags.* cmov" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_cmov=yes
|
|
else
|
|
ac_cv_flag_cmov=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_cmov = yes; then
|
|
AC_DEFINE(HAVE_CMOV,1,[Compiling in CMOV])
|
|
have_cmov=true
|
|
fi
|
|
|
|
|
|
dnl check for MMX2
|
|
AC_CACHE_CHECK(for MMX2 on processor(s), ac_cv_flag_mmx2, [
|
|
if grep "^flags.* mmxext" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_mmx2=yes
|
|
else
|
|
ac_cv_flag_mmx2=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_mmx2 = yes; then
|
|
AC_DEFINE(HAVE_ASM_MMX2,1,[Compiling in MMX2])
|
|
AC_DEFINE(HAVE_ASM_MMXEXT,1,[Compiling in MMXEXT])
|
|
have_asm_mmx2=true
|
|
fi
|
|
|
|
dnl check for AVX
|
|
AC_CACHE_CHECK(for AVX on processor(s), ac_cv_flag_avx, [
|
|
if grep "^flags.* avx" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_avx=yes
|
|
else
|
|
ac_cv_flag_avx=no
|
|
fi
|
|
])
|
|
|
|
if test $ac_cv_flag_avx = yes; then
|
|
AC_DEFINE(HAVE_ASM_AVX,1,[Compiling in AVX])
|
|
have_asm_avx=true
|
|
fi
|
|
|
|
dnl check for AVX2
|
|
AC_CACHE_CHECK(for AVX2 on processor(s), ac_cv_flag_avx2, [
|
|
if grep "^flags.* avx2" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_avx2=yes
|
|
else
|
|
ac_cv_flag_avx2=no
|
|
fi
|
|
])
|
|
if test $ac_cv_flag_avx2 = yes; then
|
|
AC_DEFINE(HAVE_ASM_AVX2,1,[Compiling in AVX2])
|
|
have_asm_avx2=true
|
|
fi
|
|
|
|
dnl check for AVX512
|
|
AC_CACHE_CHECK(for AVX512 on processor(s), ac_cv_flag_avx512, [
|
|
if grep "^flags.* avx512" /proc/cpuinfo > /dev/null; then
|
|
ac_cv_flag_avx512=yes
|
|
else
|
|
ac_cv_flag_avx512=no
|
|
fi
|
|
])
|
|
if test $ac_cv_flag_avx512 = yes; then
|
|
AC_DEFINE(HAVE_ASM_AVX512,1,[Compiling in AVX512])
|
|
have_asm_avx512=true
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test x$have_ppccpu = xtrue
|
|
then
|
|
AC_MSG_CHECKING([compiler support for AltiVec])
|
|
cat > conftest.c <<EOF
|
|
#ifdef HAVE_ALTIVEC_H
|
|
#include <altivec.h>
|
|
#endif
|
|
int main() {
|
|
union { vector signed int v;
|
|
signed int i;
|
|
} vi;
|
|
vi.v = vec_splat_s32(1);
|
|
return vi.i;
|
|
}
|
|
EOF
|
|
ALTIVEC_CFLAGS=""
|
|
if $CC -o conftest conftest.c >/dev/null 2>&1; then
|
|
have_altivec=true
|
|
elif $CC $CFLAGS -faltivec -o conftest conftest.c >/dev/null 2>&1; then
|
|
# Mac OS X style
|
|
have_altivec=true
|
|
ALTIVEC_CFLAGS="-faltivec"
|
|
elif $CC $CFLAGS -fvec -o conftest conftest.c >/dev/null 2>&1; then
|
|
# Motorola style
|
|
have_altivec=true
|
|
ALTIVEC_CFLAGS="-fvec"
|
|
elif $CC $CFLAGS -DHAVE_ALTIVEC_H=1 -maltivec -mabi=altivec -o conftest conftest.c >/dev/null 2>&1; then
|
|
# gcc 3.1 style
|
|
have_altivec=true
|
|
ALTIVEC_CFLAGS="-DHAVE_ALTIVEC_H=1 -maltivec -mabi=altivec"
|
|
fi
|
|
rm -f conftest*;
|
|
|
|
AC_MSG_CHECKING([if your system supports altivec])
|
|
if test x$have_altivec = xtrue
|
|
then
|
|
# add -O3 flag
|
|
ALTIVEC_CFLAGS="-O3 ${ALTIVEC_CFLAGS}"
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_ALTIVEC,1,
|
|
[Inline PPC Altivec primitives available])
|
|
AC_SUBST(ALTIVEC_CFLAGS)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(LIBPNG, [libpng], have_libpng=true,have_libpng=false)
|
|
PKG_CHECK_MODULES(LIBQRENCODE,[libqrencode >= 3.4.2], have_qrencode=true,have_qrencode=false)
|
|
if test x$have_qrencode = xfalse;
|
|
then
|
|
AC_MSG_WARN([libqrencode is not present])
|
|
else
|
|
if test x$have_libpng = xfalse;
|
|
then
|
|
AC_MSG_ERROR([libpng is not present])
|
|
fi
|
|
AC_DEFINE( HAVE_QRENCODE,1,[Use QREncode] )
|
|
fi
|
|
|
|
glib_modules="glib-2.0 >= 2.4"
|
|
PKG_CHECK_MODULES(GLIB, [$glib_modules])
|
|
AC_SUBST(GLIB_CFLAGS)
|
|
AC_SUBST(GLIB_LIBS)
|
|
|
|
AC_SUBST(LIBQRENCODE_LIBS)
|
|
AC_SUBST(LIBQRENCODE_CFLAGS)
|
|
AC_SUBST(LIBPNG_LIBS)
|
|
AC_SUBST(LIBPNG_CFLAGS)
|
|
|
|
AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED,,
|
|
[Defined if building against uninstalled FFmpeg source])
|
|
|
|
PKG_CHECK_MODULES(LIBAVUTIL, [libavutil >= 49.7.0],have_avutil=true,have_avutil=false)
|
|
PKG_CHECK_MODULES(LIBAVCODEC,[libavcodec >= 51.35.2],have_avcodec=true,have_avcodec=false)
|
|
PKG_CHECK_MODULES(LIBAVFORMAT,[libavformat >= 52.14.0],have_avformat=true,have_avformat=false)
|
|
PKG_CHECK_MODULES(LIBSWSCALE,[libswscale >= 0.7.1],have_swscale=true,have_swscale=false)
|
|
if test x$have_swscale = xfalse;
|
|
then
|
|
AC_MSG_ERROR([libswscale not found.])
|
|
fi
|
|
if test x$have_avutil = xfalse;
|
|
then
|
|
AC_MSG_ERROR([libavutil not found.])
|
|
fi
|
|
if test x$have_avformat = xfalse;
|
|
then
|
|
AC_MSG_ERROR([libavformat not found.])
|
|
fi
|
|
if test x$have_avcodec = xfalse;
|
|
then
|
|
AC_MSG_ERROR([libavcodec >= 51.57 not found.])
|
|
fi
|
|
|
|
FFMPEG_CFLAGS="${LIBAVFORMAT_CFLAGS} ${LIBAVCODEC_CFLAGS} ${LIBAVUTIL_CFLAGS} ${LIBSWSCALE_CFLAGS}"
|
|
FFMPEG_LIBS="${LIBAVFORMAT_LIBS} ${LIBAVCODEC_LIBS} ${LIBAVUTIL_LIBS} ${LIBSWSCALE_LIBS}"
|
|
AC_SUBST(FFMPEG_CFLAGS)
|
|
AC_SUBST(FFMPEG_LIBS)
|
|
|
|
AC_SUBST(LIBM_LIBS)
|
|
|
|
dnl the check doesnt work on ubuntu, so just fake it.
|
|
RT_LIBS="-lrt"
|
|
AC_CHECK_LIB( rt, clock_gettime, [
|
|
AC_DEFINE( HAVE_CLOCK_GETTIME, 1, [clock_gettime] )
|
|
RT_LIBS="-lrt" ])
|
|
AC_SUBST(RT_LIBS)
|
|
|
|
AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_LIBS="-lpthread"], [], [])
|
|
AC_SUBST([PTHREAD_LIBS])
|
|
|
|
if test "x$PTHREAD_LIBS" != "x"; then
|
|
AC_DEFINE([HAVE_LIBPTHREAD], [1], [Define to 1 if you have the pthread library (-lpthread).])
|
|
have_pthread=true
|
|
else
|
|
have_pthread=false
|
|
fi
|
|
|
|
have_dl_dlopen=false
|
|
AC_CHECK_LIB(dl,dlopen)
|
|
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
|
|
AC_DEFINE(HAVE_DL_DLOPEN,1,[Compile with dlopen support])
|
|
have_dl_dlopen=true
|
|
fi
|
|
|
|
dnl ********************************************************************
|
|
dnl Check to see if __progname is provided by the system
|
|
dnl ********************************************************************
|
|
AC_CACHE_CHECK([for __progname],
|
|
[mjt_cv_extern___progname],
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
|
[[extern char *__progname;
|
|
puts(__progname);]])],
|
|
[mjt_cv_extern___progname=yes],
|
|
[mjt_cv_extern___progname=no])])
|
|
if test x$mjt_cv_extern___progname = xyes ; then
|
|
AC_DEFINE(HAVE___PROGNAME, 1, [Is __progname defined by system?])
|
|
fi
|
|
|
|
dnl **********************************************************************
|
|
dnl All the conditional stuff for the Makefiles
|
|
AM_CONDITIONAL(HAVE_ASM_MMX, test x$have_asm_mmx = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_AVX, test x$have_asm_avx = xtrue )
|
|
AM_CONDITIONAL(HAVE_ASM_AVX2,test x$have_asm_avx2 = xtrue )
|
|
AM_CONDITIONAL(HAVE_ASM_AVX512,test x$have_asm_avx512 = xtrue )
|
|
AM_CONDITIONAL(HAVE_X86CPU, test x$have_x86cpu = xtrue)
|
|
AM_CONDITIONAL(HAVE_PPCCPU, test x$have_ppccpu = xtrue)
|
|
AM_CONDITIONAL(ARCH_PPC, test x$have_ppccpu = xtrue)
|
|
AM_CONDITIONAL(ARCH_X86, test x$have_x86cpu = xtrue)
|
|
AM_CONDITIONAL(ARCH_X86_64, test x$have_x86_64cpu = xtrue)
|
|
AM_CONDITIONAL(HAVE_ALTIVEC, test x$have_altivec = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_MMX2, test x$have_asm_mmx2 = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_SSE, test x$have_asm_sse = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_SSE4_2, test x$have_asm_sse4_2 = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_SSE4_1, test x$have_asm_sse4_1 = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_SSE2, test x$have_asm_sse2 = xtrue)
|
|
AM_CONDITIONAL(HAVE_ASM_NASM, test x$have_asm_nasm = xtrue)
|
|
AM_CONDITIONAL(HAVE_MMX, test x$have_asm_mmx = xtrue)
|
|
AM_CONDITIONAL(HAVE_SSE, test x$have_asm_sse = xtrue)
|
|
AM_CONDITIONAL(HAVE_SSE2, test x$have_asm_sse2 = xtrue)
|
|
AM_CONDITIONAL(HAVE_DL_DLOPEN, test x$have_dl_dlopen = xtrue)
|
|
AM_CONDITIONAL(HAVE_ARM, test x$have_arm = xtrue )
|
|
AM_CONDITIONAL(HAVE_ARM_NEON, test x$ac_cv_flag_neon = xtrue )
|
|
AM_CONDITIONAL(HAVE_ARM_ASIMD, test x$ac_cv_flag_asimd = xtrue )
|
|
AM_CONDITIONAL(HAVE_ARMV7A, test x$have_armv7a = xtrue )
|
|
|
|
dnl *********************************************************************
|
|
dnl Check for what warnings we want gcc to use and adjust the CFLAGS
|
|
dnl as needed. This only works for GCC.
|
|
dnl We do this last as it can screw up library detection etc...
|
|
|
|
CFLAGS="$ARCHFLAGS $CFLAGS"
|
|
CXXFLAGS="$ARCHFLAGS $CXXFLAGS"
|
|
|
|
|
|
AC_SUBST(OP_CFLAGS)
|
|
AC_SUBST(LZO_EXTRA_CFLAGS)
|
|
|
|
if test "x${GCC}" != "xyes" ; then
|
|
enable_compile_warnings=no
|
|
fi
|
|
|
|
AC_MSG_CHECKING(what warning flags to pass to the C compiler)
|
|
warnCFLAGS=
|
|
warnCXXFLAGS=
|
|
if test "x$enable_compile_warnings" != "xno" ; then
|
|
if test "x$GCC" = "xyes" ; then
|
|
case "$CFLAGS" in
|
|
*-Wall*) ;;
|
|
*) warnCFLAGS="-Wall -Wunused " ;;
|
|
esac
|
|
if test "x$enable_compile_warnings" = "xyes" ; then
|
|
warnCFLAGS="$warnCFLAGS -Wundef -Wshadow -Wbad-function-cast -Wunreachable-code -Wmissing-declarations -Wpointer-arith -Wcast-align -Wwrite-strings -Wall"
|
|
warnCXXFLAGS="$warnCXXFLAGS -Wpointer-arith -Wcast-align -Wwrite-strings "
|
|
fi
|
|
if test "x$enable_warnings_as_errors" = "xyes" ; then
|
|
warnCFLAGS="$warnCFLAGS -Werror"
|
|
warnCXXFLAGS="$warnCXXFLAGS -Werror"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test "x$cflags_set" != "xyes" ; then
|
|
if test "x$enable_debug" = "xyes" ; then
|
|
CFLAGS="$debugCFLAGS $warnCFLAGS $CFLAGS"
|
|
else
|
|
CFLAGS="$CFLAGS $warnCFLAGS"
|
|
fi
|
|
CXXFLAGS="$CXXFLAGS $warnCXXFLAGS"
|
|
cflags_set=yes
|
|
fi
|
|
|
|
if test "x$enable_debug" != "xyes" ; then
|
|
CFLAGS="$CFLAGS -fno-stack-protector"
|
|
fi
|
|
|
|
if test x"$with_extra_cflags" != "x"; then
|
|
CFLAGS="$CFLAGS $with_extra_cflags"
|
|
CXXFLAGS="$CXXFLAGS $with_extra_cflags"
|
|
fi
|
|
|
|
dnl output some info on what veejay was build
|
|
BUILD_PLATFORM=${build}
|
|
BUILD_CPU=${build_cpu}
|
|
BUILD_VENDOR=${build_vendor}
|
|
BUILD_OS=${build_os}
|
|
AC_SUBST(BUILD_PLATFORM)
|
|
AC_SUBST(BUILD_CPU)
|
|
AC_SUBST(BUILD_VENDOR)
|
|
AC_SUBST(BUILD_OS)
|
|
|
|
if test ! -r $srcdir/buildinfo.sh; then
|
|
AC_MSG_ERROR([buildinfo.sh script not found.])
|
|
fi
|
|
|
|
chmod +x $srcdir/buildinfo.sh
|
|
|
|
$srcdir/buildinfo.sh
|
|
|
|
dnl **********************************************************************
|
|
dnl Output a Makefile or two and the lib/header descriptor script
|
|
dnl
|
|
|
|
AC_CONFIG_FILES([Makefile])
|
|
|
|
AC_CONFIG_FILES([
|
|
thirdparty/Makefile
|
|
thirdparty/mjpegtools/Makefile
|
|
thirdparty/fastarm/Makefile
|
|
thirdparty/libhash/Makefile
|
|
thirdparty/liblzo/Makefile
|
|
libvjmsg/Makefile
|
|
libvevo/Makefile
|
|
libvjmem/Makefile
|
|
libvjnet/Makefile
|
|
libyuv/Makefile
|
|
veejaycore/Makefile
|
|
veejaycore.pc
|
|
])
|
|
AC_OUTPUT
|
|
|
|
AC_DEFINE(VERSION, ${VERSION})
|
|
|
|
AC_MSG_NOTICE([])
|
|
AC_MSG_NOTICE([ Veejay-Core ${VERSION} build configuration :])
|
|
AC_MSG_NOTICE([])
|
|
AC_MSG_NOTICE([ Compiler flags: ])
|
|
AC_MSG_NOTICE([ CFLAGS=$CFLAGS ])
|
|
AC_MSG_NOTICE([ OP_CFLAGS=$OP_CFLAGS ])
|
|
AC_MSG_NOTICE([ architecture: $arch_target])
|
|
AC_MSG_NOTICE([])
|
|
AC_MSG_NOTICE([ Architecture: ${host_cpu} ])
|
|
AC_MSG_NOTICE([])
|
|
if test "$have_x86cpu" = "true" ; then
|
|
AC_MSG_NOTICE([ x86 ])
|
|
AC_MSG_NOTICE([ MMX enabled : ${ac_cv_flag_mmx}])
|
|
AC_MSG_NOTICE([ MMX2 enabled : ${ac_cv_flag_mmx2}])
|
|
AC_MSG_NOTICE([ SSE enabled : ${ac_cv_flag_sse}])
|
|
AC_MSG_NOTICE([ SSE4_2 enabled : ${ac_cv_flag_sse4_2}])
|
|
AC_MSG_NOTICE([ SSE4_1 enabled : ${ac_cv_flag_sse4_1}])
|
|
AC_MSG_NOTICE([ SSE2 enabled : ${ac_cv_flag_sse2}])
|
|
AC_MSG_NOTICE([ 3DNOW enabled : ${ac_cv_flag_3dnow}])
|
|
AC_MSG_NOTICE([ CMOV enabled : ${ac_cv_flag_cmov}])
|
|
AC_MSG_NOTICE([ AVX enabled : ${ac_cv_flag_avx}])
|
|
AC_MSG_NOTICE([ AVX2 enabled : ${ac_cv_flag_avx2}])
|
|
AC_MSG_NOTICE([ AVX-512 enabled : ${ac_cv_flag_avx512}])
|
|
fi
|
|
|
|
if test "$have_ppccpu" = "true" ; then
|
|
AC_MSG_NOTICE([ ppc])
|
|
AC_MSG_NOTICE([ AltiVec enabled : ${have_altivec}])
|
|
fi
|
|
|
|
if test "$have_arm" = "true" ; then
|
|
AC_MSG_NOTICE([ arm])
|
|
AC_MSG_NOTICE([ ASIMD enabled : ${ac_cv_flag_asimd}])
|
|
fi
|
|
if test "$have_armv7a" = "true"; then
|
|
AC_MSG_NOTICE([ arm7a])
|
|
AC_MSG_NOTICE([ NEON enabled : ${ac_cv_flag_neon}])
|
|
fi
|
|
|
|
if test "$have_mips" = "true" ; then
|
|
AC_MSG_NOTICE([ mips])
|
|
AC_MSG_NOTICE([ PS/2 enabled : ${have_ps2}])
|
|
fi
|
|
AC_MSG_NOTICE([])
|
|
if test "$have_linux" = "true" ; then
|
|
AC_MSG_NOTICE([ Platform: Linux])
|
|
fi
|
|
|
|
if test "$have_darwin" = "true" ; then
|
|
AC_MSG_NOTICE([ Platform: Darwin])
|
|
AC_MSG_NOTICE([ Good luck! You can be the first! ])
|
|
fi
|
|
AC_MSG_NOTICE([])
|
|
AC_MSG_NOTICE([ Required dependencies:])
|
|
AC_MSG_NOTICE([ - POSIX Threads (pthread) : ${have_pthread}])
|
|
AC_MSG_NOTICE([ - FFmpeg/AV AVFormat : ${have_avformat} ])
|
|
AC_MSG_NOTICE([ - FFmpeg/AV AVCodec : ${have_avcodec} ])
|
|
AC_MSG_NOTICE([ - FFmpeg/AV Swscaler : ${have_swscale} ])
|
|
AC_MSG_NOTICE([ - FFmpeg/AV AVUtil : ${have_avutil} ])
|
|
|
|
cat NEWS
|