# Filename: configure.in

AC_INIT(src/drumgizmo.cc)
AM_INIT_AUTOMAKE( drumgizmo, 0.1.0 )

AC_PROG_CXX

AC_PROG_LIBTOOL
AM_PROG_LIBTOOL

AM_CONFIG_HEADER(config.h)
AC_STDC_HEADERS

dnl ======================
dnl Init pkg-config
dnl ======================
PKG_PROG_PKG_CONFIG(0.23)

AC_ARG_WITH(debug,  [  --with-debug            Build with debug support])
if test x$with_debug == xyes; then
    AC_MSG_WARN([*** Building with debug support!])
    CXXFLAGS="$CXXFLAGS -Wall -Werror -g"
fi 

dnl ======================
dnl Compile LV2 plugin
dnl ======================
AC_ARG_ENABLE([lv2],
[  --enable-lv2   Compile the LV2 plugin [default=yes]],,
        [enable_lv2="yes"])
if test "x$enable_lv2" = "xyes"; then
	 enable_lv2=yes 
   dnl ======================
   dnl Check for lv2core
   dnl ======================
   PKG_CHECK_MODULES(LV2, lv2core >= 4.1)
else
	 AC_MSG_RESULT([*** LV2 plugin will not be compiled ***])
   enable_lv2=no
fi
AM_CONDITIONAL([ENABLE_LV2], [test "x$enable_lv2" = "xyes"])

#dnl ======================
#dnl Compile VST plugin
#dnl ======================
#AC_ARG_ENABLE([vst],
#[  --enable-vst   Compile the VST plugin [default=yes]],,
#        [enable_vst="yes"])
#if test "x$enable_vst" = "xyes"; then
#	 enable_vst=yes 
#   dnl ======================
#   dnl Check for vstcore
#   dnl ======================
#   PKG_CHECK_MODULES(VST, vstcore >= 4.1)
#else
#	 AC_MSG_RESULT([*** VST plugin will not be compiled ***])
#   enable_vst=no
#fi
#AM_CONDITIONAL([ENABLE_VST], [test "x$enable_vst" = "xyes"])

dnl ======================
dnl Compile AU plugin
dnl ======================
#AC_ARG_ENABLE([au],
#[  --enable-au   Compile the audio units plugin [default=no]],,
#        [enable_au="no"])
#if test "x$enable_au" = "xyes"; then
#	 enable_au=yes 
#else
#	 AC_MSG_RESULT([*** Audio Units plugin will not be compiled ***])
#   enable_au=no
#fi
#AM_CONDITIONAL([ENABLE_AU], [test "x$enable_au" = "xyes"])

dnl ======================
dnl Compile cli client
dnl ======================
AC_ARG_ENABLE([cli],
[  --enable-cli   Compile the command line interface [default=yes]],,
        [enable_cli="yes"])
