dnl Process this file with autoconf to produce a configure script.
AC_INIT(d_arithmetic.c)

AC_SUBST(alsa)
AC_SUBST(jack)
AC_SUBST(PDLIB)
AC_SUBST(DEFINES)
AC_SUBST(MORECFLAGS)
AC_SUBST(EXT)
AC_SUBST(OPT_CFLAGS)
AC_SUBST(USE_OPT_CFLAGS)
AC_SUBST(SYSSRC)
AC_SUBST(STRIPFLAG)
AC_SUBST(GUINAME)
AC_SUBST(GUIFLAGS)
AC_SUBST(OSNUMBER)
AC_SUBST(EXTERNTARGET)

dnl other defaults

dnl check for features

AC_ARG_ENABLE(alsa,    [  --disable-alsa          disable ALSA],
    alsa="no")
AC_ARG_ENABLE(jack,    [  --enable-jack           jack audio server],
    jack="yes")
AC_ARG_ENABLE(debug,   [  --enable-debug          debugging support],
    USE_OPT_CFLAGS="NO", USE_OPT_CFLAGS="YES")
    
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)


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",
         echo "pthreads required" || exit 1)

dnl This should be fixed so Pd can use ALSA shared libraries where appropriate.
if test "$alsa" != no; then
    AC_CHECK_LIB(asound,snd_pcm_info,PDLIB="$PDLIB -lasound" ; alsa="yes",alsa="")
fi

dnl Find paths to includes and libraries for X11
AC_PATH_X
dnl Checking for `XCreateWindow' function in -lX11:
AC_CHECK_LIB(X11, XCreateWindow, LIBS="$LIBS -lX11 -L$x_libraries", 
	echo "no X11 found" || exit 1, -L$x_libraries)

dnl look for tcl 8.x... do I really have to go through all this!?

AC_CHECK_HEADER(tcl.h,, echo "no tcl/tk header found" || exit 1)

AC_CHECK_LIB(tcl8.7, main,,
    AC_CHECK_LIB(tcl8.6, main,,
	AC_CHECK_LIB(tcl8.5, 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)))))))

AC_CHECK_LIB(tk8.7, main,,
    AC_CHECK_LIB(tk8.6, main,,
	AC_CHECK_LIB(tk8.5, 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)))))))

dnl Checking for tk.h or tkstep.h - not used at the moment
dnl AC_CHECK_HEADER(tk.h,DEFINES="$DEFINES -DTKINC=\\\"tk.h\\\"")
dnl AC_CHECK_HEADER(tkstep.h,DEFINES="$DEFINES -DTKINC=\\\"tkstep.h\\\"")

if test `uname -s` = Linux;
then
    LDFLAGS="-Wl,-export-dynamic"
    EXT=pd_linux
    MORECFLAGS="-DDL_OPEN -DUSEAPI_PORTAUDIO -DPA_USE_OSS -DPA_LITTLE_ENDIAN \
    	 -DUSEAPI_OSS \
        -I../portaudio/pa_common \
        -I../portaudio/pablio -I../portaudio/portmidi-macosx -Werror"
    SYSSRC="s_midi_oss.c s_audio_pa.c s_audio_oss.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 "
    STRIPFLAG=-s
    GUINAME="pd-gui"
    if test $USE_OPT_CFLAGS == "YES";
    then
	OPT_CFLAGS="-O6 -funroll-loops -fomit-frame-pointer"
    else
	OPT_CFLAGS="-g"
    fi
    OSNUMBER=0
fi

dnl **** note -- SGI/IRIX code is broken here!!! ***

if test `uname -s` = IRIX64;
then
    LDFLAGS="-n32 -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \
	-OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
	-shared -rdata_shared"
    EXT=pd_irix6
    MORECFLAGS=-DDL_OPEN
    SYSSRC=s_sgi.c
    STRIPFLAG=-s
    GUINAME="pd-gui"
    OSNUMBER=0
fi

if test `uname -s` = IRIX32;
then
    LDFLAGS="-o32 -DUNIX -DIRIX -O2 -shared -rdata_shared"
    EXT=pd_irix5
    MORECFLAGS=-DDL_OPEN
    SYSSRC=s_sgi.c
    STRIPFLAG=-s
    GUINAME="pd-gui"
    OSNUMBER=0
fi

if test `uname -s` = Darwin;
then
    LDFLAGS="-Wl -framework Tcl -framework Tk -framework CoreAudio \
        -framework AudioUnit -framework AudioToolbox \
        -framework Carbon -framework CoreMIDI"
    EXT=pd_darwin
    MORECFLAGS="-DMACOSX -I/usr/X11R6/include \
	 -I../portaudio_v18/pa_common \
        -I../portaudio_v18/pablio \
	-I../portmidi_osx \
	-Wno-error \
	-DUSEAPI_PORTAUDIO -DPA_BIG_ENDIAN"
    SYSSRC="s_midi_pm.c s_audio_pa.c \
	../portaudio_v18/pa_common/pa_lib.c \
	../portaudio_v18/pa_common/pa_trace.c \
	../portaudio_v18/pa_common/pa_convert.c \
    	../portaudio_v18/pablio/pablio_pd.c \
	../portaudio_v18/pablio/ringbuffer_pd.c \
	../portaudio_v18/pa_mac_core/pa_mac_core.c \
        ../portmidi_osx/pmdarwin.c \
        ../portmidi_osx/pmmacosx.c \
        ../portmidi_osx/pmutil.c \
        ../portmidi_osx/portmidi.c \
        ../portmidi_osx/ptdarwin.c "
    STRIPFLAG=""
    GUINAME="pdtcl"
    GUIFLAGS="-framework Tcl -framework Tk \
        -I/Library/Frameworks/Tk.framework/Versions/Current/Headers \
        -I/Library/Frameworks/Tcl.framework/Versions/Current/Headers \
        -I/Library/Frameworks/Tcl.framework/Versions/8.4/PrivateHeaders"
    if test $USE_OPT_CFLAGS == "YES";
    then
	OPT_CFLAGS="-O2"
    else
	OPT_CFLAGS="-g"
    fi
    OSNUMBER=2
    EXTERNTARGET=pd_darwin
fi

AC_OUTPUT(makefile)