changeset 9:90b3a3a25d99

Tweaks to enable build on OS X
author Jamie Bullock <jamie@postlude.co.uk>
date Sun, 08 Oct 2006 15:01:54 +0000
parents 34c52ec0e66c
children 998623a98706
files configure.in examples/puredata/Makefile.am examples/puredata/xtract~.c xtract/libxtract.h
diffstat 4 files changed, 76 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/configure.in	Fri Oct 06 08:03:32 2006 +0000
+++ b/configure.in	Sun Oct 08 15:01:54 2006 +0000
@@ -27,12 +27,10 @@
 AC_ARG_ENABLE(pd_example, 
               [  --enable-pd_example    Compile the Pure Data external example],
               [case "${enableval}" in
-               yes) vector=true ;;
-               no)  vector=false ;;
+               yes) pd_example=true ;;
+               no)  pd_example=false ;;
                *) AC_MSG_ERROR(bad value ${enableval} for --enable-pd_external) ;;
-           esac],[vector=false])
-
-
+           esac],[pd_example=false])
 
 # libtool version: current:revision:age
 #
@@ -49,28 +47,9 @@
 # age to 0.
 XTRACT_SO_VERSION=0:0:0
 
-CFLAGS="-pedantic -ansi"
-LDFLAGS="-lm"
+CFLAGS="$CFLAGS -pedantic -ansi"
+LDFLAGS="$LDFLAGS -lm"
 
-dnl Are we building with fftw?
-#if [[ "$with_vector" = "yes" ]] ; then
-if [[ "$vector" = "true" ]] ; then
-    LDFLAGS="$LDFLAGS -lfftw3f"
-    AC_DEFINE([BUILD_VECTOR], [1], [Build the vector functions])
-fi
-
-AM_CONDITIONAL(BUILD_VECTOR, test "x${vector}" = 'xtrue')
-
-if [[ "$pd_example" = "true" ]] ; then
-    AC_DEFINE([BUILD_PD_EXAMPLE], [1], [Build the pd example])
-dnl At some point we need to support other platforms, and include checks
-	pd_suffix=pd_linux
-fi
-
-dnl ------------------------------------------
-dnl ----  add PureData includes dir
-dnl ----  usually /usr/local/include
-dnl ------------------------------------------
 AC_ARG_WITH(pd_dir,
     [  --with-pd-dir=path   pd header path (default=/usr/local/include) ],
     [
@@ -80,16 +59,45 @@
     echo
     ])
 
-dnl ------------------------------------------
-dnl ---- check for PureData Header
-dnl ------------------------------------------
-AC_CHECK_HEADER(m_pd.h, [have_pd_hdr=yes ], [
+AC_ARG_WITH(fftw3_dir,
+    [  --with-fftw3-dir=path   fftw3 header path (default=/usr/local/include) ],
+    [
+    CFLAGS="$CFLAGS -I$withval"
+    echo
+    echo "fftw3 dir is $withval"
+    echo
+    ])
+
+dnl Are we building with fftw?
+#if [[ "$with_vector" = "yes" ]] ; then
+if [[ "$vector" = "true" ]] ; then
+    LDFLAGS="$LDFLAGS -lfftw3f"
+    AC_DEFINE([BUILD_VECTOR], [1], [Build the vector functions])
+    AC_CHECK_HEADER(fftw3.h, [have_fftw3_hdr=yes ], [
+    have_pd_hdr=no
+    echo
+    echo "no fftw3.h header found.  try with option --with-fftw3-dir=/path/to/fftw3/header"
+    echo
+    exit
+    ])
+fi
+
+AM_CONDITIONAL(BUILD_VECTOR, test "x${vector}" = 'xtrue')
+
+dnl Are we building the PD examples?
+if [[ "$pd_example" = "true" ]] ; then
+    PD_SOURCES="xtract~.c"
+    AC_DEFINE([BUILD_PD_EXAMPLE], [1], [Build the pd example])
+    AC_CHECK_HEADER(m_pd.h, [have_pd_hdr=yes ], [
     have_pd_hdr=no
     echo
     echo "no m_pd.h header found.  try with option --with-pd-dir=/path/to/pd/src"
     echo
     exit
     ])
+dnl At some point we need to support other platforms, and include checks
+dnl pd_suffix=pd_linux
+fi
 
 AM_CONDITIONAL(BUILD_PD_EXAMPLE, test "x${pd_example}" = 'xtrue')
 
@@ -99,7 +107,7 @@
 dnl ------------------------------------------
 dnl AC_CANONICAL_HOST
 
-dnl AC_SUBST(PD_CFLAGS,"$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1")
+dnl AC_SUBST(PD_CFLAGS,"$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1")
 dnl AC_SUBST(PD_LDFLAGS,"$PD_LDFLAGS -shared")
 dnl pd_ldflags="$PD_LDFLAGS -L/usr/local/lib -ldl"
 if test -z "$GCC"; then
@@ -122,18 +130,18 @@
 
         case $host in
         *86-*-linux*)
-                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
+                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
         PD_LDFLAGS="$PD_LDFLAGS -shared"
         dnl we could test for bad glibc here, but don't
         PD_SUFFIX=pd_linux
         ;;
         powerpc-*-linux*)