if test "x$enable_cli" = "xyes"; then
	 enable_cli=yes 

   dnl ======================
   dnl Check for getopt
   dnl ======================
   AC_HAVE_HEADERS(getopt.h)
   
   dnl ***
   dnl *** Input plugins
   dnl ***
   
   dnl *** Dummy
   AC_ARG_ENABLE([input_dummy],
   [  --disable-input-dummy   Disable input dummy plugin [default=enabled]],,
           [enable_input_dummy="yes"])
   if test "x$enable_input_dummy" = "xyes"; then
   	 have_input_dummy=yes 
   else
   	 AC_MSG_RESULT([*** input dummy plugin disabled per user request ***])
      have_input_dummy=no
   fi
   
   dnl *** Test
   AC_ARG_ENABLE([input_test],
   [  --disable-input-test   Disable input test plugin [default=enabled]],,
           [enable_input_test="yes"])
   if test "x$enable_input_test" = "xyes"; then
   	 have_input_test=yes 
   else
   	 AC_MSG_RESULT([*** input test plugin disabled per user request ***])
      have_input_test=no
   fi
   
   dnl *** Jackmidi
   AC_ARG_ENABLE([input_jackmidi],
   [  --disable-input-jackmidi   Disable input jackmidi plugin [default=enabled]],,
           [enable_input_jackmidi="yes"])
   if test "x$enable_input_jackmidi" = "xyes"; then
   	 have_input_jackmidi=yes 
   	 dnl ======================
   	 dnl Check for jack
   	 dnl ======================
   	 PKG_CHECK_MODULES(JACK, jack >= 0.120.1)
   else
   	 AC_MSG_RESULT([*** input jackmidi plugin disabled per user request ***])
      have_input_jackmidi=no
   fi
   
   dnl *** Midifile
   AC_ARG_ENABLE([input_midifile],
   [  --disable-input-midifile   Disable input midifile plugin [default=enabled]],,
           [enable_input_midifile="yes"])
   if test "x$enable_input_midifile" = "xyes"; then
   	 have_input_midifile=yes
   	 dnl ======================
   	 dnl Check for libsmf
   	 dnl ======================
   	 PKG_CHECK_MODULES(SMF, smf >= 1.2)
   else
   	 AC_MSG_RESULT([*** input midifile plugin disabled per user request ***])
      have_input_midifile=no
   fi   
   
   INPUT_PLUGINS="midifile jackmidi dummy test"
   AC_SUBST(INPUT_PLUGINS)
   
   
   dnl ***
   dnl *** Output plugins
   dnl ***
   
   dnl *** dummy
   AC_ARG_ENABLE([output_dummy],
   [  --disable-output-dummy   Disable output dummy plugin [default=enabled]],,
           [enable_output_dummy="yes"])
   if test "x$enable_output_dummy" = "xyes"; then
   	 have_output_dummy=yes 
   else
   	 AC_MSG_RESULT([*** output dummy plugin disabled per user request ***])
      have_output_dummy=no
   fi
   
   dnl *** alsa
   AC_ARG_ENABLE([output_alsa],
   [  --disable-output-alsa   Disable output alsa plugin [default=enabled]],,
           [enable_output_alsa="yes"])
   if test "x$enable_output_alsa" = "xyes"; then
   	 have_output_alsa=yes 
   	 dnl ======================
   	 dnl Check for alsa library
   	 dnl ======================
   	 PKG_CHECK_MODULES(ALSA, alsa >= 1.0.18)
   else
   	 AC_MSG_RESULT([*** output alsa plugin disabled per user request ***])
      have_output_alsa=no
   fi
   
   dnl *** wavfile
   AC_ARG_ENABLE([output_wavfile],
   [  --disable-output-wavfile   Disable output wavfile plugin [default=enabled]],,
           [enable_output_wavfile="yes"])
   if test "x$enable_output_wavfile" = "xyes"; then
   	 have_output_wavfile=yes 
   else
   	 AC_MSG_RESULT([*** output wavfile plugin disabled per user request ***])
      have_output_wavfile=no
   fi
   
   OUTPUT_PLUGINS="dummy alsa wavfile"
   AC_SUBST(OUTPUT_PLUGINS)
   
   dnl
   dnl Setup plugin paths
   dnl
   dgplugindir=${libdir}/drumgizmo
   AC_SUBST([dgplugindir])
   
   INPUT_PLUGIN_DIR=${dgplugindir}/input
   OUTPUT_PLUGIN_DIR=${dfplugindir}/output
   AC_SUBST([INPUT_PLUGIN_DIR])
   AC_SUBST([OUTPUT_PLUGIN_DIR])
   
   AC_DEFINE_UNQUOTED(INPUT_PLUGIN_DIR, "${prefix}/lib/drumgizmo/input",
     [Input plugin dir])
   AC_DEFINE_UNQUOTED(OUTPUT_PLUGIN_DIR, "${prefix}/lib/drumgizmo/output",
     [Output plugin dir])
else
	 AC_MSG_RESULT([*** Command line interface disabled per user request ***])
   enable_cli=no
fi
AM_CONDITIONAL([ENABLE_CLI], [test "x$enable_cli" == "xyes"])
AM_CONDITIONAL([HAVE_INPUT_DUMMY], [test "x$have_input_dummy" = "xyes"])
AM_CONDITIONAL([HAVE_INPUT_TEST], [test "x$have_input_test" = "xyes"])
AM_CONDITIONAL([HAVE_INPUT_JACKMIDI], [test "x$have_input_jackmidi" = "xyes"])
AM_CONDITIONAL([HAVE_INPUT_MIDIFILE], [test "x$have_input_midifile" = "xyes"])
AM_CONDITIONAL([HAVE_OUTPUT_DUMMY], [test "x$have_output_dummy" = "xyes"])
AM_CONDITIONAL([HAVE_OUTPUT_ALSA], [test "x$have_output_alsa" = "xyes"])
AM_CONDITIONAL([HAVE_OUTPUT_WAVFILE], [test "x$have_output_wavfile" = "xyes"])


