--- qsampler/trunk/configure.ac 2008/12/07 13:58:16 1803 +++ qsampler/trunk/configure.ac 2016/09/24 11:55:52 2988 @@ -1,19 +1,45 @@ # Process this file with autoconf to produce a configure script. -AC_INIT(Qsampler, 0.2.1.20, rncbc@rncbc.org, qsampler) +AC_INIT(Qsampler, 0.4.1.2, rncbc@rncbc.org, qsampler) -AC_CONFIG_SRCDIR(src/qsamplerMainForm.ui) -AC_CONFIG_HEADERS(config.h) -AC_CONFIG_FILES(Makefile qsampler.pro qsampler.spec qsampler.desktop) +AC_CONFIG_SRCDIR(src/qsampler.cpp) +AC_CONFIG_HEADERS(src/config.h) +AC_CONFIG_FILES(Makefile qsampler.spec src/src.pri src/qsampler.desktop) + +# Sanitize version string. +ac_version=$(echo $PACKAGE_VERSION | sed -r 's/^([0-9|\.]+).*$/\1/') +AC_SUBST(ac_version) # Set default installation prefix. AC_PREFIX_DEFAULT(/usr/local) -ac_prefix=$prefix -if test "x$ac_prefix" = "xNONE"; then - ac_prefix=$ac_default_prefix +if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix fi +if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix +fi +eval ac_prefix=$prefix AC_SUBST(ac_prefix) AC_DEFINE_UNQUOTED(CONFIG_PREFIX, ["$ac_prefix"], [Default installation prefix.]) +# Set default installation directories. +eval ac_bindir=$bindir +AC_SUBST(ac_bindir) +AC_DEFINE_UNQUOTED(CONFIG_BINDIR, ["$ac_bindir"], [Default executable binary path.]) + +eval ac_libdir=$libdir +AC_SUBST(ac_libdir) +AC_DEFINE_UNQUOTED(CONFIG_LIBDIR, ["$ac_libdir"], [Default object library path.]) + +eval datarootdir=$datarootdir +eval ac_datadir=$datadir +AC_SUBST(ac_datadir) +AC_DEFINE_UNQUOTED(CONFIG_DATADIR, ["$ac_datadir"], [Default arch-idependent data path.]) + +eval ac_mandir=$mandir +AC_SUBST(ac_mandir) +AC_DEFINE_UNQUOTED(CONFIG_MANDIR, ["$ac_mandir"], [Default man page path.]) + + # Enable debugging argument option. AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [enable debugging (default=no)]), @@ -21,34 +47,61 @@ if test "x$ac_debug" = "xyes"; then AC_DEFINE(CONFIG_DEBUG, 1, [Define if debugging is enabled.]) + ac_stacktrace="yes" ac_debug="debug" else + ac_stacktrace="no" ac_debug="release" fi AC_SUBST(ac_debug) + +# Enable Qt4/5 availability. +AC_ARG_ENABLE(qt4, + AC_HELP_STRING([--enable-qt4], [enable Qt4 build (default=no)]), + [ac_qt4="$enableval"], + [ac_qt4="no"]) + + # Enable libgig availability. AC_ARG_ENABLE(libgig, AC_HELP_STRING([--enable-libgig], [enable libgig interface (default=yes)]), [ac_libgig="$enableval"], [ac_libgig="yes"]) +# Enable X11 unique/single instance. +AC_ARG_ENABLE(xunique, + AC_HELP_STRING([--enable-xunique], [enable X11 unique/single instance (default=yes)]), + [ac_xunique="$enableval"], + [ac_xunique="yes"]) + +# Enable debugger stack-trace option (assumes --enable-debug). +AC_ARG_ENABLE(stacktrace, + AC_HELP_STRING([--enable-stacktrace], [enable debugger stack-trace (default=no)]), + [ac_stacktrace="$enableval"]) + + # Standard installation base dirs. -ac_with_paths="/usr /usr/local" +ac_with_paths="" -# Some a-la-debian alternatives... -for X in /usr/lib /usr/share; do - for Y in qt qt4; do - if test -d $X/$Y/bin; then - ac_with_paths="$ac_with_paths $X/$Y" - fi - done -done +# Set for alternate Qt4/5 installation dir. +AC_ARG_WITH(qt4, + AC_HELP_STRING([--with-qt4=PATH], [use alternate Qt4 install path]), + [ac_qt4_path="$withval"], [ac_qt4_path="no"]) -# Set for alternate Qt installation dir. -AC_ARG_WITH(qt, - AC_HELP_STRING([--with-qt=PATH], [use alternate Qt install path]), - [ac_with_paths="$ac_with_paths $withval"]) +AC_ARG_WITH(qt5, + AC_HELP_STRING([--with-qt5=PATH], [use alternate Qt5 install path]), + [ac_qt5_path="$withval"], [ac_qt5_path="no"]) + +if test "x$ac_qt4_path" != "xno"; then + ac_with_paths="$ac_with_paths $ac_qt4_path" + ac_qt4="yes" +fi + +if test "x$ac_qt5_path" != "xno"; then + ac_with_paths="$ac_with_paths $ac_qt5_path" + ac_qt4="no" +fi # Set for alternate liblscp installation dir. AC_ARG_WITH(liblscp, @@ -60,72 +113,138 @@ AC_HELP_STRING([--with-libgig=PATH], [use alternate libgig install path]), [ac_with_paths="$ac_with_paths $withval"]) + +# Honor user specified flags. +ac_cflags=$CFLAGS +ac_ldflags=$LDFLAGS + + # Checks for programs. -AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_CXXCPP -AC_PROG_GCC_TRADITIONAL # Checks for languages. -AC_LANG_C AC_LANG_CPLUSPLUS +# Check for pkg-config. +PKG_PROG_PKG_CONFIG + +# Check for proper flags. +ac_arch=`uname -m` + +# Check for install paths and alternatives... +ac_libdirs="lib" + +if test "x$ac_arch" = "xx86_64"; then + ac_libdirs="$ac_libdirs lib64" +fi + +CFLAGS="-fPIC $CFLAGS" +CPPFLAGS="-fPIC $CPPFLAGS" + # Prepend alternate dependencies paths. ac_path=$PATH + for X in $ac_with_paths; do if test -d $X/bin; then ac_path="$X/bin:$ac_path" fi - if test -x $X/qmake; then - ac_path="$X:$ac_path" - fi if test -d $X/include; then - for Y in qt qt4; do - if test -d $X/include/$Y; then - CFLAGS="-I$X/include/$Y $CFLAGS" - CPPFLAGS="-I$X/include/$Y $CPPFLAGS" - ac_incpath="$X/include/$Y $ac_incpath" - fi - done - CFLAGS="-I$X/include $CFLAGS" + CFLAGS="-I$X/include $CFLAGS " CPPFLAGS="-I$X/include $CPPFLAGS" ac_incpath="$X/include $ac_incpath" fi - if test -d $X/lib64; then - LIBS="-L$X/lib64 $LIBS" - ac_libs="-L$X/lib64 $ac_libs" - fi - if test -d $X/lib; then - LIBS="-L$X/lib $LIBS" - ac_libs="-L$X/lib $ac_libs" - fi + for Y in $ac_libdirs; do + if test -d $X/$Y; then + LIBS="-L$X/$Y $LIBS" + ac_libs="-L$X/$Y $ac_libs" + fi + done done -# Check for proper Qt version. -AC_CACHE_CHECK([for Qt library version >= 4.1], - ac_qtlib_version, [ - AC_TRY_LINK([#include "Qt/qglobal.h"], [ -#if QT_VERSION < 0x040100 -#error Qt library 4.1 or greater required. -#endif - ], - ac_qtlib_version="yes", [ - echo "no; Qt 4.1 or greater is required" - exit - ]) -]) - # A common error message: -ac_errmsg="not found in current PATH. Maybe QT development environment isn't available (qt-devel)." +ac_errmsg="not found in current PATH. Maybe QT development environment isn't available." -# Check for Qt qmake utility. -AC_PATH_PROG(ac_qmake, qmake, [no], $ac_path) +if test "x$ac_qt4" = "xyes"; then + AC_PATH_PROG(ac_qmake, qmake-qt4, [no], $ac_path) +else + AC_PATH_PROG(ac_qmake, qmake-qt5, [no], $ac_path) +fi +if test "x$ac_qmake" = "xno"; then + AC_PATH_PROG(ac_cv_qmake, qmake, [no], $ac_path) + ac_qmake=$ac_cv_qmake +fi if test "x$ac_qmake" = "xno"; then AC_MSG_ERROR([qmake $ac_errmsg]) fi + +# Check for proper Qt4/5 major version. +ac_qt_version_major=`$ac_qmake -query QT_VERSION | cut -d. -f1` +if test "x$ac_qt4" = "xyes"; then + if test "x$ac_qt_version_major" != "x4"; then + AC_MSG_ERROR([qmake-qt4 $ac_errmsg (qt4-devel)]) + fi +else + if test "x$ac_qt_version_major" != "x5"; then + AC_MSG_ERROR([qmake-qt5 $ac_errmsg (qt5-devel)]) + fi +fi + +ac_qt_install_bins=`$ac_qmake -query QT_INSTALL_BINS` +if test -d $ac_qt_install_bins; then + ac_path="$ac_qt_install_bins:$ac_path" +fi + +# Check it again, now with updated PATH, just in case... +AC_PATH_PROG(ac_cv_qmake, qmake, [no], $ac_path) +ac_qmake=$ac_cv_qmake +if test "x$ac_qmake" = "xno"; then + AC_MSG_ERROR([qmake $ac_errmsg]) +fi + AC_SUBST(ac_qmake) +ac_qt_install_headers=`$ac_qmake -query QT_INSTALL_HEADERS` +if test -d $ac_qt_install_headers; then + CFLAGS="-I$ac_qt_install_headers $CFLAGS " + CPPFLAGS="-I$ac_qt_install_headers $CPPFLAGS" + ac_incpath="$ac_qt_install_headers $ac_incpath" +fi + +ac_qt_install_libs=`$ac_qmake -query QT_INSTALL_LIBS` +if test -d $ac_qt_install_libs; then + LIBS="-L$ac_qt_install_libs $LIBS" + ac_libs="-L$ac_qt_install_libs $ac_libs" +fi + +# Check for proper Qt4/5 version. +if test "x$ac_qt4" = "xyes"; then + AC_CACHE_CHECK([for Qt library version >= 4.4], + ac_cv_qtversion, [ + AC_TRY_COMPILE([#include "QtCore/qglobal.h"], [ + #if QT_VERSION < 0x040400 || QT_VERSION >= 0x050000 + #error Qt library 4.4 or greater required. + #endif + ], ac_cv_qtversion="yes", [ + echo "no; Qt 4.4 or greater is required" + exit 1 + ]) + ]) +else + AC_CACHE_CHECK([for Qt library version >= 5.1], + ac_cv_qtversion, [ + AC_TRY_COMPILE([#include "QtCore/qglobal.h"], [ + #if QT_VERSION < 0x050100 || QT_VERSION >= 0x060000 + #error Qt library 5.1 or greater required. + #endif + ], ac_cv_qtversion="yes", [ + echo "no; Qt 5.1 or greater is required" + exit 1 + ]) + ]) +fi + # Check for Qt moc utility. AC_PATH_PROG(ac_moc, moc, [no], $ac_path) if test "x$ac_moc" = "xno"; then @@ -140,6 +259,21 @@ fi AC_SUBST(ac_uic) +# Check for Qt lupdate utility. +AC_PATH_PROG(ac_lupdate, lupdate, [no], $ac_path) +if test "x$ac_lupdate" = "xno"; then + AC_MSG_ERROR([lupdate $ac_errmsg]) +fi +AC_SUBST(ac_lupdate) + +# Check for Qt lrelease utility. +AC_PATH_PROG(ac_lrelease, lrelease, [no], $ac_path) +if test "x$ac_release" = "xno"; then + AC_MSG_ERROR([lrelease $ac_errmsg]) +fi +AC_SUBST(ac_lrelease) + + # Checks for libraries. AC_CHECK_LIB(m, main) AC_CHECK_LIB(X11, main) @@ -152,31 +286,43 @@ fi # Check for mandatory libraries. -AC_CHECK_LIB(lscp, main, [ac_liblscp="yes"], [ac_liblscp="no"]) -if test "x$ac_liblscp" = "xno"; then - AC_MSG_ERROR([LSCP library not found.]) +PKG_CHECK_MODULES([LSCP], [lscp], [ac_liblscp="yes"], [ac_liblscp="no"]) +if test "x$ac_liblscp" = "xyes"; then + AC_DEFINE(CONFIG_LIBLSCP, 1, [Define if liblscp is available.]) + ac_cflags="$ac_cflags $LSCP_CFLAGS" + ac_libs="$ac_libs $LSCP_LIBS" +else + AC_MSG_ERROR([*** LSCP library not found (liblscp).]) fi -ac_libs="$ac_libs -llscp" + +case "{$host}" in + *mingw*) + ac_libs="$ac_libs -lws2_32" + LIBS="$LIBS -lws2_32" + ;; +esac AC_CACHE_CHECK([for instrument_name in lscp_channel_info_t], - ac_instrument_name, [ + ac_cv_instrument_name, [ AC_TRY_COMPILE([#include "lscp/client.h"], [ lscp_channel_info_t info; info.instrument_name = 0; - ], ac_instrument_name="yes", ac_instrument_name="no") + ], ac_cv_instrument_name="yes", ac_cv_instrument_name="no") ]) +ac_instrument_name=$ac_cv_instrument_name if test "x$ac_instrument_name" = "xyes"; then AC_DEFINE(CONFIG_INSTRUMENT_NAME, 1, [Define if instrument_name is available.]) fi AC_CACHE_CHECK([for mute/solo in lscp_channel_info_t], - ac_mute_solo, [ + ac_cv_mute_solo, [ AC_TRY_COMPILE([#include "lscp/client.h"], [ lscp_channel_info_t info; info.mute = 0; info.solo = 0; - ], ac_mute_solo="yes", ac_mute_solo="no") + ], ac_cv_mute_solo="yes", ac_cv_mute_solo="no") ]) +ac_mute_solo=$ac_cv_mute_solo if test "x$ac_mute_solo" = "xyes"; then AC_CHECK_LIB(lscp, lscp_set_channel_mute, [ac_mute_solo="yes"], [ac_mute_solo="no"]) fi @@ -196,12 +342,13 @@ if test "x$ac_fxsend" = "xyes"; then AC_DEFINE(CONFIG_FXSEND, 1, [Define if FX sends is available.]) AC_CACHE_CHECK([for FX send level in lscp_fxsend_info_t], - ac_fxsend_level, [ + ac_cv_fxsend_level, [ AC_TRY_COMPILE([#include "lscp/client.h"], [ lscp_fxsend_info_t info; info.level = 0.0f; - ], ac_fxsend_level="yes", ac_fxsend_level="no") + ], ac_cv_fxsend_level="yes", ac_cv_fxsend_level="no") ]) + ac_fxsend_level=$ac_cv_fxsend_level if test "x$ac_fxsend_level" = "xyes"; then AC_DEFINE(CONFIG_FXSEND_LEVEL, 1, [Define if FX send level is available.]) fi @@ -212,12 +359,13 @@ fi AC_CACHE_CHECK([for audio_routing array type], - ac_audio_routing, [ + ac_cv_audio_routing, [ AC_TRY_COMPILE([#include "lscp/client.h"], [ lscp_channel_info_t info; char ch = info.audio_routing[0][0]; - ], ac_audio_routing="no", ac_audio_routing="yes") + ], ac_cv_audio_routing="no", ac_cv_audio_routing="yes") ]) +ac_audio_routing=$ac_cv_audio_routing if test "x$ac_audio_routing" = "xyes"; then AC_DEFINE(CONFIG_AUDIO_ROUTING, 1, [Define if audio_routing is an integer array.]) fi @@ -233,30 +381,32 @@ fi AC_CACHE_CHECK([for CHANNEL_MIDI LSCP event support in liblscp], - ac_lscp_channel_midi_event, [ + ac_cv_channel_midi_event, [ AC_TRY_COMPILE([ #include "lscp/client.h" #include "lscp/event.h" ], [ lscp_event_t ev; ev = LSCP_EVENT_CHANNEL_MIDI; - ], ac_lscp_channel_midi_event="yes", ac_lscp_channel_midi_event="no") + ], ac_cv_channel_midi_event="yes", ac_cv_channel_midi_event="no") ]) -if test "x$ac_lscp_channel_midi_event" = "xyes"; then +ac_channel_midi_event=$ac_cv_channel_midi_event +if test "x$ac_channel_midi_event" = "xyes"; then AC_DEFINE(CONFIG_EVENT_CHANNEL_MIDI, 1, [Define if LSCP CHANNEL_MIDI event support is available.]) fi AC_CACHE_CHECK([for DEVICE_MIDI LSCP event support in liblscp], - ac_lscp_device_midi_event, [ + ac_cv_device_midi_event, [ AC_TRY_COMPILE([ #include "lscp/client.h" #include "lscp/event.h" ], [ lscp_event_t ev; ev = LSCP_EVENT_DEVICE_MIDI; - ], ac_lscp_device_midi_event="yes", ac_lscp_device_midi_event="no") + ], ac_cv_device_midi_event="yes", ac_cv_device_midi_event="no") ]) -if test "x$ac_lscp_device_midi_event" = "xyes"; then +ac_device_midi_event=$ac_cv_device_midi_event +if test "x$ac_device_midi_event" = "xyes"; then AC_DEFINE(CONFIG_EVENT_DEVICE_MIDI, 1, [Define if LSCP DEVICE_MIDI event support is available.]) fi @@ -267,33 +417,16 @@ # Check for optional libraries. if test "x$ac_libgig" = "xyes"; then - AC_CHECK_LIB(gig, main, [ac_libgig="yes"], [ac_libgig="no"]) - if test "x$ac_libgig" = "xyes"; then - AC_DEFINE(CONFIG_LIBGIG, 1, [Define if libgig is available.]) - ac_libs="$ac_libs -lgig" - AC_MSG_CHECKING([for gig::File::SetAutoLoad() method in libgig]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - CXXFLAGS="$ac_libs" - AC_TRY_RUN([ -#include -#include -int main() { - gig::File file; - file.SetAutoLoad(false); - exit(0); -} - ], - have_libgig_setautoload="yes", - have_libgig_setautoload="no", - have_libgig_setautoload="no" - ) - AC_LANG_RESTORE - AC_MSG_RESULT([$have_libgig_setautoload]) - if test "x$have_libgig_setautoload" = "xyes"; then - AC_DEFINE(HAVE_LIBGIG_SETAUTOLOAD, 1, [Define if libgig provides gig::File::SetAutoLoad() method.]) - fi - fi + PKG_CHECK_MODULES([GIG], [gig >= 3.3.0], [ac_libgig="yes"], [ac_libgig="no"]) +fi +if test "x$ac_libgig" = "xyes"; then + AC_DEFINE(CONFIG_LIBGIG, 1, [Define if libgig is available.]) + ac_cflags="$ac_cflags $GIG_CFLAGS" + ac_libs="$ac_libs $GIG_LIBS" + AC_DEFINE(CONFIG_LIBGIG_SETAUTOLOAD, 1, [Define if libgig provides gig::File::SetAutoLoad() method.]) + ac_libgig_setautoload="yes" +else + AC_MSG_WARN([*** GIG library not found (libgig).]) fi # Check for round math function. @@ -302,19 +435,46 @@ AC_DEFINE(CONFIG_ROUND, 1, [Define if round is available.]) fi +# Check for X11 unique/single instance. +if test "x$ac_xunique" = "xyes"; then + AC_DEFINE(CONFIG_XUNIQUE, 1, [Define if X11 unique/single instance is enabled.]) +fi + +# Check for debugging stack-trace. +if test "x$ac_stacktrace" = "xyes"; then + AC_DEFINE(CONFIG_STACKTRACE, 1, [Define if debugger stack-trace is enabled.]) +fi + +# Some recent distros (eg. fedora, debian) require this. +if test "x$ac_cv_lib_X11_main" = "xyes"; then + ac_libs="$ac_libs -lX11" +fi + AC_SUBST(ac_libs) -AC_SUBST(ac_incpath) + # Checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h sys/ioctl.h unistd.h signal.h) +AC_CHECK_HEADERS(fcntl.h sys/ioctl.h unistd.h signal.h sys/socket.h) AC_CHECK_HEADER(lscp/client.h, [ac_lscp_h="yes"], [ac_lscp_h="no"]) if test "x$ac_lscp_h" = "xno"; then AC_MSG_ERROR([LSCP headers not found.]) fi +if test "x$ac_libgig" = "xyes"; then + AC_CHECK_HEADER(libgig/SF.h, [ac_libgig_sf2="yes"], [ac_libgig_sf2="no"]) + if test "x$ac_libgig_sf2" = "xyes"; then + AC_DEFINE(CONFIG_LIBGIG_SF2, 1, [Define if libgig/SF.h is available.]) + fi +fi + +AC_SUBST(ac_incpath) +AC_SUBST(ac_cflags) +AC_SUBST(ac_ldflags) + + # Checks for typedefs, structures, and compiler characteristics. # AC_C_CONST @@ -344,12 +504,16 @@ echo " LSCP edit instrument support . . . . . . . . . . .: $ac_edit_instrument" echo " GigaSampler instrument file support (libgig) . . .: $ac_libgig" if test "x$ac_libgig" = "xyes"; then -echo " libgig supports fast information retrieval . . . .: $have_libgig_setautoload" +echo " libgig supports fast information retrieval . . . .: $ac_libgig_setautoload" +echo " libgig supports SoundFont2 instruments files . . .: $ac_libgig_sf2" fi -echo " LSCP channel MIDI event support . . . . . . . . .: $ac_lscp_channel_midi_event" -echo " LSCP device MIDI event support . . . . . . . . . .: $ac_lscp_device_midi_event" +echo " LSCP channel MIDI event support . . . . . . . . .: $ac_channel_midi_event" +echo " LSCP device MIDI event support . . . . . . . . . .: $ac_device_midi_event" echo " LSCP runtime max. voices / disk streams support .: $ac_max_voices" echo +echo " X11 Unique/Single instance . . . . . . . . . . . .: $ac_xunique" +echo " Debugger stack-trace (gdb) . . . . . . . . . . . .: $ac_stacktrace" +echo echo " Install prefix . . . . . . . . . . . . . . . . . .: $ac_prefix" echo echo "Now type 'make', followed by 'make install' as root."