dnl Process this file with autoconf to produce a configure script. AC_INIT(d_arithmetic.c) AC_SUBST(alsa, yes) AC_SUBST(jack, no) AC_SUBST(portaudio, no) AC_SUBST(portmidi, no) AC_SUBST(binarymode, -m755) AC_SUBST(fftw, no) AC_SUBST(tk, yes) AC_SUBST(PDLIB) AC_SUBST(CPPFLAGS) AC_SUBST(MORECFLAGS) AC_SUBST(EXT) AC_SUBST(USE_DEBUG_CFLAGS, no) AC_SUBST(SYSSRC) AC_SUBST(TCLTK_FRAMEWORKS_PATH) AC_SUBST(TCLTK_FRAMEWORKS_PATH) AC_SUBST(STRIPFLAG) AC_SUBST(GUINAME) AC_SUBST(GUIFLAGS) AC_SUBST(OSNUMBER) AC_SUBST(EXTERNTARGET) AC_SUBST(ASIOSRC) AC_SUBST(GUISRC) dnl other defaults dnl check for features AC_ARG_ENABLE(alsa, [ --enable-alsa alsa audio driver], alsa=$enableval) AC_ARG_ENABLE(jack, [ --enable-jack jack audio server], jack=$enableval) AC_ARG_ENABLE(portaudio,[ --enable-portaudio portaudio], portaudio=$enableval) AC_ARG_ENABLE(portmidi, [ --enable-portmidi portmidi], portmidi=$enableval) AC_ARG_ENABLE(debug, [ --enable-debug debugging support], USE_DEBUG_CFLAGS=$enableval) AC_ARG_ENABLE(static, [ --enable-static link statically], static=$enableval) AC_ARG_ENABLE(setuid, [ --enable-setuid install as setuid (linux)], setuid=$enableval) AC_ARG_ENABLE(fftw, [ --enable-fftw use FFTW package], fftw=$enableval) AC_ARG_ENABLE(fat, [ --disable-fat build fat binary on Mac OS X], fat=$enableval, fat="yes") AC_ARG_ENABLE(tk, [ --disable-tk build without tcl/tk-GUI], tk=$enableval) dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_CPP dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/ioctl.h sys/time.h unistd.h bstring.h) dnl Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_TYPE_SIGNAL AC_FUNC_VPRINTF AC_CHECK_FUNCS(gettimeofday select socket strerror) AC_FUNC_ALLOCA dnl Checks for libraries. dnl Checking for `dlopen' function in -ldl: AC_CHECK_LIB(dl, dlopen,PDLIB="$PDLIB -ldl", echo "dynamic link support required" || exit 1) dnl Checking for `sin' function in -lffm: dnl ffm is the fast math library on the alpha AC_CHECK_LIB(ffm, sin,PDLIB="$PDLIB -lffm") dnl Checking for `sin' function in -lm: AC_CHECK_LIB(m, sin,PDLIB="$PDLIB -lm", echo "math library required" || exit 1) dnl Checking for `pthread_create' function in -pthread AC_CHECK_LIB(pthread, pthread_create,PDLIB="$PDLIB -lpthread", AC_CHECK_LIB(pthreadGC2, pthread_create, PDLIB="$PDLIB -lpthreadGC2", AC_CHECK_LIB(pthreadGC1, pthread_create, PDLIB="$PDLIB -lpthreadGC1", AC_CHECK_LIB(pthreadGC, pthread_create, PDLIB="$PDLIB -lpthreadGC", echo "pthreads required"; exit 1)))) dnl Check for fftw package if test x$fftw = "xyes"; then AC_CHECK_LIB(fftw3f, fftwf_version,PDLIB="$PDLIB -lfftw3f", echo "fftw3 package not found - using built-in FFT"; fftw=no) fi dnl look for tcl 8.x... do I really have to go through all this!? foundit=no if test $foundit = "no"; then AC_CHECK_HEADER(tcl.h,foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.7/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.7";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.6/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.6";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.5/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.5";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.4/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.4";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.4/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.4";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.3/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.3";foundit=yes,) fi if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.2/tcl.h, GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.2";foundit=yes,) fi if test $foundit = "no"; then echo no tcl header found echo bolding trying without... # exit -1 fi AC_CHECK_LIB(tcl85, main,, AC_CHECK_LIB(tcl8.5, main,, AC_CHECK_LIB(tcl84, main,, AC_CHECK_LIB(tcl8.4, main,, AC_CHECK_LIB(tcl8.3, main,, AC_CHECK_LIB(tcl8.2, main,, AC_CHECK_LIB(tcl8.0, main,, echo no tcl library found; exit 1))))))) AC_CHECK_LIB(tk85, main,, AC_CHECK_LIB(tk8.5, main,, AC_CHECK_LIB(tk84, main,, AC_CHECK_LIB(tk8.4, main,, AC_CHECK_LIB(tk8.3, main,, AC_CHECK_LIB(tk8.2, main,, AC_CHECK_LIB(tk8.0, main,, echo no tk library found; exit 1))))))) if test x$tk != "xno"; then GUISRC="t_main.c t_tkcmd.c" else GUISRC= fi if test `uname -s` = Linux -o `uname -s` = "GNU/kFreeBSD" -o `uname -s` = "GNU"; then dnl Ckecking for ALSA echo .................... alsa= $alsa dnl This should be fixed so Pd can use ALSA shared libraries where appropriate. if test x$alsa = xyes; then AC_CHECK_LIB(asound,snd_pcm_info,PDLIB="$PDLIB -lasound" ; alsa="yes",alsa="no") fi dnl Checking for JACK if test x$jack = xyes; then AC_CHECK_LIB(rt,shm_open,LIBS="$LIBS -lrt") AC_CHECK_LIB(jack,jack_set_xrun_callback,LIBS="$LIBS -ljack";jack=xrun,jack=no) AC_CHECK_LIB(jack,jack_set_error_function,LIBS="$LIBS -ljack";jack=yes,jack=no) fi LDFLAGS="-Wl,-export-dynamic" if test "$static" = "yes"; then LDFLAGS="$LDFLAGS -static" fi EXT=pd_linux CPPFLAGS="-DHAVE_LIBDL -DUNIX -DHAVE_UNISTD_H\ -DPDGUIDIR=\\\"tcl/\\\" \ -fno-strict-aliasing" dnl No OSS on hurd if test `uname -s` = "GNU"; then SYSSRC="s_midi_dummy.c" else SYSSRC="s_midi_oss.c s_audio_oss.c" CPPFLAGS=$CPPFLAGS" -DPA_USE_OSS -DUSEAPI_OSS" fi if test x$alsa = "xyes"; then SYSSRC=$SYSSRC" s_audio_alsa.c s_audio_alsamm.c s_midi_alsa.c" CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA -DUSEAPI_ALSA" LDFLAGS=$LDFLAGS" -lasound" fi if test x$portaudio = "xyes"; then CPPFLAGS=$CPPFLAGS" -DUSEAPI_PORTAUDIO -DHAVE_SYS_SOUNDCARD_H \ -Wno-error \ -I../portaudio/include -I../portaudio/src/common \ -I../portaudio/src/os/unix/ \ -I../portmidi/pm_common \ -I../portmidi/pm_linux" SYSSRC="s_audio_pa.c \ s_audio_paring.c \ ../portaudio/src/common/pa_allocation.c \ ../portaudio/src/common/pa_converters.c \ ../portaudio/src/common/pa_cpuload.c \ ../portaudio/src/common/pa_dither.c \ ../portaudio/src/common/pa_front.c \ ../portaudio/src/common/pa_process.c \ ../portaudio/src/common/pa_skeleton.c \ ../portaudio/src/common/pa_stream.c \ ../portaudio/src/common/pa_trace.c \ ../portaudio/src/common/pa_debugprint.c \ ../portaudio/src/common/pa_ringbuffer.c \ ../portaudio/src/os/unix/pa_unix_hostapis.c \ ../portaudio/src/os/unix/pa_unix_util.c \ ../portaudio/src/hostapi/oss/pa_unix_oss.c "$SYSSRC if test x$alsa = "xyes"; then SYSSRC="../portaudio/src/hostapi/alsa/pa_linux_alsa.c "$SYSSRC CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA" fi if test x$jack = "xyes"; then SYSSRC="../portaudio/src/hostapi/jack/pa_jack.c "$SYSSRC CPPFLAGS=$CPPFLAGS" -DPA_USE_JACK" fi fi if test x$setuid = "xyes"; then binarymode="-m4755" fi STRIPFLAG=-s GUINAME="" if test x$USE_DEBUG_CFLAGS = "xyes"; then MORECFLAGS=$MORECFLAGS" -g" else MORECFLAGS=$MORECFLAGS" -O6 -funroll-loops -fomit-frame-pointer" fi if test x$jack = "xyes"; then LDFLAGS=$LDFLAGS" -lrt -ljack" fi if test x$jack = "xrun"; then LDFLAGS=$LDFLAGS" -lrt -ljack" fi OSNUMBER=0 fi if test `uname -s` = Darwin; then LDFLAGS="-Wl -framework CoreAudio \ -framework AudioUnit -framework AudioToolbox \ -framework Carbon -framework CoreMIDI" EXT=pd_darwin CPPFLAGS="-DHAVE_LIBDL -DMACOSX -DHAVE_UNISTD_H -I/usr/X11R6/include \ -I../portaudio/include -I../portaudio/src/common \ -I../portaudio/src/os/mac_osx/ \ -I../portmidi/pm_common -I../portmidi/pm_mac \ -I../portmidi/porttime \ -DUSEAPI_PORTAUDIO -DPA19 -DPA_USE_COREAUDIO -DNEWBUFFER" dnl for Mac OS X 10.3 (i.e. < 10.4) if test `uname -r` = 7.9.0; then fat="no" fi if test "x$fat" == "xyes"; then MORECFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk \ -arch i386 -arch ppc -Wno-error" EXTERNTARGET=d_fat LDFLAGS=$LDFLAGS" -arch i386 -arch ppc" else MORECFLAGS="-DMACOSX3 -DPA_BIG_ENDIAN -Wno-error" EXTERNTARGET=d_ppc fi SYSSRC="s_midi_pm.c s_audio_pa.c \ s_audio_paring.c \ ../portaudio/src/common/pa_allocation.c \ ../portaudio/src/common/pa_converters.c \ ../portaudio/src/common/pa_cpuload.c \ ../portaudio/src/common/pa_dither.c \ ../portaudio/src/common/pa_front.c \ ../portaudio/src/common/pa_process.c \ ../portaudio/src/common/pa_skeleton.c \ ../portaudio/src/common/pa_stream.c \ ../portaudio/src/common/pa_trace.c \ ../portaudio/src/common/pa_debugprint.c \ ../portaudio/src/common/pa_ringbuffer.c \ ../portaudio/src/os/unix/pa_unix_util.c \ ../portaudio/src/os/mac_osx/pa_mac_hostapis.c \ ../portaudio/src/hostapi/coreaudio/pa_mac_core.c \ ../portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c \ ../portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c \ ../portmidi/pm_mac/pmmac.c \ ../portmidi/pm_mac/pmmacosxcm.c \ ../portmidi/pm_common/pmutil.c \ ../portmidi/pm_common/portmidi.c \ ../portmidi/porttime/ptmacosx_cf.c " STRIPFLAG="" GUINAME="libPdTcl.dylib" # find the Tcl/Tk Frameworks if test -d "../../Frameworks"; then # Miller's location TCLTK_FRAMEWORKS_PATH="../../Frameworks" elif test -d "/Library/Frameworks"; then # get it from the default install location TCLTK_FRAMEWORKS_PATH="/Library/Frameworks" else # Panther has Tcl here; Tiger has Tcl and Tk here TCLTK_FRAMEWORKS_PATH="/System/Library/Frameworks" fi GUIFLAGS="-F$TCLTK_FRAMEWORKS_PATH -framework Tcl -framework Tk \ -I$TCLTK_FRAMEWORKS_PATH/Tk.framework/Versions/Current/Headers \ -I$TCLTK_FRAMEWORKS_PATH/Tcl.framework/Versions/Current/Headers \ -I$TCLTK_FRAMEWORKS_PATH/Tcl.framework/Versions/8.4/PrivateHeaders" if test x$USE_DEBUG_CFLAGS = "xyes"; then MORECFLAGS=$MORECFLAGS" -g" else MORECFLAGS=$MORECFLAGS" -O2" fi OSNUMBER=2 if test x$jack = "xyes"; then LDFLAGS=$LDFLAGS" -weak_framework Jackmp" fi if test x$jack = "xrun"; then LDFLAGS=$LDFLAGS" -weak_framework Jackmp" fi fi # only Windows uses ASIO, for the rest, set to blank ASIOSRC= if test `uname -s` = MINGW32_NT-5.0; then EXT=dll MORECFLAGS="-DUSEAPI_PORTAUDIO -DPA19 -DMSW -DPA_NO_DS -DPD_INTERNAL \ -I../portaudio/include -I../portaudio/src/common \ -I../portaudio/src/os/win/ \ -mwindows -mms-bitfields "$MORECFLAGS PDLIB=$PDLIB" -lwsock32 -lwinmm -lole32 -lstdc++" SYSSRC="s_audio_pa.c s_audio_paring.c \ s_audio_mmio.c s_midi_mmio.c \ ../portaudio/src/common/pa_allocation.c \ ../portaudio/src/common/pa_converters.c \ ../portaudio/src/common/pa_cpuload.c \ ../portaudio/src/common/pa_dither.c \ ../portaudio/src/common/pa_front.c \ ../portaudio/src/common/pa_process.c \ ../portaudio/src/common/pa_skeleton.c \ ../portaudio/src/common/pa_stream.c \ ../portaudio/src/common/pa_trace.c \ ../portaudio/src/common/pa_debugprint.c \ ../portaudio/src/common/pa_ringbuffer.c \ ../portaudio/src/os/win/pa_win_util.c \ ../portaudio/src/os/win/pa_win_hostapis.c \ ../portaudio/src/os/win/pa_x86_plain_converters.c \ ../portaudio/src/hostapi/wmme/pa_win_wmme.c" ASIOSRC="../portaudio/src/hostapi/asio/iasiothiscallresolver.cpp \ ../portaudio/src/hostapi/pa_asio/asio.cpp ../asio/asio.cpp \ ../asio/asiodrivers.cpp ../asio/asiolist.cpp" STRIPFLAG="--strip-unneeded" GUINAME="pdtcl.dll" GUIFLAGS= fi # support for jack, on either linux or darwin: if test x$jack = "xyes"; then MORECFLAGS=$MORECFLAGS" -DUSEAPI_JACK" SYSSRC=$SYSSRC" s_audio_jack.c" fi if test x$jack = "xrun"; then MORECFLAGS=$MORECFLAGS" -DUSEAPI_JACK -DJACK_XRUN" SYSSRC=$SYSSRC" s_audio_jack.c" fi if test x$fftw = "xyes"; then SYSSRC=$SYSSRC" d_fft_fftw.c d_fftroutine.c" LDFLAGS=$LDFLAGS" -lfftw3" else SYSSRC=$SYSSRC" d_fft_mayer.c d_fftroutine.c" fi ## JMZ{ ## this does not do very much, but i guess it is a good idea to use it... AC_SYS_LARGEFILE ## test, whether we can use _LARGEFILE64_SOURCE to ## enable large-file reading via "open64" (and lseek64"); if test "x$enable_largefile" != "xno"; then ## the following should run on autoconf>2.54 (which pd is not using) dnl AC_LINK_IFELSE ( [AC_LANG_PROGRAM([[ dnl #define _LARGEFILE64_SOURCE dnl #include dnl #include dnl #include dnl ]],[[ open64(0,0); ]])], dnl [ MORECFLAGS=$MORECFLAGS" -D_LARGEFILE64_SOURCE" ], ) ## and this is for autoconf<2.50 AC_TRY_LINK( [ #define _LARGEFILE64_SOURCE #include #include #include ],[ open64(0,0); ], [ MORECFLAGS=$MORECFLAGS" -D_LARGEFILE64_SOURCE" ], ) fi ## }JMZ: end of large-file support section if test -d ../obj then echo -n else mkdir ../obj fi if test -d ../bin then echo -n else mkdir ../bin fi AC_OUTPUT(makefile)