Files
motion/configure.ac
2016-09-28 16:40:10 +02:00

1278 lines
32 KiB
Plaintext

# Process this file with autoconf to produce a configure script
AC_INIT(motion, esyscmd(['./version.sh']))
AC_GNU_SOURCE
AC_CONFIG_SRCDIR([motion.c])
AC_CONFIG_HEADERS(config.h)
AC_PROG_CC
THREAD_CFLAGS=""
THREAD_CHECK="/usr/include/pthread.h"
Darwin=""
FreeBSD=""
LINUXTHREADS="no"
AC_ARG_WITH(linuxthreads,
[ --with-linuxthreads Use linuxthreads in BSD instead of native pthreads
]
,
LINUXTHREADS="$withval"
)
PWCBSD="no"
AC_ARG_WITH(pwcbsd,
[ --with-pwcbsd Use pwcbsd based webcams ( only BSD )
]
,
PWCBSD="$withval"
)
AC_MSG_CHECKING(for Darwin)
Darwin=`uname -a | grep "Darwin"`
if test "${Darwin}" = ""; then
AC_MSG_RESULT(no)
AC_MSG_CHECKING(for *BSD)
FreeBSD=`uname -a | grep "FreeBSD"`
if test "${FreeBSD}" = ""; then
AC_MSG_RESULT(no)
VIDEO="video.o video2.o video_common.o"
else
AC_MSG_RESULT(yes)
if test "${LINUXTHREADS}" = "no"; then
AC_MSG_CHECKING(Linuxthreads)
AC_MSG_RESULT(skipping)
else
THREAD_CHECK="/usr/local/include/pthread/linuxthreads/pthread.h"
THREAD_LIB_CHECK="/usr/local/lib/liblthread.so"
fi
if test "${PWCBSD}" != "no"; then
VIDEO="video.o video2.o video_common.o"
TEMP_CFLAGS="${CFLAGS} -I/usr/local/include -DPWCBSD"
else
VIDEO="video_freebsd.o"
TEMP_CFLAGS="${CFLAGS} -I/usr/local/include"
fi
TEMP_LDFLAGS="${LDFLAGS} -L/usr/local/lib"
TEMP_LIBS="-L/usr/local/lib"
AC_MSG_RESULT(Build with PWCBSD support $PWCBSD)
fi
else
TEMP_CFLAGS="${CFLAGS} -I/sw/include"
TEMP_LDFLAGS="${LDFLAGS} -L/sw/lib"
TEMP_LIBS="-L/sw/lib"
VIDEO="video_freebsd.o"
FINK_LIB="-L/sw/lib"
Darwin="yes"
V4L="no"
AC_MSG_RESULT($Darwin)
fi
AC_SUBST(VIDEO)
# Checks for programs.
AC_PROG_CC
TEMP_LIBS="-lm ${TEMP_LIBS}"
TEMP_CFLAGS="${TEMP_CFLAGS} ${CFLAGS}"
TEMP_LDFLAGS="${TEMP_LDFLAGS} ${LDFLAGS}"
if test "${FreeBSD}" != "" && test "${PWCBSD}" = "no"; then
AC_MSG_CHECKING(bktr headers in /usr/include/dev/bktr)
if test -f /usr/include/dev/bktr/ioctl_meteor.h && test -f /usr/include/dev/bktr/ioctl_bt848.h; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
TEMP_CFLAGS="${TEMP_CFLAGS} -DOLD_BKTR"
fi
#
# Check to Exclude BKTR
#
BKTR="yes"
AC_ARG_WITH(bktr,
[ --without-bktr Exclude to use bktr subsystem , that usually useful
for devices as network cameras ( ONLY used in *BSD).
]
,
BKTR="$withval"
)
if test "${BKTR}" = "no"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DWITHOUT_V4L"
fi
else
#
# Check to Exclude V4L
#
V4L="yes"
AC_ARG_WITH(v4l,
[ --without-v4l Exclude using v4l (video4linux) subsystem.
Makes Motion so it only supports network cameras.
],
V4L="$withval"
)
fi
if test "${V4L}" = "no"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DWITHOUT_V4L"
fi
if test "${FreeBSD}" != "" && test "${LINUXTHREADS}" != "no" ; then
AC_MSG_CHECKING(for linuxthreads)
#
# Check for thread header
#
if test -f "${THREAD_CHECK}"; then
HEADERS_THREAD_CFLAGS="-I/usr/local/include/pthread/linuxthreads"
THREADS="yes"
else
THREADS="no"
fi
#
# Check for thread lib
#
if test -f "${THREAD_LIB_CHECK}" ; then
THREADS="yes"
LIB_THREAD="-llthread -llgcc_r"
else
THREADS="no"
fi
# Checks for Library linuxthreads for FreeBSD
#
# linuxthreads on freeBSD, ports collection
# /usr/local/include/pthreads/linuxthreads/pthread.h
# #include <linuxthreads/pthread.h>
# /usr/local/lib/libpthread.so
#
if test "${THREADS}" = "yes"; then
TEMP_CFLAGS="${HEADERS_THREAD_CFLAGS} $TEMP_CFLAGS -DWITH_LINUXTREADS"
TEMP_LIBS="$TEMP_LIBS ${LIB_THREAD}"
THREAD_CFLAGS="-D_THREAD_SAFE"
PTHREAD_SUPPORT="yes"
AC_MSG_RESULT($THREADS)
else
PTHREAD_SUPPORT="no"
AC_MSG_RESULT($THREADS)
echo
echo "You do not have linuxthread installed"
echo
fi
elif test -f "${THREAD_CHECK}"; then
AC_MSG_CHECKING(threads)
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[PTHREAD_LIB=yes])
if test x$PTHREAD_LIB != xyes; then
if test "${FreeBSD}" != ""; then
TEMP_LIBS="$TEMP_LIBS -pthread"
TEMP_CFLAGS="${TEMP_CFLAGS} -D_REENTRANT -D_THREAD_SAFE"
else
TEMP_LIBS="$TEMP_LIBS -lpthread"
TEMP_CFLAGS="${TEMP_CFLAGS} -D_REENTRANT"
fi
PTHREAD_SUPPORT="yes"
fi
AC_MSG_RESULT($PTHREAD_SUPPORT)
else
echo
echo "You do not have threads support"
echo
fi
if test "x$PTHREAD_SUPPORT" = "xyes"; then
AC_MSG_CHECKING([[for pthread_setname_np]])
CFLAGS="$TEMP_CFLAGS"
LIBS="$TEMP_LIBS"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <pthread.h>]], [[ pthread_setname_np(pthread_self(), "name")]])],
[AC_DEFINE([[HAVE_PTHREAD_SETNAME_NP]], [[1]], [Define if you have pthread_setname_np function.])
AC_MSG_RESULT([[yes]])],
[AC_MSG_RESULT([[no]])] )
fi
#
# Check for sdl library
#
SDL_SUPPORT="no"
AC_ARG_WITH(sdl,
[ --with-sdl[=DIR] Specify the prefix for the install path for
sdl-config to get stream in SDL window (optional).
],
[],
[withval="no"])
if test "x$withval" = "xno"; then
AC_MSG_CHECKING(for sdl)
AC_MSG_RESULT(skipped)
else
AC_PATH_PROG([CONFIG_SDL], [sdl-config], [], [${PATH}:${withval}:${withval}/bin])
if test -z "`($CONFIG_SDL --version) 2>/dev/null`" ;then
echo ""
echo "****************************************************"
echo "* sdl-config could not be found. Please install it *"
echo "* and remove the --with-sdl configure argument. *"
echo "* libSDL can be found at http://www.libsdl.org *"
echo "****************************************************"
echo ""
else
SDL_SUPPORT="yes"
TEMP_LIBS="$TEMP_LIBS `${CONFIG_SDL} --libs`"
TEMP_CFLAGS="${TEMP_CFLAGS} `${CONFIG_SDL} --cflags`"
AC_DEFINE([HAVE_SDL],1,[Define to 1 if you have SDL support])
SDL_OBJ="sdl.o"
AC_SUBST(SDL_OBJ)
fi
fi
#
# Check for the libjpeg-turbo library
#
JPEG_TURBO="no"
JPEG_TURBO_OK="not_found"
AC_ARG_WITH(jpeg-turbo,
[ --with-jpeg-turbo[=DIR] Specify the prefix for the install path for
jpeg-turbo for optimized jpeg handling (optional).
],
JPEG_TURBO="$withval"
)
if test "${JPEG_TURBO}" = "no"; then
AC_MSG_CHECKING(for libjpeg-turbo)
AC_MSG_RESULT(skipping)
else
AC_MSG_CHECKING(for libjpeg-turbo in -> [${JPEG_TURBO}] <-)
if test -f ${JPEG_TURBO}/lib/libjpeg.a -o -f ${JPEG_TURBO}/lib/libjpeg.so; then
AC_MSG_RESULT(found)
JPEG_TURBO_OK="found"
else
AC_MSG_RESULT(not found)
fi
fi
if test "${JPEG_TURBO_OK}" = "found"; then
saved_CFLAGS="$CFLAGS"
saved_LIBS="$LIBS"
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="-L${JPEG_TURBO}/lib"
CFLAGS="$CFLAGS -I${JPEG_TURBO}/include"
LIBS="$LIBS -L${JPEG_TURBO}/lib -ljpeg"
AC_CHECK_LIB(jpeg, jpeg_start_compress,
[ TEMP_LIBS="$TEMP_LIBS -L${JPEG_TURBO}/lib -ljpeg"
TEMP_CFLAGS="${TEMP_CFLAGS} -I${JPEG_TURBO}/include"
TEMP_LDFLAGS="$TEMP_LDFLAGS $LDFLAGS"
JPEG_SUPPORT="yes"],,)
LIBS="$saved_LIBS"
CFLAGS="$saved_CFLAGS"
LDFLAGS="$saved_LDFLAGS"
JPEG_SUPPORT_TURBO="yes"
fi
#
# Check for the special mmx accelerated jpeg library
#
JPEG_MMX="no"
JPEG_MMX_OK="not_found"
AC_ARG_WITH(jpeg-mmx,
[ --with-jpeg-mmx[=DIR] Specify the prefix for the install path for
jpeg-mmx for optimized jpeg handling (optional).
If this is not specified motion will try to find
the library /usr/lib/libjpeg-mmx.a /usr/local/lib/libjpeg-mmx.a.
],
JPEG_MMX="$withval"
)
#
# --without-jpeg-mmx or with-jpeg-mmx=no
#
if test "${JPEG_MMX}" = "no" || test x$JPEG_SUPPORT != xyes; then
AC_MSG_CHECKING(for libjpeg-mmx)
AC_MSG_RESULT(skipping)
elif test "${JPEG_MMX}" = "yes"; then
# AUTODETECT STATIC LIB
AC_MSG_CHECKING(for libjpeg-mmx autodetecting)
if test -f /usr/lib/libjpeg-mmx.a ; then
AC_MSG_RESULT(found)
JPEG_MMX_OK="found"
JPEG_MMX="/usr/lib"
elif test -f /usr/local/lib/libjpeg-mmx.a ; then
AC_MSG_RESULT(found)
JPEG_MMX_OK="found"
JPEG_MMX="/usr/local/lib"
else
AC_MSG_RESULT(not found)
fi
else
AC_MSG_CHECKING(for libjpeg-mmx in -> [${JPEG_MMX}] <-)
if test -f ${JPEG_MMX}/libjpeg-mmx.a ; then
AC_MSG_RESULT(found)
JPEG_MMX_OK="found"
else
AC_MSG_RESULT(not found)
fi
fi
if test "${JPEG_MMX_OK}" = "found"; then
saved_CFLAGS="$CFLAGS"
saved_LIBS="$LIBS"
CFLAGS="$CFLAGS -I${JPEG_MMX}"
LIBS="$LIBS -L${JPEG_MMX}"
AC_CHECK_LIB(jpeg-mmx, jpeg_start_compress,
[ TEMP_LIBS="$TEMP_LIBS -ljpeg-mmx"
TEMP_CFLAGS="${TEMP_CFLAGS} -I${JPEG_MMX}"
JPEG_SUPPORT="yes"],,)
LIBS="$saved_LIBS"
CFLAGS="$saved_CFLAGS"
JPEG_SUPPORT_MMX="yes"
fi
#
# Look for _a_ jpeg lib that will work.
#
if test x$JPEG_SUPPORT != xyes ; then
# Checks for libraries
LDFLAGS=$TEMP_LDFLAGS
AC_CHECK_LIB(jpeg, jpeg_set_defaults, [
TEMP_LIBS="$TEMP_LIBS -ljpeg"
JPEG_SUPPORT="yes"
], [
echo
echo "You do not have libjpeg installed"
echo
]
)
fi
#
# Check for the pkg-config.
#
AC_CHECK_PROG([PKGCONFIG],[pkg-config],[yes],[no])
AM_CONDITIONAL([FOUND_PKGCONFIG], [test "x$PKGCONFIG" = xyes])
AM_COND_IF([FOUND_PKGCONFIG],,[AC_MSG_ERROR([Required package 'pkg-config' not found, please check motion_guide.html and install necessary dependencies.])])
# Check for raspberry pi mmal interface
#
WITHOUT_MMAL="no"
AC_ARG_WITH([mmal],
AS_HELP_STRING([--without-mmal],
[Compile without RaspberyPi mmal camera support]),
WITHOUT_MMAL="yes",
WITHOUT_MMAL="no")
if test "${WITHOUT_MMAL}" = "no"; then
HAVE_MMAL=""
LIBRASPBERRYPIDEVPATH="/opt/vc/include/interface/mmal"
if test -d ${LIBRASPBERRYPIDEVPATH}; then
HAVE_MMAL="yes"
fi
AS_IF([test "${HAVE_MMAL}" = "yes" ], [
AC_SUBST(MMAL_CFLAGS)
AC_SUBST(MMAL_OBJ)
AC_SUBST(MMAL_LIBS)
MMAL_OBJ="mmalcam.o raspicam/RaspiCamControl.o raspicam/RaspiCLI.o"
MMAL_CFLAGS="-std=gnu99 -DHAVE_MMAL -Irasppicam -I/opt/vc/include"
MMAL_LIBS="-L/opt/vc/lib -lmmal_core -lmmal_util -lmmal_vc_client -lvcos -lvchostif -lvchiq_arm"
AC_DEFINE([HAVE_MMAL], 1, [Define to 1 if we want MMAL])
])
fi
#
# Check for libavcodec and libavformat from ffmpeg
#
FFMPEG_OBJ=""
AC_ARG_WITH([ffmpeg],
AS_HELP_STRING([--with-ffmpeg[=DIR]], [Build with FFMPEG support]),
[with_ffmpeg=$withval],
[with_ffmpeg=yes])
AS_IF([test "x$with_ffmpeg" != "xno"], [
AS_IF([test "x$with_ffmpeg" != "xyes"], [
PKG_CONFIG_PATH=${with_ffmpeg}/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
])
AC_SUBST(FFMPEG_LIBS)
AC_SUBST(FFMPEG_CFLAGS)
FFMPEG_DEPS="libavutil libavformat libavcodec libswscale"
if pkg-config $FFMPEG_DEPS; then
FFMPEG_CFLAGS=`pkg-config --cflags $FFMPEG_DEPS`
FFMPEG_LIBS=`pkg-config --libs $FFMPEG_DEPS`
HAVE_FFMPEG="yes"
else
AC_MSG_ERROR([Required ffmpeg packages 'libavutil-dev libavformat-dev libavcodec-dev libswscale-dev' were not found. Please check motion_guide.html and install necessary dependencies or use the '--without-ffmpeg' configuration option.])
fi
])
AS_IF([test "${HAVE_FFMPEG}" = "yes" ], [
FFMPEG_OBJ="ffmpeg.o"
AC_DEFINE([HAVE_FFMPEG], 1, [Define to 1 if FFMPEG is around])
])
AC_SUBST(FFMPEG_OBJ)
#
# Check SQLITE3
#
SQLITE3_SUPPORT="no"
AC_ARG_WITH(sqlite3,
[ --without-sqlite3 Disable sqlite3 support in motion.
],
SQLITE3="$withval"
# if not given argument, assume standard
)
if test "${SQLITE3}" = "no"; then
AC_MSG_CHECKING(for sqlite3)
AC_MSG_RESULT(skipping)
else
saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS
# first we check to see if the sqlite3 amalgamation (sqlite3.c), is in with our source
# this is the preferred way to use sqlite
if test -f sqlite3.c; then
SQLITE3_SUPPORT="yes"
VIDEO="$VIDEO sqlite3.o"
TEMP_LIBS="$TEMP_LIBS -ldl"
AC_DEFINE([HAVE_SQLITE3],1,[Define to 1 if you have SQLITE3])
AC_DEFINE([HAVE_SQLITE3_EMBEDDED],1,[Define to 1 if you have SQLITE3 embedded support])
else
# if sqlite3.c is not found then we look for the shared library
AC_CHECK_LIB(sqlite3, sqlite3_open,
[
TEMP_LIBS="$TEMP_LIBS -lsqlite3"
SQLITE3_SUPPORT="yes"
AC_DEFINE([HAVE_SQLITE3],1,[Define to 1 if you have SQLITE3 shared library support])
]
)
fi
CFLAGS=$saved_CFLAGS
LIBS=$saved_LIBS
fi
#
# Check Mysql
#
MYSQL="yes"
MYSQL_SUPPORT="no"
MYSQL_HEADERS="yes"
MYSQL_LIBS="yes"
AC_MSG_CHECKING(for mysql support)
AC_ARG_WITH(mysql,
[ --without-mysql Disable mysql support in motion.
],
MYSQL="$withval"
# if not given argument, assume standard
)
AC_ARG_WITH(mysql-lib,
[ --with-mysql-lib[=DIR] Normally, configure will scan all possible default
installation paths for mysql libs. When it fails, use
this command to tell configure where mysql libs
installation root directory is.
],
MYSQL_LIBS="$withval"
# if not given argument, assume standard
)
AC_ARG_WITH(mysql-include,
[ --with-mysql-include[=DIR] Normally, configure will scan all possible default
installation paths for mysql include. When it fails, use
this command to tell configure where mysql include
installation root directory is.
],
MYSQL_HEADERS="$withval"
# if not given argument, assume standard
)
if test "${MYSQL}" = "no"; then
AC_MSG_RESULT(skipped)
else
AC_MSG_RESULT(testing)
# ******* Search mysql headers *******
if test "${MYSQL_HEADERS}" = "yes"; then
AC_MSG_CHECKING(autodect mysql headers)
# Autodetect
for w in /usr/include /usr/local/include /usr/mysql /usr/local/mysql /usr/local/mysql/include /opt /opt/mysql; do
# check for plain setups
if test -f $w/mysql.h; then
MYSQL_INCDIR=$w
break
fi
# check for "/usr/include/<packagename>" type setups
if test -f $w/mysql/mysql.h; then
MYSQL_INCDIR=$w/mysql
break
fi
# check for "/usr/<packagename>/include" type setups
if test -f $w/mysql/include/mysql.h; then
MYSQL_INCDIR=$w/mysql/include
break
fi
done
elif test "${MYSQL_HEADERS}" = "no"; then
AC_MSG_CHECKING(for mysql headers)
AC_MSG_RESULT(skipped)
else
AC_MSG_CHECKING(for mysql headers in $MYSQL_HEADERS)
# Manual detection for <withval>
if test -f $MYSQL_HEADERS/mysql.h; then
MYSQL_INCDIR=$MYSQL_HEADERS
fi
fi
if test -z "$MYSQL_INCDIR" ; then
MYSQL_HEADERS="no"
AC_MSG_RESULT(not found)
echo "Invalid MySQL directory - unable to find mysql.h."
else
AC_MSG_RESULT($MYSQL_INCDIR yes)
MYSQL_HEADERS="yes"
fi
if test "${MYSQL_HEADERS}" = "yes"; then
# ******* Search mysql libs *********
if test "${MYSQL_LIBS}" = "yes"; then
AC_MSG_CHECKING(autodect mysql libs)
# Autodetect
for w in /usr/lib64 /usr/lib /usr/local/lib /usr/mysql /usr/local/mysql /usr/local/mysql/lib /opt /opt/mysql /usr/lib/x86_64-linux-gnu; do
# check for plain setups
if test -f $w/libmysqlclient.a -o -f $w/libmysqlclient.so; then
MYSQL_LIBDIR=$w
break
fi
# check for "/usr/lib/<packagename>" type setups
if test -f $w/mysql/libmysqlclient.a -o -f $w/mysql/libmysqlclient.so; then
MYSQL_LIBDIR=$w/mysql
break
fi
# check for "/usr/<packagename>/lib" type setups
if test -f $w/mysql/lib/libmysqlclient.a -o -f $w/mysql/lib/libmysqlclient.so; then
MYSQL_LIBDIR=$w/mysql/lib
break
fi
done
elif test "${MYSQL_LIBS}" = "no"; then
AC_MSG_CHECKING(for mysql libs)
AC_MSG_RESULT(skipped)
else
AC_MSG_CHECKING(for mysql libs in $MYSQL_LIBS)
# Manual detection for <withval>
if test -f $MYSQL_LIBS/libmysqlclient.a -o -f $MYSQL_LIBS/libmysqlclient.so; then
MYSQL_LIBDIR=$MYSQL_LIBS
fi
fi
if test -z "$MYSQL_LIBDIR" ; then
AC_MSG_RESULT(not found)
echo "Invalid MySQL directory - unable to find libmysqlclient.a or libmysqlclient.so."
else
AC_MSG_RESULT($MYSQL_LIBDIR)
#LDFLAGS="-L$MYSQL_LIBDIR"
saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS
CFLAGS="-I$MYSQL_INCDIR"
LIBS="-L$MYSQL_LIBDIR"
AC_CHECK_LIB(mysqlclient,mysql_init,[
TEMP_LIBS="$TEMP_LIBS -L$MYSQL_LIBDIR -lmysqlclient -lz"
TEMP_CFLAGS="$TEMP_CFLAGS -I$MYSQL_INCDIR"
MYSQL_SUPPORT="yes"
AC_DEFINE([HAVE_MYSQL],1,[Define to 1 if you have MySQL support])
],
AC_MSG_ERROR(MySQL support can't build without MySQL libraries))
CFLAGS=$saved_CFLAGS
LIBS=$saved_LIBS
fi
# end mysql-include , mysql-libs
fi
# end Mysql detection
fi
#
# Check PostgreSQL
#
PGSQL="yes"
PGSQL_SUPPORT="no"
PGSQL_HEADERS="yes"
PGSQL_LIBS="yes"
AC_DEFUN([PGSQL_INC_CHK],[if test -r $i$1/libpq-fe.h; then PGSQL_DIR=$i; PGSQL_INCDIR=$i$1])
AC_ARG_WITH(pgsql,
[ --without-pgsql Disable PostgreSQL support in motion.
],
PGSQL="$withval"
# if not given argument, assume standard
)
AC_ARG_WITH(pgsql-lib,
[ --with-pgsql-lib[=DIR] Normally, configure will scan all possible default
installation paths for pgsql libs. When it fails, use
this command to tell configure where pgsql libs
installation root directory is.
],
PGSQL_LIBS="$withval"
# if not given argument, assume standard
)
AC_ARG_WITH(pgsql-include,
[ --with-pgsql-include[=DIR] Normally, configure will scan all possible default
installation paths for pgsql include. When it fails, use
this command to tell configure where pgsql include
installation root directory is.
],
PGSQL_HEADERS="$withval"
# if not given argument, assume standard
)
AC_MSG_CHECKING(for PostgreSQL)
if test "${PGSQL}" = "no"; then
AC_MSG_RESULT(skipped)
else
AC_MSG_RESULT(testing)
# ******* Search pgsql headers *******
if test "${PGSQL_HEADERS}" = "yes"; then
AC_MSG_CHECKING(autodect pgsql headers)
# Autodetect
for i in /usr /usr/local /usr/local/pgsql $PHP_PGSQL; do
PGSQL_INC_CHK(/include)
el[]PGSQL_INC_CHK(/include/pgsql)
el[]PGSQL_INC_CHK(/include/postgresql)
fi
done
elif test "${PGSQL_HEADERS}" = "no"; then
AC_MSG_CHECKING(for pgsql headers)
AC_MSG_RESULT(skipped)
else
AC_MSG_CHECKING(for pgsql headers in $PGSQL_HEADERS)
# Manual detection for <withval>
if test -f $PGSQL_HEADERS/libpq-fe.h; then
PGSQL_INCDIR=$PGSQL_HEADERS
fi
fi
if test -z "$PGSQL_INCDIR" ; then
PGSQL_HEADERS="no"
AC_MSG_RESULT(not found)
echo "Invalid PostgreSQL directory - unable to find libpq-fe.h."
else
AC_MSG_RESULT(yes [$PGSQL_INCDIR])
PGSQL_HEADERS="yes"
fi
if test "${PGSQL_HEADERS}" = "yes"; then
# ******* Search pgsql libs *********
if test "${PGSQL_LIBS}" = "yes"; then
AC_MSG_CHECKING(autodect pgsql libs)
# Autodetect
PGSQL_INCLUDE="-I$PGSQL_INCDIR"
PGSQL_LIBDIR=$PGSQL_DIR/lib
if test -f /usr/lib64/libpq.so ; then
PGSQL_LIBDIR=/usr/lib64
elif test -f $PGSQL_DIR/lib/pgsql/libpq.so ; then
PGSQL_LIBDIR=$PGSQL_DIR/lib/pgsql
elif test -f $PGSQL_DIR/lib/postgresql/libpq.so ; then
PGSQL_LIBDIR=$PGSQL_DIR/lib/postgresql
elif test -f $PGSQL_DIR/lib/libpq.so ; then
PGSQL_LIBDIR=$PGSQL_DIR/lib
else
PGSQL_LIBDIR=""
fi
AC_MSG_RESULT($PGSQL_LIBDIR)
elif test "${PGSQL_LIBS}" = "no"; then
AC_MSG_CHECKING(for pgsql libs)
AC_MSG_RESULT(skipped)
else
AC_MSG_CHECKING(for pgsql libs in $PGSQL_LIBS)
# Manual detection for <withval>
if test -f $PGSQL_LIBS/libpq.a -o -f $PGSQL_LIBS/libpq.so; then
PGSQL_LIBDIR=$PGSQL_LIBS
fi
fi
if test -z "$PGSQL_LIBDIR" ; then
AC_MSG_RESULT(not found)
echo "Invalid PostgreSQL directory [$PGSQL_LIBDIR] - unable to find libpq.a or libpq.so."
else
#LDFLAGS="$TEMP_LDFLAGS -L$PGSQL_LIBDIR"
saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS
CFLAGS="-I$PGSQL_INCDIR"
LIBS="-L$PGSQL_LIBDIR"
AC_CHECK_LIB(pq, PQconnectStart, [
PGSQL_SUPPORT="yes"
TEMP_LIBS="$TEMP_LIBS -L$PGSQL_LIBDIR -lpq"
TEMP_CFLAGS="$TEMP_CFLAGS -I$PGSQL_INCDIR"
AC_DEFINE([HAVE_PGSQL],1,[Define to 1 if you have PostgreSQL support])
],
AC_MSG_ERROR(PostgreSQL support can't build without PostgreSQL libraries))
LDFLAGS=""
CFLAGS=$saved_CFLAGS
LIBS=$saved_LIBS
fi
fi # end pgsql-include , pgsql-libs
# end PostgreSQL detection
fi
#Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(stdio.h unistd.h stdint.h fcntl.h time.h signal.h sys/ioctl.h sys/mman.h linux/videodev.h linux/videodev2.h sys/param.h sys/types.h sys/videoio.h)
AC_CHECK_FUNCS(get_current_dir_name)
# Check if v4l2 is available
SUPPORTED_V4L2=false
SUPPORTED_V4L2_old=false
if test "${V4L}" = "no"; then
AC_MSG_CHECKING(for V42L support)
AC_MSG_RESULT(skipping)
else
AC_CHECK_TYPE([struct v4l2_buffer],
[SUPPORTED_V4L2=true],
[SUPPORTED_V4L2=false],
[#include <sys/time.h>
#ifdef HAVE_LINUX_VIDEODEV_H
#include <linux/videodev.h>
#elif HAVE_SYS_VIDEOIO_H
#include <sys/videoio.h>
#endif])
AC_MSG_CHECKING(for V42L support)
if test x$SUPPORTED_V4L2 = xtrue; then
AC_MSG_RESULT(yes)
TEMP_CFLAGS="${TEMP_CFLAGS} -DMOTION_V4L2"
else
AC_MSG_RESULT(no)
fi
# linux/videodev.h doesn't include videodev2.h
if test x$SUPPORTED_V4L2 = xfalse; then
AC_MSG_CHECKING(for V42L *old* support)
AC_MSG_RESULT(testing)
AC_CHECK_HEADERS(linux/videodev2.h,[SUPPORTED_V4L2_old=true],[], [#include <asm/types.h>])
fi
if test x$SUPPORTED_V4L2_old = xtrue; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DMOTION_V4L2 -DMOTION_V4L2_OLD"
SUPPORTED_V4L2=true
fi
fi
# Check sizes of integer types
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long int)
AC_CHECK_SIZEOF(long long)
AC_CHECK_SIZEOF(int *)
AC_CHECK_SIZEOF(void *)
if test "$ac_cv_sizeof_short" = "4"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DTYPE_32BIT=\"short\""
else
if test "$ac_cv_sizeof_int" = "4"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DTYPE_32BIT=\"int\""
else
if test "$ac_cv_sizeof_long_int" = "4"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -DTYPE_32BIT=\"long int\""
fi
fi
fi
OPTIMIZECPU="yes"
AC_ARG_WITH(optimizecpu,
[ --without-optimizecpu Exclude autodetecting platform and cpu type.
This will disable the compilation of gcc
optimizing code by platform and cpu.
],
OPTIMIZECPU="$withval"
)
DEVELOPER_FLAGS="no"
AC_ARG_WITH(developer-flags,
[ --with-developer-flags Causes practically all of the possible gcc
warning flags to be set. This may produce
a large amount of warnings.],
DEVELOPER_FLAGS="$withval"
)
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
if test "${FreeBSD}" != ""; then
OPTIMIZECPU=""
fi
if test "${OPTIMIZECPU}" = "yes"; then
# Try to autodetect cpu type
CPU_NAME="unknown"
CPU_TYPE="unknown"
if test -e "/proc/device-tree/model"; then
# explicit test for RPI3 as /proc/cpuinfo reports armv7 even though
# it is armv8
RPI3=`grep "Raspberry Pi 3 Model" /proc/device-tree/model`
if test "x${RPI3}" != "x"; then
CPU_NAME="Raspberry Pi 3"
CPU_TYPE="Raspberry Pi 3"
CPU_OPTIONS="-mcpu=cortex-a53 -mfpu=neon-fp-armv8"
fi
fi
if test "x${CPU_TYPE}" = "xunknown" && test -e "/proc/cpuinfo" ; then
intel[[30]]="-march=i386"
intel[[32]]="-march=i386"
intel[[34]]="-march=i386"
intel[[40]]="-march=i486"
intel[[41]]="-march=i486"
intel[[42]]="-march=i486"
intel[[43]]="-march=i486"
intel[[44]]="-march=i486"
intel[[45]]="-march=i486"
intel[[47]]="-march=i486"
intel[[48]]="-march=i486"
intel[[51]]="-march=pentium"
intel[[52]]="-march=pentium"
intel[[54]]="-march=pentium-mmx"
intel[[56]]="-march=pentium-mmx"
intel[[61]]="-march=pentiumpro"
intel[[63]]="-march=pentium2"
intel[[65]]="-march=pentium2"
intel[[66]]="-march=pentium2"
intel[[67]]="-march=pentium3"
intel[[68]]="-march=pentium3"
intel[[610]]="-march=pentium3"
intel[[611]]="-march=pentium3"
intel[[150]]="-march=pentium4"
intel[[151]]="-march=pentium4"
intel[[152]]="-march=pentium4"
intel[[154]]="-march=pentium4"
intel[[614]]="-march=prescott"
intel[[628]]="-march=core2"
amd[[50]]="-march=i586"
amd[[51]]="-march=i586"
amd[[52]]="-march=i586"
amd[[53]]="-march=i586"
amd[[56]]="-march=k6"
amd[[57]]="-march=k6"
amd[[58]]="-march=k6-2"
amd[[510]]="-march=k6-2"
amd[[59]]="-march=k6-3"
amd[[513]]="-march=k6-3"
amd[[61]]="-march=athlon"
amd[[62]]="-march=athlon"
amd[[63]]="-march=athlon"
amd[[64]]="-march=athlon"
amd[[66]]="-march=athlon"
amd[[67]]="-march=athlon"
amd[[68]]="-march=athlon"
amd[[610]]="-march=athlon"
amd[[158]]="-march=athlon-xp"
amd[[154]]="-march=k8"
amd[[155]]="-march=athlon64"
amd[[1543]]="-march=athlon64"
amd[[1544]]="-march=athlon64"
amd[[1565]]="-march=opteron"
amd[[1572]]="-march=k8"
via[[67]]="-march=c3"
via[[68]]="-march=c3"
via[[69]]="-march=i686"
via[[610]]="-march=i686"
CPU_TYPE="known"
CPU_FAMILY=`cat /proc/cpuinfo | grep "cpu family" | head -n1`
CPU_MODEL=`cat /proc/cpuinfo | grep model[[^\ ]] | head -n1`
CPU_NAME=`cat /proc/cpuinfo | grep "model name" | head -n1`
CPU_FLAGS=`cat /proc/cpuinfo | grep "flags" | head -n1`
CPU_VENDOR=`cat /proc/cpuinfo | grep "vendor_id" | head -n1`
CPU_FAMILY=${CPU_FAMILY#*: }
CPU_MODEL=${CPU_MODEL#*: }
CPU_NAME=${CPU_NAME#*: }
CPU_FLAGS=${CPU_FLAGS#*: }
CPU_VENDOR=${CPU_VENDOR#*: }
if test "x${CPU_VENDOR}" = "xGenuineIntel" ; then
CPU_OPTIONS=${intel[[$CPU_FAMILY$CPU_MODEL]]}
fi
if test "x${CPU_VENDOR}" = "xAuthenticAMD" ; then
CPU_OPTIONS=${amd[[$CPU_FAMILY$CPU_MODEL]]}
fi
if test "x${CPU_VENDOR}" = "xCentaurHauls"; then
CPU_OPTIONS=${via[[$CPU_FAMILY$CPU_MODEL]]}
fi
if test "x${CPU_OPTIONS}" = "x" ; then
CPU_TYPE="unknown"
fi
CPU_EXT=""
for i in $CPU_FLAGS ; do
case $i in
fpu)
CPU_FPU="-mfpmath=387"
;;
mmx)
CPU_EXT="$CPU_EXT -mmmx"
;;
sse)
CPU_FPU="-mfpmath=sse -msse"
;;
sse2)
CPU_FPU="-mfpmath=sse -msse2"
;;
sse3)
CPU_FPU="-msse3"
;;
ssse3)
CPU_FPU="-mfpmath=sse -msse2 -mssse3"
;;
3dnow)
CPU_EXT="$CPU_EXT -m3dnow"
;;
esac
done
CPU_OPTIONS="$CPU_OPTIONS $CPU_FPU $CPU_EXT"
fi
if test "x${CPU_TYPE}" = "xunknown"; then
CPU_TYPE=`( uname -p ) 2>&1`
case $CPU_TYPE in
i386)
CPU_OPTIONS="-march=i386"
;;
i486)
CPU_OPTIONS="-march=i486"
;;
Pentium2)
CPU_OPTIONS="-march=pentium2"
;;
Pentiumpro)
CPU_OPTIONS="-march=pentiumpro"
;;
Pentium*)
CPU_OPTIONS="-march=pentium"
;;
k6)
CPU_OPTIONS="-march=k6"
;;
k6-2)
CPU_OPTIONS="-march=k6-2"
;;
k6-3)
CPU_OPTIONS="-march=k6-3"
;;
"VIA C3 Ezra")
CPU_OPTIONS="-march=c3"
CPU_TYPE="known"
;;
*)
CPU_OPTIONS=""
CPU_TYPE="unknown"
;;
esac
if test "x${CPU_TYPE}" = "xunknown"; then
CPU_TYPE=`( uname -m ) 2>&1`
case $CPU_TYPE in
i386)
CPU_OPTIONS="-march=i386"
;;
i486)
CPU_OPTIONS="-march=i486"
;;
i586)
CPU_OPTIONS="-march=i586"
;;
i686)
CPU_OPTIONS="-march=i686"
;;
Pentium2)
CPU_OPTIONS="-march=pentium2"
;;
Pentiumpro)
CPU_OPTIONS="-march=pentiumpro"
;;
k6)
CPU_OPTIONS="-march=k6"
;;
k6-2)
CPU_OPTIONS="-march=k6-2"
;;
k6-3)
CPU_OPTIONS="-march=k6-3"
;;
*)
CPU_OPTIONS="-march=native -mtune=native"
;;
esac
fi
fi
echo "Detected CPU: $CPU_NAME"
# Now we check if the compiler supports the detected cpu
COMPILER=$CC
for I in "$TMPDIR" "$TEMPDIR" "/tmp" ; do
test "$I" && break
done
TMPC="$I/cpu_test-$RANDOM-$$.c"
TMPO="$I/cpu_test-$RANDOM-$$.o"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
( $COMPILER $CPU_OPTIONS -o $TMPO $TMPC ) 2>&1
TMP="$?"
rm -f $TMPO
rm -f $TMPC
if test "x${TMP}" = "x0" ; then
echo "CPU optimization: $CPU_OPTIONS"
else
CPU_OPTIONS=""
echo "No CPU optimizations will be added"
fi
else
CPU_OPTIONS=""
fi
AC_MSG_CHECKING(for bswap instruction)
AC_LINK_IFELSE([
AC_LANG_PROGRAM([ ],
[unsigned int __x=0;
register unsigned int __v;
__asm("bswap %0" : "=r" (__v) : "0" (__x));])
],
[
TEMP_CFLAGS="${TEMP_CFLAGS} -DHAVE_BSWAP"
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
])
if test "${DEVELOPER_FLAGS}" = "yes"; then
TEMP_CFLAGS="${TEMP_CFLAGS} -W -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wno-long-long -ggdb -g3"
fi
CFLAGS="${TEMP_CFLAGS} $UNAME_DEFS $CPU_OPTIONS"
LIBS="${TEMP_LIBS}"
LDFLAGS="${TEMP_LDFLAGS}"
#
# Add the right exec path for rc scripts
#
if test $prefix = "NONE";then
BIN_PATH="$ac_default_prefix"
if test $exec_prefix = "NONE"; then
BIN_PATH="$BIN_PATH/bin"
else
BIN_PATH="$BIN_PATH/$bindir"
fi
else
if test $exec_prefix = "NONE";then
BIN_PATH="$prefix/bin"
else
BIN_PATH="$prefix/$bindir"
fi
fi
AC_SUBST(BIN_PATH)
AC_CONFIG_FILES([
camera1-dist.conf
camera2-dist.conf
camera3-dist.conf
camera4-dist.conf
motion-dist.conf
motion.init-FreeBSD.sh
motion.init-Debian
motion.service
motion.spec
Makefile
])
AC_OUTPUT
echo ""
echo " **************************"
echo " Configure status "
echo " ${PACKAGE_NAME} ${PACKAGE_VERSION}"
echo " **************************"
echo
if test "${Darwin}" != ""; then
echo "OS : Darwin"
elif test "${FreeBSD}" != ""; then
echo "OS : *BSD"
else
echo "OS : Linux"
fi
if test "${PTHREAD_SUPPORT}" = "yes"; then
echo "pthread support: Yes"
else
echo "pthread support: No"
echo "**********************************************"
echo "** Fatal Error YOU MUST HAVE pthread Support *"
echo "**********************************************"
fi
if test "${JPEG_SUPPORT_TURBO}" = "yes"; then
echo "jpeg turbo support: Yes"
elif test "${JPEG_SUPPORT_MMX}" = "yes"; then
echo "jpeg-mmx support: Yes"
elif test "${JPEG_SUPPORT}" = "yes"; then
echo "jpeg support: Yes"
else
echo "jpeg support: No"
echo "**********************************************"
echo "** Fatal Error YOU MUST HAVE jpeg Support ***"
echo "**********************************************"
fi
if test "${FreeBSD}" != ""; then
if test "${BKTR}" = "yes"; then
echo "BKTR included: Yes"
else
echo "BKTR included: No"
fi
if test "${PWCBSD}" = "yes"; then
echo "PWCBSD include: Yes"
else
echo "PWCBSD include: No"
fi
else
if test "${V4L}" = "yes"; then
echo "V4L support: Yes"
else
echo "V4L support: No"
fi
if test x$SUPPORTED_V4L2 = xtrue; then
echo "V4L2 support: Yes"
else
echo "V4L2 support: No"
fi
fi
if test "${SDL_SUPPORT}" = "yes"; then
echo "SDL support: Yes"
else
echo "SDL support: No"
fi
if test "${HAVE_MMAL}" = "yes"; then
echo "MMAL support: Yes"
echo " ... MMAL_CFLAGS: $MMAL_CFLAGS"
echo " ... MMAL_OBJ: $MMAL_OBJ"
echo " ... MMAL_LIBS: $MMAL_LIBS"
elif test "${WITHOUT_MMAL}" = "yes"; then
echo "MMAL support: disabled"
else
echo "MMAL support: No"
echo " ... libraspberrypi-dev package not installed"
fi
if test "${HAVE_FFMPEG}" = "yes"; then
echo "FFmpeg support: Yes"
echo " ... FFMPEG_CFLAGS: $FFMPEG_CFLAGS"
echo " ... FFMPEG_LIBS: $FFMPEG_LIBS"
else
echo "FFmpeg support: No"
fi
if test "${SQLITE3_SUPPORT}" = "yes"; then
echo "SQLite3 support: Yes"
else
echo "SQLite3 support: No"
fi
if test "${MYSQL_SUPPORT}" = "yes"; then
echo "MYSQL support: Yes"
else
echo "MYSQL support: No"
fi
if test "${PGSQL_SUPPORT}" = "yes"; then
echo "PostgreSQL support: Yes"
else
echo "PostgreSQL support: No"
fi
echo
echo "CFLAGS: $CFLAGS"
echo "LIBS: $LIBS"
echo "LDFLAGS: $LDFLAGS"
echo
echo "Install prefix: $prefix"
echo