Should this go in the bug tracker? I don't know where I should be submitting patches.
--- configure.in.orig Thu Jun 1 11:29:43 2006 +++ configure.in Fri Jun 2 11:23:16 2006 @@ -81,63 +81,161 @@
dnl look for tcl 8.x... do I really have to go through all this!?
-foundit=no -if test $foundit == "no"; +dnl need to modify CFLAGS and LDFLAGS on FreeBSD in order to search +dnl /usr/local/* + +if test `uname -s` = FreeBSD; +then + CPPFLAGS="$CPPFLAGS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + GUIFLAGS="-I/usr/X11R6/include " + + dnl the tk headers require some quite incredible contortions to + dnl get any sort of test compilation working from autoconf. + dnl it seems to be easier just to check for the existance of tk.h + dnl instead of trying to get autoconf to do the right thing + + foundtk=no + if test -f "/usr/local/include/tk8.7/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.7" + foundtk=yes + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.6/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.6" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.5/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.5" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.4/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.4" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.3/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.3" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.2/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.2" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + if test -f "/usr/local/include/tk8.0/tk.h" + then + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tk8.0" + foundtk=yes + fi + fi + if test $foundtk == "no" + then + echo no tk header found + exit -1 + fi +fi + +foundtcl=no +if test $foundtcl == "no"; then - AC_CHECK_HEADER(tcl.h,foundit=yes,) + AC_CHECK_HEADER(tcl.h,foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.7/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.7";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.7 \ + -I/usr/include/tcl8.7";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.6/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.6";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.6 \ + -I/usr/include/tcl8.6";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.5/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.5";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.5 \ + -I/usr/include/tcl8.5";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.4/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.4";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.4 \ + -I/usr/include/tcl8.4";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.3/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.3";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.3 \ + -I/usr/include/tcl8.3";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then AC_CHECK_HEADER(tcl8.2/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.2";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.2 \ + -I/usr/include/tcl8.2";foundtcl=yes,) fi -if test $foundit == "no"; +if test $foundtcl == "no"; then echo no tcl header found exit -1 fi
+dnl FreeBSD has libtcl8X.so, not libtcl8.X.so + AC_CHECK_LIB(tcl8.7, main,, +AC_CHECK_LIB(tcl87, main,, AC_CHECK_LIB(tcl8.6, main,, + AC_CHECK_LIB(tcl86, main,, AC_CHECK_LIB(tcl8.5, main,, + AC_CHECK_LIB(tcl85, main,, AC_CHECK_LIB(tcl8.4, main,, + AC_CHECK_LIB(tcl84, main,, AC_CHECK_LIB(tcl8.3, main,, + AC_CHECK_LIB(tcl83, main,, AC_CHECK_LIB(tcl8.2, main,, - AC_CHECK_LIB(tcl8.0, main,,echo no tcl library found || exit 1))))))) + AC_CHECK_LIB(tcl82, main,, + AC_CHECK_LIB(tcl8.0, main,, + AC_CHECK_LIB(tcl80, main,,echo no tcl library found || exit 1)))))))))))))) + +dnl FreeBSD has libtk8X.so, not libtk8.X.so
AC_CHECK_LIB(tk8.7, main,, +AC_CHECK_LIB(tk87, main,, AC_CHECK_LIB(tk8.6, main,, + AC_CHECK_LIB(tk86, main,, AC_CHECK_LIB(tk8.5, main,, + AC_CHECK_LIB(tk85, main,, AC_CHECK_LIB(tk8.4, main,, + AC_CHECK_LIB(tk84, main,, AC_CHECK_LIB(tk8.3, main,, + AC_CHECK_LIB(tk83, main,, AC_CHECK_LIB(tk8.2, main,, - AC_CHECK_LIB(tk8.0, main,,echo no tk library found || exit 1))))))) - + AC_CHECK_LIB(tk82, main,, + AC_CHECK_LIB(tk8.0, main,, + AC_CHECK_LIB(tk80, main,, echo no tk library found || exit 1))))))))))))))
if test `uname -s` = Linux; then @@ -322,6 +420,38 @@ then LDFLAGS=$LDFLAGS" -weak_framework Jack" fi +fi + +if test `uname -s` = FreeBSD; +then + EXT=pd_freebsd + MORECFLAGS="-DPA_USE_OSS -DPA_LITTLE_ENDIAN -DUNIX -DUNISTD\ + -DUSEAPI_OSS \ + -I../portaudio/pa_common \ + -I../portaudio/pablio -I../portaudio/portmidi-macosx \ + -Werror -fno-strict-aliasing" + SYSSRC="s_audio_oss.c s_midi_oss.c " + if test x$portaudio == "xyes"; + then + MORECFLAGS="$MORECFLAGS -DUSEAPI_PORTAUDIO " + SYSSRC=$SYSSRC"s_audio_pa.c \ + ../portaudio/pa_common/pa_allocation.c \ + ../portaudio/pa_common/pa_converters.c \ + ../portaudio/pa_common/pa_cpuload.c \ + ../portaudio/pa_common/pa_dither.c \ + ../portaudio/pa_common/pa_front.c \ + ../portaudio/pa_common/pa_process.c \ + ../portaudio/pa_common/pa_skeleton.c \ + ../portaudio/pa_common/pa_stream.c \ + ../portaudio/pa_common/pa_trace.c \ + ../portaudio/pablio/pablio_pd.c \ + ../portaudio/pablio/ringbuffer_pd.c \ + ../portaudio/pa_unix/pa_unix_hostapis.c \ + ../portaudio/pa_unix/pa_unix_util.c \ + ../portaudio/pa_unix_oss/pa_unix_oss.c " + fi + GUINAME="pd-gui" + OSNUMBER=0 fi
# support for jack, on either linux or darwin: --- d_osc.c.orig Thu Jun 1 12:42:15 2006 +++ d_osc.c Thu Jun 1 13:13:54 2006 @@ -30,6 +30,11 @@ #include <machine/endian.h> #endif
+#if defined(__FreeBSD__) +#define __BYTE_ORDER _BYTE_ORDER +#define __LITTLE_ENDIAN _LITTLE_ENDIAN +#endif + #ifdef __APPLE__ #define __BYTE_ORDER BYTE_ORDER #define __LITTLE_ENDIAN LITTLE_ENDIAN --- makefile.in.orig Fri Jun 2 11:25:07 2006 +++ makefile.in Fri Jun 2 11:26:01 2006 @@ -99,9 +99,11 @@ cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) \ $(LIB)
+# why does LDFLAGS need to be specified here? why doesn't it carry +# over from ./configure? the config.log says it should $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC) cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) \ - $(GLIB) + $(LDFLAGS) $(GLIB)
$(BIN_DIR)/pd.tk: u_main.tk cp u_main.tk $(BIN_DIR)/pd.tk --- s_audio_oss.c.orig Thu Jun 1 12:22:20 2006 +++ s_audio_oss.c Thu Jun 1 13:13:54 2006 @@ -5,7 +5,12 @@
/* this file inputs and outputs audio using the OSS API available on linux. */
+/* OSS != Linux */ +#if defined(__FreeBSD__) +#include <sys/soundcard.h> +#else #include <linux/soundcard.h> +#endif
#include "m_pd.h" #include "s_stuff.h" --- s_stuff.h.orig Thu Jun 1 12:26:28 2006 +++ s_stuff.h Thu Jun 1 13:13:54 2006 @@ -174,6 +174,10 @@ #define API_DEFAULT API_OSS #define API_DEFSTRING "OSS" #endif +#ifdef __FreeBSD__ +#define API_DEFAULT API_OSS +#define API_DEFSTRING "OSS" +#endif #ifdef MSW #define API_DEFAULT API_MMIO #define API_DEFSTRING "MMIO" --- t_tkcmd.c.orig Fri Jun 2 11:21:19 2006 +++ t_tkcmd.c Fri Jun 2 11:21:34 2006 @@ -50,6 +50,10 @@ #define STARTGUI #endif
+#ifdef __FreeBSD__ +#define STARTGUI +#endif + #define FIRSTPORTNUM 5600
void tcl_mess(char *s); --- x_list.c.orig Thu Jun 1 12:40:36 2006 +++ x_list.c Thu Jun 1 13:13:54 2006 @@ -4,10 +4,16 @@
#include "m_pd.h" /* #include <string.h> */ + #ifdef MSW #include <malloc.h> #else +/* stuff in malloc.h and alloca.h is in stdlib.h on FreeBSD */ +#if defined(__FreeBSD__) +#include <stdlib.h> +#else #include <alloca.h> +#endif #endif
extern t_pd *newest;