pasted the complete alsa.m4 so compiling from CVS doesn't require alsa.m4

2004-11-18  Michael Natterer  <mitch@gimp.org>

	* acinclude.m4: pasted the complete alsa.m4 so compiling from
	CVS doesn't require alsa.m4 to be installed.

	* configure.in: check for alsa >= 1.0.0 and define HAVE_ALSA
	if found.

	* modules/Makefile.am: build controller_midi with ALSA_CFLAGS
	and ALSA_LIBS.

	* modules/controller_midi.c: s/HAVE_ALSALIB_H/HAVE_ALSA/.
This commit is contained in:
Michael Natterer 2004-11-18 14:51:19 +00:00 committed by Michael Natterer
parent 30164f1be2
commit bf08b8fd0a
5 changed files with 186 additions and 17 deletions

View File

@ -1,3 +1,16 @@
2004-11-18 Michael Natterer <mitch@gimp.org>
* acinclude.m4: pasted the complete alsa.m4 so compiling from
CVS doesn't require alsa.m4 to be installed.
* configure.in: check for alsa >= 1.0.0 and define HAVE_ALSA
if found.
* modules/Makefile.am: build controller_midi with ALSA_CFLAGS
and ALSA_LIBS.
* modules/controller_midi.c: s/HAVE_ALSALIB_H/HAVE_ALSA/.
2004-11-18 Michael Natterer <mitch@gimp.org>
* plug-ins/common/compressor.c (compressors): added back the

View File

@ -28,6 +28,8 @@ $2])
CPPFLAGS="$save_CPPFLAGS"
])
# Configure paths for gimp-print
# Roger Leigh -- Sat, 10 Feb 2001
# (based on gimpprint.m4 by Owen Taylor 97-11-3)
@ -218,3 +220,147 @@ main ()
AC_SUBST(GIMPPRINT_LIBS)
rm -f conf.gimpprinttest
])
dnl Configure Paths for Alsa
dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
dnl Jaroslav Kysela <perex@suse.cz>
dnl Last modification: alsa.m4,v 1.23 2004/01/16 18:14:22 tiwai Exp
dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate.
dnl enables arguments --with-alsa-prefix=
dnl --with-alsa-enc-prefix=
dnl --disable-alsatest
dnl
dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified,
dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
dnl
AC_DEFUN([AM_PATH_ALSA],
[dnl Save the original CFLAGS, LDFLAGS, and LIBS
alsa_save_CFLAGS="$CFLAGS"
alsa_save_LDFLAGS="$LDFLAGS"
alsa_save_LIBS="$LIBS"
alsa_found=yes
dnl
dnl Get the cflags and libraries for alsa
dnl
AC_ARG_WITH(alsa-prefix,
[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)],
[alsa_prefix="$withval"], [alsa_prefix=""])
AC_ARG_WITH(alsa-inc-prefix,
[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)],
[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""])
dnl FIXME: this is not yet implemented
AC_ARG_ENABLE(alsatest,
[ --disable-alsatest Do not try to compile and run a test Alsa program],
[enable_alsatest="$enableval"],
[enable_alsatest=yes])
dnl Add any special include directories
AC_MSG_CHECKING(for ALSA CFLAGS)
if test "$alsa_inc_prefix" != "" ; then
ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix"
CFLAGS="$CFLAGS -I$alsa_inc_prefix"
fi
AC_MSG_RESULT($ALSA_CFLAGS)
CFLAGS="$alsa_save_CFLAGS"
dnl add any special lib dirs
AC_MSG_CHECKING(for ALSA LDFLAGS)
if test "$alsa_prefix" != "" ; then
ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix"
LDFLAGS="$LDFLAGS $ALSA_LIBS"
fi
dnl add the alsa library
ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread"
LIBS=`echo $LIBS | sed 's/-lm//'`
LIBS=`echo $LIBS | sed 's/-ldl//'`
LIBS=`echo $LIBS | sed 's/-lpthread//'`
LIBS=`echo $LIBS | sed 's/ //'`
LIBS="$ALSA_LIBS $LIBS"
AC_MSG_RESULT($ALSA_LIBS)
dnl Check for a working version of libasound that is of the right version.
min_alsa_version=ifelse([$1], ,0.1.1,$1)
AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version)
no_alsa=""
alsa_min_major_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
alsa_min_minor_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
alsa_min_micro_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
AC_LANG_SAVE
AC_LANG_C
AC_TRY_COMPILE([
#include <alsa/asoundlib.h>
], [
/* ensure backward compatibility */
#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
#endif
#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
#endif
#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
#endif
# if(SND_LIB_MAJOR > $alsa_min_major_version)
exit(0);
# else
# if(SND_LIB_MAJOR < $alsa_min_major_version)
# error not present
# endif
# if(SND_LIB_MINOR > $alsa_min_minor_version)
exit(0);
# else
# if(SND_LIB_MINOR < $alsa_min_minor_version)
# error not present
# endif
# if(SND_LIB_SUBMINOR < $alsa_min_micro_version)
# error not present
# endif
# endif
# endif
exit(0);
],
[AC_MSG_RESULT(found.)],
[AC_MSG_RESULT(not present.)
ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)])
alsa_found=no]
)
AC_LANG_RESTORE
dnl Now that we know that we have the right version, let's see if we have the library and not just the headers.
if test "x$enable_alsatest" = "xyes"; then
AC_CHECK_LIB([asound], [snd_ctl_open],,
[ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
alsa_found=no]
)
fi
LDFLAGS="$alsa_save_LDFLAGS"
LIBS="$alsa_save_LIBS"
if test "x$alsa_found" = "xyes" ; then
ifelse([$2], , :, [$2])
else
ALSA_CFLAGS=""
ALSA_LIBS=""
ifelse([$3], , :, [$3])
fi
dnl That should be it. Now just export out symbols:
AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS)
])

