aboutsummaryrefslogtreecommitdiff
path: root/pd/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'pd/configure.ac')
-rw-r--r--pd/configure.ac272
1 files changed, 272 insertions, 0 deletions
diff --git a/pd/configure.ac b/pd/configure.ac
new file mode 100644
index 00000000..935151ff
--- /dev/null
+++ b/pd/configure.ac
@@ -0,0 +1,272 @@
+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)])])
+
+