--- gigedit/trunk/configure.ac 2007/10/12 17:46:29 1411 +++ gigedit/trunk/configure.ac 2017/04/15 20:21:41 3116 @@ -1,13 +1,15 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(configure.ac) -AC_CONFIG_AUX_DIR([.]) #------------------------------------------------------------------------------------ # The following is the current, official release version of gigedit: -GIGEDIT_VER_MAJOR=0 -GIGEDIT_VER_MINOR=0 -GIGEDIT_VER_RELEASE=3 +m4_define(gigedit_ver_major, 1) +m4_define(gigedit_ver_minor, 0) +m4_define(gigedit_ver_release, 0.svn28) + +AC_INIT([gigedit], [gigedit_ver_major.gigedit_ver_minor.gigedit_ver_release]) +AC_CONFIG_SRCDIR([configure.ac]) +AC_CONFIG_AUX_DIR([.]) #------------------------------------------------------------------------------------ # The following is the libtool / shared library version. This doesn't have to @@ -26,19 +28,20 @@ # 6. If any interfaces have been removed since the last public release, then set age # to 0. -LIBGIGEDIT_LT_CURRENT=0 +LIBGIGEDIT_LT_CURRENT=3 LIBGIGEDIT_LT_REVISION=0 LIBGIGEDIT_LT_AGE=0 SHARED_VERSION_INFO="$LIBGIGEDIT_LT_CURRENT:$LIBGIGEDIT_LT_REVISION:$LIBGIGEDIT_LT_AGE" -AC_LANG_CPLUSPLUS +AC_LANG([C++]) AC_PROG_CXX +AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL AC_SUBST(SHLIB_VERSION_ARG) AC_SUBST(SHARED_VERSION_INFO) -AC_SUBST(GIGEDIT_VER_MAJOR) -AC_SUBST(GIGEDIT_VER_MINOR) -AC_SUBST(GIGEDIT_VER_RELEASE) +AC_SUBST(GIGEDIT_VER_MAJOR, gigedit_ver_major) +AC_SUBST(GIGEDIT_VER_MINOR, gigedit_ver_minor) +AC_SUBST(GIGEDIT_VER_RELEASE, gigedit_ver_release) # configure checks for the following file's existence to make sure that # the directory that it is told contains the source code in fact does. @@ -58,26 +61,46 @@ IT_PROG_INTLTOOL(0.35.0) AM_GLIB_GNU_GETTEXT -PKG_CHECK_MODULES(GTKMM, gtkmm-2.4 >= 2.4.10 gthread-2.0) -PKG_CHECK_MODULES(GIG, gig >= 3.1.1) +windows=no +mac=no +case $host in + *mingw*|*cygwin*) windows=yes ;; + *-*-darwin*) mac=yes ;; +esac +AM_CONDITIONAL(WINDOWS, test "$windows" = "yes") +AM_CONDITIONAL(MAC, test "$mac" = "yes") + +# Note: even though Objective-C sources are just compiled for Mac, the +# following AC macros though must not be embedded into a shell check +# (if test "$mac" = "yes" ...), because those AC macros themselves are +# expanded before any shell code is executed, the generated configure +# code though would then not be executed and would lead to interesting +# libtool errors on non-Mac systems due to this. +AC_PROG_OBJC +AC_PROG_OBJCXX + +PKG_PROG_PKG_CONFIG +have_gtk3=no +PKG_CHECK_EXISTS(gtkmm-3.0 >= 2.99, + [PKG_CHECK_MODULES(GTKMM, gtkmm-3.0, have_gtk3=yes)], + [PKG_CHECK_MODULES(GTKMM, gtkmm-2.4 >= 2.8 gthread-2.0 cairomm-1.0)]) +AM_CONDITIONAL(HAVE_GTK3, [test "$have_gtk3" = "yes"]) + +PKG_CHECK_MODULES(SIGC, sigc++-2.0) +AC_SUBST(SIGC_CFLAGS) +AC_SUBST(SIGC_LIBS) + +PKG_CHECK_MODULES(GIG, gig >= 4.0.0) +AC_SUBST(GIG_CFLAGS) +AC_SUBST(GIG_LIBS) # check for presence of libsndfile -PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2) +PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.11) AC_SUBST(SNDFILE_CFLAGS) AC_SUBST(SNDFILE_LIBS) -# check for loop functionality in libsndfile -gigedit_save_CFLAGS=$CFLAGS -CFLAGS="$SNDFILE_CFLAGS $CFLAGS" -AC_CHECK_MEMBERS([SF_INSTRUMENT.loops],, - [AC_MSG_WARN([Your version of libsndfile does not support - reading of loop information. Gigedit will not be able to - extract loop information from sample files.])], - [#include ]) -CFLAGS=$gigedit_save_CFLAGS - # check for (optional) presence of liblinuxsampler -liblinuxsampler_version="0.4.0.5cvs" +liblinuxsampler_version="2.0.0" PKG_CHECK_MODULES( LINUXSAMPLER, linuxsampler >= $liblinuxsampler_version, have_linuxsampler=1, have_linuxsampler=0 @@ -91,7 +114,7 @@ else echo "Found linuxsampler $liblinuxsampler_version" echo -n "Retrieving LinuxSampler's plugin dir... " - LINUXSAMPLER_PLUGIN_DIR=`pkg-config --variable plugindir linuxsampler` + LINUXSAMPLER_PLUGIN_DIR=`$PKG_CONFIG --variable plugindir linuxsampler` if test "$LINUXSAMPLER_PLUGIN_DIR" = ""; then have_linuxsampler=0 echo "Error" @@ -102,8 +125,21 @@ # convert absolute LS plugin dir into relative dir # (see ch 27.10 of the automake manual, # "Installing to Hard-Coded Locations") - LINUXSAMPLER_PLUGIN_DIR=`echo "${LINUXSAMPLER_PLUGIN_DIR}" | sed 's/^.*\/lib\//\${libdir}\//g'` - echo "Relative plugin dir: ${LINUXSAMPLER_PLUGIN_DIR}" + # this one is extended to work with digit postfixed lib directories + # (e.g. "/usr/lib64/linuxsampler") as well + LINUXSAMPLER_PLUGIN_DIR=`echo "${LINUXSAMPLER_PLUGIN_DIR}" | sed 's/^.*\/lib[[0-9]]*\//\${libdir}\//g'` + if echo "${LINUXSAMPLER_PLUGIN_DIR}" | grep "\${libdir}" > /dev/null; then + echo "Relative plugin dir: ${LINUXSAMPLER_PLUGIN_DIR}" + else + echo "*********************************************************" + echo "* ! WARNING ! : Could not resolve LinuxSampler's plugin" + echo "* directory as relative path. This is probably not an" + echo "* issue if you're just going to install gigedit by" + echo "* 'make install', but it IS a problem if you're" + echo "* installing to a certain destination directory and/or" + echo "* compile in sandbox (e.g. Debian package or Gentoo emerge)" + echo "*********************************************************" + fi fi fi AC_SUBST(LINUXSAMPLER_CFLAGS) @@ -115,13 +151,54 @@ [Define to 1 if you have LinuxSampler installed.] ) +have_ls_vmidi=0 +if test $have_linuxsampler = "1"; then + AC_MSG_CHECKING([whether LinuxSampler supports virtual MIDI devices]) + AC_LANG_PUSH([C++]) + LIBS="$LINUXSAMPLER_LIBS $LIBS" + CFLAGS="$CFLAGS $LINUXSAMPLER_CFLAGS" + CXXFLAGS="$CXXFLAGS $CFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + using namespace LinuxSampler; + ]], [[ + bool (VirtualMidiDevice::*ptr1)(uint8_t, uint8_t) = 0; + bool (VirtualMidiDevice::*ptr2)() = 0; + bool (VirtualMidiDevice::*ptr3)(uint8_t) = 0; + uint8_t (VirtualMidiDevice::*ptr4)(uint8_t) = 0; + ptr1 = &VirtualMidiDevice::SendNoteOnToSampler; + ptr2 = &VirtualMidiDevice::NotesChanged; + ptr3 = &VirtualMidiDevice::NoteChanged; + ptr4 = &VirtualMidiDevice::NoteOffVelocity; + ]])],[ + AC_MSG_RESULT(yes) + have_ls_vmidi=1 + ],[ + AC_MSG_RESULT(no) + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + echo "! Support for the virtual MIDI keyboard in gigedit will" + echo "! be disabled. You'll see the keyboard in gigedit, but" + echo "! you won't be able to trigger notes with it nor see" + echo "! active notes caused by external MIDI sources of LS." + echo "! Update LinuxSampler and recompile gigedit if you want" + echo "! this feature." + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + ]) + AC_LANG_POP([C++]) +fi +AC_DEFINE_UNQUOTED( + HAVE_LINUXSAMPLER_VIRTUAL_MIDI_DEVICE, $have_ls_vmidi, + [Define to 1 if LinuxSampler supports virtual MIDI devices.] +) + AC_CONFIG_HEADERS(config.h) -AM_INIT_AUTOMAKE(gigedit, "$GIGEDIT_VER_MAJOR.$GIGEDIT_VER_MINOR.$GIGEDIT_VER_RELEASE") +AM_INIT_AUTOMAKE AC_CONFIG_FILES([ Makefile src/Makefile src/gigedit/Makefile + src/gigedit/gfx/Makefile src/plugin/Makefile gfx/Makefile po/Makefile.in @@ -130,6 +207,8 @@ doc/quickstart/Makefile win32/libgigedit.dev win32/gigedit.dev + win32/gigedit.nsi win32/Makefile + gigedit.spec ]) AC_OUTPUT