-                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1 "
+                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1 "
         PD_LDFLAGS="$PD_LDFLAGS -shared"
         PD_SUFFIX=pd_linux
         ;;
         *-*-linux*)
-                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1 -fPIC"
+                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1 -fPIC"
         PD_LDFLAGS="$PD_LDFLAGS -shared"
         PD_SUFFIX=pd_linux
         ;;
@@ -141,22 +149,25 @@
         echo "YOU HAVE A SPARC STATION, not setting any flags, not supported yet"
         ;;
         *-*-darwin*)
-                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 "
+                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 "
         PD_LDFLAGS="$PD_LDFLAGS -bundle -undefined suppress -flat_namespace"
         PD_SUFFIX=pd_darwin
 ;;
         *)
         dnl assume unix
-                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wno-deprecated -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
+                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
         PD_LDFLAGS="$PD_LDFLAGS -shared"
         PD_SUFFIX=pd_linux
         ;;
         esac
 fi
 
+PD_CFLAGS="$PD_CFLAGS -DPD"
+
 AC_SUBST(PD_CFLAGS)
 AC_SUBST(PD_LDFLAGS)
 AC_SUBST(PD_SUFFIX)
+AC_SUBST(PD_SOURCES)
 		
 AC_CONFIG_FILES([doc/documentation.doxygen])
 
--- a/examples/puredata/Makefile.am	Fri Oct 06 08:03:32 2006 +0000
+++ b/examples/puredata/Makefile.am	Sun Oct 08 15:01:54 2006 +0000
@@ -8,14 +8,9 @@
 pdinstallrefdir = $(pddir)/doc/5.reference
 pdinstallexpdir = $(pddir)/doc/xtract
 
-# Automake won't accept something ending in ".pd_linux" as a library
-pdinstall_PROGRAMS = xtract~.@PD_SUFFIX@
+pdinstall_PROGRAMS = xtract.@PD_SUFFIX@
 
-if BUILD_PD_EXAMPLE
-xtract_pd_linux_SOURCES = xtract~.c
-else
-xtract_pd_linux_SOURCES = 
-endif
+xtract_@PD_SUFFIX@_SOURCES = xtract~.c
 
 pdincludedir = $(pddir)/src
 
@@ -31,6 +26,9 @@
 		
 ## Install the documentation.
 
+install:
+	-mv xtract.@PD_SUFFIX@ $(pdinstalldir)/xtract~.@PD_SUFFIX@
+
 #pdinstallref_DATA = \
 #	help/aubioonset-help.pd \
 #	help/aubioquiet-help.pd \
--- a/examples/puredata/xtract~.c	Fri Oct 06 08:03:32 2006 +0000
+++ b/examples/puredata/xtract~.c	Sun Oct 08 15:01:54 2006 +0000
@@ -18,6 +18,7 @@
 
 /* calculates the spectral xtract of one frame, given peak frequency and amplitude to first and second inputs respectively */
 
+#define XTRACT 
 #include "xtract/libxtract.h"
 #include "m_pd.h"
 
--- a/xtract/libxtract.h	Fri Oct 06 08:03:32 2006 +0000
+++ b/xtract/libxtract.h	Sun Oct 08 15:01:54 2006 +0000
@@ -38,7 +38,7 @@
 #include "xtract_types.h"
 #include "xtract_macros.h"
 
-#define XTRACT_FEATURES 41
+#define XTRACT_FEATURES 42
 #define LOG_LIMIT 10e-10
 #define VERY_BIG_NUMBER 2e10
 #define SR_LIMIT 192000
@@ -74,7 +74,7 @@
     SLOPE,
     LOWEST_MATCH,
     HPS,
-	F0,
+    F0,
     MAGNITUDE_SPECTRUM,
     AUTOCORRELATION,
     AUTOCORRELATION_FFT,
@@ -136,10 +136,30 @@
  *  All functions return an integer error code as descibed in the enumeration
  *  return_codes_
  *
+ *	The preprocessor macro: XTRACT must be defined before  this  can be used
+ * 
  * example:<br>
- * xtract[PEAKS](amplitude_spectrum, 512, threshold, peaks)                                                                           
+ *
+ * #include <stdio.h>
+ * #define XTRACT
+ * #include "libxtract.h"
+ *
+ * main () {
+ * float values[] = {1.0, 2.0, 3.0, 4.0, 5.0};
+ * int N = 5;
+ * float mean;
+ *
+ * xtract[MEAN]((void *)values, N, NULL, &mean);
+ *
+ * printf("Mean = %.2f\n", mean);
+ * }
+ *
+ * The calling function may additionally make some tests against the value returned by xtract
+ * 
  */
+#ifdef XTRACT
 int(*xtract[XTRACT_FEATURES])(float *data, int N, void *argv, float *result);
+#endif
 
 /** \brief A structure to store a set of n_filters Mel filters */
 typedef struct xtract_mel_filter_ {