# Filename: configure.in
AC_INIT(client/miav_client.cc)
AM_INIT_AUTOMAKE( miav, 0.4.0 )

AC_PROG_CXX

AC_PROG_LIBTOOL
AM_PROG_LIBTOOL

AM_CONFIG_HEADER(config.h)
AC_STDC_HEADERS
CXXFLAGS="$CXXFLAGS -Wall -Werror"

AC_OUTPUT(lib/Makefile)

AC_ARG_WITH(client,  [  --without-client        Build without client support])
if test x$with_client != xno && test -z "$CLIENT"; then
	  CLIENT_DIR=client
		AC_SUBST(CLIENT_DIR)
	 
#    dnl =====================
#    dnl Check for SDL library
#    dnl =====================
#    SDL_VERSION=1.2.0
#    AM_PATH_SDL($SDL_VERSION,:,AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]))
##    CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
##    LDFLAGS="$LDFLAGS $SDL_LIBS"
#		AC_SUBST(SDL_CFLAGS)
#		AC_SUBST(SDL_LIBS)
#    

    dnl =====================
    dnl Check for QT library
    dnl =====================
    gw_CHECK_QT
#    CXXFLAGS="$CXXFLAGS $QT_CXXLAGS"
#    LDFLAGS="$LDFLAGS $QT_LDADD"
    AC_SUBST(QT_CXXFLAGS)
    AC_SUBST(QT_LDADD)

    dnl ======================
    dnl Check for the Xv extension
    dnl ======================
    AC_CHECK_HEADER(X11/extensions/Xvlib.h, , AC_MSG_ERROR([*** The Xv extension include files not found!]))
    AC_CHECK_LIB(Xv, XvQueryExtension, ,  AC_MSG_ERROR([*** The Xv extension library (libXv.a) not found!]))

    dnl ======================
    dnl Check for raw1394 library
    dnl ======================
    AC_CHECK_HEADER(libraw1394/raw1394.h, , AC_MSG_ERROR([*** libraw1394 headers not found!]))
    AC_CHECK_LIB(raw1394, raw1394_get_userdata, ,  AC_MSG_ERROR([*** libraw1394 not found!]))

    dnl ======================
    dnl Check for the cairo library
    dnl ======================
    AC_CHECK_HEADER(cairo/cairo-features.h, , AC_MSG_ERROR([*** cairo headers not found!]))
    CAIRO_CXXFLAGS="`pkg-config --cflags cairo` -I/usr/local/include"
    AC_SUBST(CAIRO_CXXFLAGS)
    AC_CHECK_LIB(svg-cairo, svg_cairo_create, ,  AC_MSG_ERROR([*** libcairo not found!]))
    CAIRO_LDFLAGS="`pkg-config --libs cairo`  -lsvg -lsvg-cairo"
    AC_SUBST(CAIRO_LDFLAGS)

    AC_OUTPUT(client/Makefile)

    dnl Make code aware of the gui
    AC_DEFINE([USE_CLIENT], [], [Is defined if the project is configured to compile with client])
else
    AC_MSG_WARN([*** Building without client support])
fi 

AC_ARG_WITH(server,  [  --without-server        Build without server support])
if test x$with_server != xno && test -z "$SERVER"; then
	  SERVER_DIR=server
		AC_SUBST(SERVER_DIR)

    dnl ======================
    dnl Check for Jpeg library
    dnl ======================
    AC_CHECK_HEADER(jpeglib.h, , AC_MSG_ERROR([*** libJpeg not found!]))
    AC_CHECK_LIB(jpeg, jpeg_start_compress, ,  AC_MSG_ERROR([*** libJpeg not found!]))
    
    dnl ======================
    dnl Check for Fame library
    dnl ======================
    AC_CHECK_HEADER(fame.h, , AC_MSG_ERROR([*** libFAME include files not found!]))
    AC_CHECK_LIB(fame, fame_init, ,  AC_MSG_ERROR([*** libFAME not found!]))
    
    dnl ======================
    dnl Check for Lame library
    dnl ======================
    AC_CHECK_HEADER(lame/lame.h, , AC_MSG_ERROR([*** libLAME (libmp3lame) include files not found!]))
    AC_CHECK_LIB(mp3lame, lame_init, ,  AC_MSG_ERROR([*** libLAME (libmp3lame) not found!]))

		AC_OUTPUT(server/Makefile)

    dnl Make code aware of the gui
    AC_DEFINE([USE_SERVER], [], [Is defined if the project is configured to compile with server])
else
    AC_MSG_WARN([*** Building without server support])
fi 

dnl ======================
dnl Check for pthread library
dnl ======================
AC_CHECK_HEADER(pthread.h, , AC_MSG_ERROR([*** pthread headers not found!]))
AC_CHECK_LIB(pthread, sem_init, ,  AC_MSG_ERROR([*** libpthread not found!]))

dnl ======================
dnl Check for dv library
dnl ======================
AC_CHECK_HEADER(libdv/dv.h, , AC_MSG_ERROR([*** libdv headers not found!]))
AC_CHECK_LIB(dv, dv_decode_full_frame, ,  AC_MSG_ERROR([*** libdv not found!]))

#dnl ======================
#dnl Check for mplex library
#dnl ======================
#PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.6.1.93, [
#      dnl switch over to c++ to test things
#      AC_LANG_CPLUSPLUS
#      OLD_CPPFLAGS="$CPPFLAGS"
#      CPPFLAGS="$CPPFLAGS $MPLEX_CFLAGS"
#      AC_CHECK_HEADER(interact.hpp, [
#        MPLEX_LIBS="$MPLEX_LIBS -lmplex2 -lm"
#        OLD_LIBS="$LIBS"
#        LIBS="$LIBS $MPLEX_LIBS"
#        AC_MSG_CHECKING([for valid mplex objects])
#        AC_TRY_RUN([
##include <interact.hpp>
##include <outputstrm.hpp>
##include <multiplexor.hpp>
#
#int main (int argc, char *argv[])
#{
#  class TestOutputStream : public OutputStream {
#  public:
#    TestOutputStream () : OutputStream () { }
#    void Write (uint8_t *a, unsigned int b) { }
#    void NextSegment () { }
#    off_t SegmentSize () { }
#    void Close () { }
#    int Open () { }
#  };
#  MultiplexJob *job = new MultiplexJob ();
#  vector<IBitStream *> inputs;
#  job->SetupInputStreams (inputs);
#  TestOutputStream *out = new TestOutputStream ();
#  Multiplexor *mux = new Multiplexor(*job, *out);
#  return 0;
#}
#        ],[
#          HAVE_MPLEX="yes"
#          AC_SUBST(MPLEX_CFLAGS)
#          AC_SUBST(MPLEX_LIBS)
#          AC_MSG_RESULT(yes)
#        ], AC_MSG_RESULT(no))
#        #LIBS="$OLD_LIBS"
#      ])
#      #CPPFLAGS="$OLD_CPPFLAGS"
#      AC_LANG_C
#    ], HAVE_MPLEX="no")
#AC_CHECK_LIB(mplex2, main, ,  AC_MSG_ERROR([*** libmplex2 not found (part of the mjpegtools package)!]))

AC_SUBST(CFLAGS)
AC_SUBST(CPPFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(LDFLAGS)

AC_OUTPUT(
	Makefile 
	tools/Makefile
	etc/Makefile
	pixmaps/Makefile
	man/Makefile)

#AC_OUTPUT(
#	Makefile 
#	lib/Makefile
#	client/Makefile
#	server/Makefile
#	tools/Makefile
#	etc/Makefile
#	pixmaps/Makefile
#	man/Makefile)