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([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 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 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 #include ]])], [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.* 3dnow" /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 < #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