View File

@ -54,6 +54,7 @@ m4_define([gtkhtml2_required_version], [2.0.0])
m4_define([gimpprint_required_version], [4.2.0])
m4_define([gimpprint_suggested_version], [4.2.6])
m4_define([gimpprint_toonew_version], [4.3.0])
m4_define([alsa_required_version], [1.0.0])
m4_define([rsvg_required_version], [2.2.0])
m4_define([wmf_required_version], [0.2.8])
m4_define([pygtk_required_version], [1.99.15])
@ -1207,6 +1208,15 @@ AC_SUBST(LCMS_LIBS)
AM_CONDITIONAL(HAVE_LCMS, test $have_lcms = yes)
################
# Check for alsa
################
AM_PATH_ALSA(alsa_required_version,
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if alsa is available]),
AC_MSG_WARN([*** midi input controller will be built without alsa support (alsa not found or unuseable) ***]))
#######################
# Check for linux input
#######################

View File

@ -76,5 +76,6 @@ libcontroller_linux_input_la_LDFLAGS = -avoid-version -module $(no_undefined)
libcontroller_linux_input_la_LIBADD = $(controller_libadd)
libcontroller_midi_la_SOURCES = controller_midi.c
libcontroller_midi_la_CFLAGS = $(ALSA_CFLAGS)
libcontroller_midi_la_LDFLAGS = -avoid-version -module $(no_undefined)
libcontroller_midi_la_LIBADD = $(controller_libadd)
libcontroller_midi_la_LIBADD = $(controller_libadd) $(ALSA_LIBS)

View File

@ -22,16 +22,14 @@
#include "config.h"
#undef HAVE_ASOUNDLIB_H
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#ifdef HAVE_ASOUNDLIB_H
# include <alsa/asoundlib.h>
#ifdef HAVE_ALSA
#include <alsa/asoundlib.h>
#endif
#include <gtk/gtk.h>
@ -79,7 +77,7 @@ struct _ControllerMidi
GIOChannel *io;
guint io_id;
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
snd_seq_t *sequencer;
guint seq_id;
#endif
@ -132,7 +130,7 @@ static gboolean midi_read_event (GIOChannel *io,
GIOCondition cond,
gpointer data);
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
static gboolean midi_alsa_prepare (GSource *source,
gint *timeout);
static gboolean midi_alsa_check (GSource *source);
@ -155,8 +153,7 @@ struct _GAlsaSource
GSource source;
ControllerMidi *controller;
};
#endif
#endif /* HAVE_ALSA */
static const GimpModuleInfo midi_info =
{
@ -260,7 +257,7 @@ midi_init (ControllerMidi *midi)
midi->midi_channel = -1;
midi->io = NULL;
midi->io_id = 0;
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
midi->sequencer = NULL;
midi->seq_id = 0;
#endif
@ -405,7 +402,7 @@ midi_set_device (ControllerMidi *midi,
midi->io = NULL;
}
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
if (midi->seq_id)
{
g_source_remove (midi->seq_id);
@ -414,7 +411,7 @@ midi_set_device (ControllerMidi *midi,
snd_seq_close (midi->sequencer);
midi->sequencer = NULL;
}
#endif
#endif /* HAVE_ALSA */
if (midi->device)
g_free (midi->device);
@ -425,7 +422,7 @@ midi_set_device (ControllerMidi *midi,
{
gint fd;
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
if (! g_ascii_strcasecmp (midi->device, "alsa"))
{
GAlsaSource *event_source;
@ -473,9 +470,10 @@ midi_set_device (ControllerMidi *midi,
sizeof (GAlsaSource));
event_source->controller = midi;
midi->seq_id = g_source_attach ((GSource *) event_source, NULL);
return TRUE;
}
#endif
#endif /* HAVE_ALSA */
#ifdef G_OS_WIN32
fd = open (midi->device, O_RDONLY);
@ -806,7 +804,7 @@ midi_read_event (GIOChannel *io,
return TRUE;
}
#ifdef HAVE_ASOUNDLIB_H
#ifdef HAVE_ALSA
static gboolean
midi_alsa_prepare (GSource *source,
gint *timeout)
@ -833,12 +831,13 @@ midi_alsa_dispatch (GSource *source,
GSourceFunc callback,
gpointer user_data)
{
ControllerMidi *midi = CONTROLLER_MIDI (((GAlsaSource *) source)->controller);
ControllerMidi *midi = CONTROLLER_MIDI (((GAlsaSource *) source)->controller);
snd_seq_event_t *event;
if (snd_seq_event_input_pending (midi->sequencer, 1) > 0)
{
snd_seq_event_input (midi->sequencer, &event);
if (event->type == SND_SEQ_EVENT_NOTEON &&
event->data.note.velocity == 0)
event->type = SND_SEQ_EVENT_NOTEOFF;
@ -869,4 +868,4 @@ midi_alsa_dispatch (GSource *source,
return FALSE;
}
#endif
#endif /* HAVE_ALSA */