AC_ARG_ENABLE([editor],
[  --disable-editor       Disable Qt editor [default=enabled]],,
        [enable_editor="yes"])
if test "x$enable_editor" = "xyes"; then
	 have_editor=yes 
   dnl ======================
   dnl Check for Qt
   dnl ======================
   PKG_CHECK_MODULES(QT, QtCore QtGui QtXml >= 4.5)
   AC_CHECK_PROGS(QT_MOC, [moc4 moc-qt4 moc], [])
   AC_CHECK_PROGS(QT_RCC, [rcc4 rcc-qt4 rcc], [])
   AC_CHECK_PROGS(QT_UIC, [uic4 uic-qt4 uic], [])
   if (test "$QT_MOC" = ""); then
     AC_MSG_ERROR([QT4 moc is required.])
   fi
   if (test "$QT_RCC" = ""); then
     AC_MSG_ERROR([QT4 rcc is required.])
   fi
   if (test "$QT_UIC" = ""); then
     AC_MSG_ERROR([QT4 uic is required.])
   fi
else
	 AC_MSG_RESULT([*** Qt Drumkit Editor disabled per user request ***])
   have_editor=no
fi
AM_CONDITIONAL([HAVE_EDITOR], [test "x$have_editor" = "xyes"])

dnl ======================
dnl Check for sndfile
dnl ======================
PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.21)

dnl ======================
dnl Check for the pthread library
dnl ======================
tmp_CXXFLAGS="$CXXFLAGS"
tmp_CPPFLAGS="$CPPFLAGS"
tmp_CFLAGS="$CFLAGS"
tmp_LDFLAGS="$LDFLAGS"
tmp_LIBS="$LIBS"
CXXFLAGS=""
CPPFLAGS=""
CFLAGS=""
LDFLAGS=""
LIBS=""
AC_CHECK_HEADER(pthread.h, , AC_MSG_ERROR([*** pthread header file not found!]))
AC_CHECK_LIB(pthread,  pthread_mutex_init, , AC_MSG_ERROR([*** pthread library not found!]))
PTHREAD_CFLAGS="$CXXFLAGS $CPPFLAGS $CFLAGS"
PTHREAD_LIBS="$LDFLAGS $LIBS"
CXXFLAGS="$tmp_CXXFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
CFLAGS="$tmp_CFLAGS"
LDFLAGS="$tmp_LDFLAGS"
LIBS="$tmp_LIBS"
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LIBS)

dnl ======================
dnl Check for eXpat library
dnl ======================
tmp_CXXFLAGS="$CXXFLAGS"
tmp_CPPFLAGS="$CPPFLAGS"
tmp_CFLAGS="$CFLAGS"
tmp_LDFLAGS="$LDFLAGS"
tmp_LIBS="$LIBS"
CXXFLAGS=""
CPPFLAGS=""
CFLAGS=""
LDFLAGS=""
LIBS=""
AC_CHECK_HEADER(expat.h, , AC_MSG_ERROR([*** eXpat header file not found!]))
AC_CHECK_LIB(expat, XML_ParserCreate, , AC_MSG_ERROR([*** eXpat library not found!]))
EXPAT_CFLAGS="$CXXFLAGS $CPPFLAGS $CFLAGS"
EXPAT_LIBS="$LDFLAGS $LIBS"
CXXFLAGS="$tmp_CXXFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
CFLAGS="$tmp_CFLAGS"
LDFLAGS="$tmp_LDFLAGS"
LIBS="$tmp_LIBS"
AC_SUBST(EXPAT_CFLAGS)
AC_SUBST(EXPAT_LIBS)

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

#	au/Makefile

AC_OUTPUT(
	Makefile
	tools/Makefile
	src/Makefile
	vst/Makefile
	lv2/Makefile
	plugingui/Makefile
	include/Makefile
	drumgizmo/Makefile
	drumgizmo/input/Makefile
	drumgizmo/input/dummy/Makefile
	drumgizmo/input/test/Makefile
	drumgizmo/input/jackmidi/Makefile
	drumgizmo/input/midifile/Makefile
	drumgizmo/output/Makefile
	drumgizmo/output/dummy/Makefile
	drumgizmo/output/alsa/Makefile
	drumgizmo/output/wavfile/Makefile
  dgedit/Makefile)