AC_PREREQ(2.59) AC_INIT(pd,0.43.0) AC_CONFIG_SRCDIR(src/m_pd.c) AC_CONFIG_AUX_DIR([m4/config]) AM_INIT_AUTOMAKE AC_CONFIG_MACRO_DIR([m4/generated]) AC_CANONICAL_HOST # you will need to install iPhone XCode on Mac OS X to use this: PD_CHECK_IPHONE(IPHONEOS=yes, IPHONEOS=no, AC_MSG_ERROR([iPhoneOS SDK not available])) PD_CHECK_ANDROID(ANDROID=yes, ANDROID=no , AC_MSG_ERROR([Android SDK not available])) case $host in *darwin*) if test "x${IPHONEOS}" = "xno"; then portaudio=yes portmidi=yes MACOSX=yes EXTERNAL_CFLAGS="-fPIC" EXTERNAL_EXTENSION=d_fat else portaudio=no EXTERNAL_CFLAGS= EXTERNAL_EXTENSION=pd_darwin fi CFLAGS="$CFLAGS -O3 -funroll-loops -fomit-frame-pointer" INCLUDES="$INCLUDES -I/sw/include" LDFLAGS="$LDFLAGS -L/sw/lib" EXTERNAL_LDFLAGS="-bundle -undefined dynamic_lookup" ;; *linux*|GNU|GNU/kFreeBSD) # GNU and GNU/kFreeBSD are for Debian, were they are treated very similar to linux if test "x${host}" = "xGNU"; then HURD=yes fi if test "x${ANDROID}" = "xno"; then LINUX=yes portaudio=yes CFLAGS="$CFLAGS -O6 -funroll-loops -fomit-frame-pointer" fi EXTERNAL_CFLAGS="-fPIC" EXTERNAL_LDFLAGS="-Wl,--export-dynamic -shared -fPIC" EXTERNAL_EXTENSION=pd_linux ;; *mingw*) WINDOWS=yes MINGW=yes # ASIO doesn't build yet with the autotools setup. We need to figure out how # to make the final linking phase use g++ # asio=yes portaudio=yes CFLAGS="$CFLAGS -O6 -funroll-loops -fomit-frame-pointer" # ASIO is a C++ library, so if its included, then use g++ to build CC=g++ EXTERNAL_CFLAGS="-mms-bitfields" EXTERNAL_LDFLAGS="-s -shared -Wl,--enable-auto-import -lpd" EXTERNAL_EXTENSION=dll ;; *cygwin*) WINDOWS=yes CYGWIN=yes portaudio=yes CFLAGS="$CFLAGS -O6 -funroll-loops -fomit-frame-pointer" EXTERNAL_CFLAGS= EXTERNAL_LDFLAGS="-Wl,--export-dynamic -shared -lpd" EXTERNAL_EXTENSION=dll ;; esac PD_CHECK_UNIVERSAL(ARCH, universal=yes, universal=no) AM_CONDITIONAL(UNIVERSAL, test x$universal = xyes) if test "x${universal}" = "xyes"; then CFLAGS="${CFLAGS} ${ARCH_CFLAGS}" LDFLAGS="${LDFLAGS} ${ARCH_LDFLAGS}" fi AM_CONDITIONAL(ANDROID, test x$ANDROID = xyes) AM_CONDITIONAL(IPHONEOS, test x$IPHONEOS = xyes) AM_CONDITIONAL(LINUX, test x$LINUX = xyes) AM_CONDITIONAL(HURD, test x$HURD = xyes) AM_CONDITIONAL(MACOSX, test x$MACOSX = xyes) AM_CONDITIONAL(WINDOWS, test x$WINDOWS = xyes) AM_CONDITIONAL(CYGWIN, test x$MINGW = xyes) AM_CONDITIONAL(MINGW, test x$MINGW = xyes) # Configure libtool AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL # Checks for programs. AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL AC_PROG_LIBTOOL AC_PROG_MAKE_SET AC_PROG_LN_S #AC_PROG_GREP #AC_PROG_SED AC_SUBST(EXTERNTARGET) AC_SUBST(INCLUDES) AC_SUBST(EXTERNAL_EXTENSION) AC_SUBST(EXTERNAL_CFLAGS) AC_SUBST(EXTERNAL_LDFLAGS) dnl Checks for libraries. AC_CHECK_LIB([dl], [dlopen]) AC_CHECK_LIBM # AC_CHECK_LIBM computes LIBM but does not add to LIBS, hence we add it in # src/Makefile.am under pd_LDFLAGS as well # Checking for `pthread_create' function in -pthread (MinGW uses unusual names) ## CHECK whether this can be replaced by AX_PTHREAD AC_CHECK_LIB([pthread], [pthread_create],LIBS="-lpthread $LIBS", AC_CHECK_LIB([pthreadGC2], [pthread_create], LIBS="-lpthreadGC2 $LIBS", AC_CHECK_LIB([pthreadGC1], [pthread_create], LIBS="-lpthreadGC1 $LIBS", AC_CHECK_LIB([pthreadGC], [pthread_create], LIBS="-lpthreadGC $LIBS", AC_MSG_WARN([pthreads required]))))) AC_HEADER_STDC dnl Cygwin has sys/soundcard.h but Pd isn't ready for Cygwin since it only dnl includes OSS for UNIX AC_CHECK_HEADER(sys/soundcard.h, [oss=yes], [oss=no]) AM_CONDITIONAL(OSS, test x$oss = xyes) AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [coreaudio=yes], [coreaudio=no]) dnl AC_CHECK_HEADER(Jackmp/jack.h, [jack=yes], [jack=no]) dnl portaudio/CoreAudio doesn't work with iPhone test x$IPHONEOS = xyes && coreaudio=no AM_CONDITIONAL(COREAUDIO, test x$coreaudio = xyes) dnl TODO implement debug and static #AC_ARG_ENABLE(static, [ --enable-static link statically], # static=$enableval) #AC_ARG_ENABLE([debug], # [AS_HELP_STRING([--enable-debug], [use debugging support])], # [debug=$enableval]) #if test x$debug = xyes; then # CFLAGS="$CFLAGS -g" #fi dnl ALSA dnl shouldn't we use AM_PATH_ALSA from /usr/share/aclocal/alsa.m4 dnl alternatively we could use pkg-config AC_ARG_ENABLE([alsa], [AS_HELP_STRING([--disable-alsa], [do not use ALSA audio driver])], [alsa=$enableval], [alsa=yes]) AS_IF([test x$alsa = xyes], [ AC_CHECK_LIB(asound,snd_pcm_info,LIBS="$LIBS -lasound",alsa=no)]) AM_CONDITIONAL(ALSA, test x$alsa = xyes) dnl ASIO AC_ARG_ENABLE([asio], [AS_HELP_STRING([--enable-asio], [use ASIO audio driver])], [asio=$enableval]) AS_IF([test x$asio = xyes], [ AC_CHECK_FILE([asio/ASIOSDK2/common/asio.h],[asio=yes],[asio=no])]) AM_CONDITIONAL(ASIO, test x$asio = xyes) dnl JACK dnl shouldn't we use pkg-config? dnl TODO support jack xrun AC_ARG_ENABLE([jack], [AS_HELP_STRING([--enable-jack], [use JACK audio server])], [jack=$enableval]) dnl on Mac OS X, use the JackOSX.com Jackmp.framework not the jack lib. dnl this is set in src/Makefile.am based on the JACK var AS_IF([test x$MACOSX != xyes], [ AS_IF([test x$jack = xyes], [ AC_CHECK_LIB(rt,shm_open,LIBS="$LIBS -lrt") AC_CHECK_LIB(jack,jack_set_xrun_callback,LIBS="$LIBS -ljack";jack=xrun) AC_CHECK_LIB(jack,jack_set_error_function,LIBS="$LIBS -ljack";jack=yes, jack=no)])]) AM_CONDITIONAL(JACK, test x$jack = xyes) dnl portaudio AC_ARG_ENABLE([portaudio], [AS_HELP_STRING([--disable-portaudio], [do not use portaudio])], [portaudio=$enableval]) AM_CONDITIONAL(PORTAUDIO, test x$portaudio = xyes) dnl portmidi AC_ARG_ENABLE([portmidi], [AS_HELP_STRING([--enable-portmidi], [use portmidi])], [portmidi=$enableval]) AM_CONDITIONAL(PORTMIDI, test x$portmidi = xyes) if test x$portmidi = xyes; then echo Using included portmidi; fi dnl fftw v2 AC_ARG_ENABLE([fftw], [AS_HELP_STRING([--enable-fftw], [use FFTW package])], [fftw=$enableval]) if test x$fftw = xyes; then AC_CHECK_LIB(fftw, fftw_one, [LIBS="$LIBS -lfftw"], [AC_MSG_NOTICE([fftw package not found - using built-in FFT]); fftw=no]) fi AM_CONDITIONAL(FFTW, test x$fftw = xyes) # Checks for header files. AC_FUNC_ALLOCA AC_CHECK_HEADERS([fcntl.h limits.h malloc.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/soundcard.h sys/time.h sys/timeb.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_ERROR_AT_LINE AC_FUNC_FORK AC_FUNC_MALLOC AC_FUNC_REALLOC AC_TYPE_SIGNAL AC_CHECK_FUNCS([dup2 floor getcwd gethostbyname gettimeofday memmove memset pow regcomp select socket sqrt strchr strerror strrchr strstr strtol]) # check for programs AC_CHECK_PROG(HAVE_MSGFMT, [msgfmt], yes, no) test x$HAVE_MSGFMT = xyes || AC_MSG_WARN([Install GNU gettext with msgfmt if you want localizations to be compiled!]) AM_CONDITIONAL(MSGFMT, test x$HAVE_MSGFMT = xyes) # Specify what files are to be created. AC_CONFIG_FILES([Makefile asio/Makefile man/Makefile portaudio/Makefile portmidi/Makefile tcl/Makefile po/Makefile src/Makefile extra/Makefile extra/bonk~/GNUmakefile extra/choice/GNUmakefile extra/expr~/GNUmakefile extra/fiddle~/GNUmakefile extra/loop~/GNUmakefile extra/lrshift~/GNUmakefile extra/pd~/GNUmakefile extra/pique/GNUmakefile extra/sigmund~/GNUmakefile extra/stdout/GNUmakefile pd.pc ]) AC_OUTPUT dnl output some messages at the end AS_IF([test x$windows = xyes], [ AS_IF([test x$asio = xno], [ AC_MSG_RESULT( ASIO SDK not found! You need to download asiosdk2.2.zip from: http://www.steinberg.net/en/company/3rd_party_developer.html)])])