278 lines
8.8 KiB
Text
278 lines
8.8 KiB
Text
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ([2.68])
|
|
AC_INIT([butt], [1.45.0], [BUG-REPORT-ADDRESS])
|
|
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
|
AC_CANONICAL_HOST
|
|
|
|
AC_CONFIG_SRCDIR([config.h.in])
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
#predefined CXXFLAGS so AC_PROG_CXX does not add the -g flag
|
|
CXXFLAGS="$CXXFLAGS -O2"
|
|
|
|
# Compile with address sanitizer
|
|
# CXXFLAGS="$CXXFLAGS -O2 -g -fsanitize=address"
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CXX
|
|
AC_PROG_CC
|
|
AC_PROG_OBJC
|
|
|
|
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
|
|
|
# Compile with address sanitizer
|
|
#LDFLAGS="$LDFLAGS -L/usr/local/lib -fsanitize=address"
|
|
|
|
|
|
AC_ARG_WITH([radioco],
|
|
AS_HELP_STRING([--with-radioco], [Include support for Radio.co]))
|
|
|
|
AC_ARG_WITH([client],
|
|
AS_HELP_STRING([--with-client], [Build butt and butt-client]),
|
|
[with_client=yes],
|
|
[]
|
|
)
|
|
|
|
AC_ARG_WITH([butt],
|
|
AS_HELP_STRING([--without-butt], [Build only butt-client]),
|
|
[client_only=yes],
|
|
[],
|
|
)
|
|
|
|
AC_ARG_ENABLE([aac],
|
|
AS_HELP_STRING([--disable-aac], [Disable aac support]))
|
|
|
|
|
|
AS_IF([test "x$with_radioco" = "xyes"],
|
|
[
|
|
AC_DEFINE([WITH_RADIOCO], [1], [Enable support for Radio.co authentification])
|
|
])
|
|
|
|
AS_IF([test "x$client_only" = "xyes"],
|
|
[
|
|
AC_DEFINE([CLIENT_ONLY], [1], [build only butt-client])
|
|
])
|
|
|
|
AS_IF([test "x$with_client" = "xyes"],
|
|
[
|
|
AC_DEFINE([WITH_CLIENT], [1], [build butt and butt-client])
|
|
])
|
|
|
|
AS_IF([test "x$client_only" != "xyes"],
|
|
[
|
|
# Checks for libraries.
|
|
AC_CHECK_LIB([ogg], [ogg_stream_init], [],
|
|
[AC_MSG_ERROR([**** Could not find libogg ****])]
|
|
)
|
|
AC_CHECK_LIB([vorbis], [vorbis_info_init], [],
|
|
[AC_MSG_ERROR([**** Could not find libvorbis ****])]
|
|
)
|
|
AC_CHECK_LIB([vorbisenc], [vorbis_encode_init], [],
|
|
[AC_MSG_ERROR([**** Could not find libvorbisenc ****])]
|
|
)
|
|
AC_CHECK_LIB([opus], [opus_encoder_create], [],
|
|
[AC_MSG_ERROR([**** Could not find libopus ****])]
|
|
)
|
|
AC_CHECK_LIB([mp3lame], [lame_init], [],
|
|
[AC_MSG_ERROR([**** Could not find libmp3lame ****])]
|
|
|
|
)
|
|
AC_CHECK_LIB([FLAC], [FLAC__stream_encoder_new], [],
|
|
[AC_MSG_ERROR([**** Could not find libFLAC ****])]
|
|
)
|
|
AC_CHECK_LIB([portaudio], [Pa_Initialize], [],
|
|
[AC_MSG_ERROR([**** Could not find libportaudio ****])]
|
|
)
|
|
AC_CHECK_LIB([portmidi], [Pm_Initialize], [],
|
|
[AC_MSG_ERROR([**** Could not find libportmidi ****])]
|
|
)
|
|
AC_CHECK_LIB([samplerate], [src_new], [],
|
|
[AC_MSG_ERROR([**** Could not find samplerate ****])]
|
|
)
|
|
AC_CHECK_LIB([pthread], [pthread_create], [],
|
|
[AC_MSG_ERROR([**** Could not find libpthread ****])]
|
|
)
|
|
AC_CHECK_LIB([curl], [curl_global_init], [],
|
|
[AC_MSG_ERROR([**** Could not find libcurl ****])]
|
|
)
|
|
AC_CHECK_LIB([ssl], [SSL_CTX_new], [],
|
|
[AC_MSG_ERROR([**** Could not find libssl ****])]
|
|
)
|
|
AC_CHECK_LIB([crypto], [EVP_EncryptInit], [],
|
|
[AC_MSG_ERROR([**** Could not find libcrypto ****])]
|
|
)
|
|
|
|
])
|
|
|
|
AC_CHECK_HEADER([winsock2.h],
|
|
[
|
|
LIBS="$LIBS -lws2_32"
|
|
host_os="windows"
|
|
],
|
|
)
|
|
|
|
AM_GNU_GETTEXT([external])
|
|
AM_GNU_GETTEXT_VERSION([0.19])
|
|
|
|
AM_CONDITIONAL(WINDOWS, test "$host_os" = "windows")
|
|
|
|
|
|
build_linux=no
|
|
build_windows=no
|
|
build_mac=no
|
|
build_freebsd=no
|
|
|
|
# Detect the target system
|
|
case "${host_os}" in
|
|
linux*)
|
|
build_linux=yes
|
|
AC_MSG_NOTICE([Linux detected])
|
|
|
|
AS_IF([test "x$enable_aac" != "xno" -a "x$client_only" != "xyes"],
|
|
[
|
|
AC_CHECK_LIB([fdk-aac], [aacEncOpen],
|
|
[
|
|
CPPFLAGS="$CPPFLAGS -DHAVE_LIBFDK_AAC"
|
|
LIBS="$LIBS -ldl"
|
|
],
|
|
[AC_MSG_ERROR([**** Could not find libfdk-aac - run ./configure --disable-aac to build without aac support ****])]
|
|
)
|
|
])
|
|
AC_ARG_ENABLE([webrtc],
|
|
AS_HELP_STRING([--enable-webrtc], [Enable WebRTC support]),
|
|
[
|
|
AS_IF([test "x$client_only" != "xyes"],
|
|
[
|
|
AC_CHECK_LIB([datachannel], [rtcCreatePeerConnection], [],
|
|
[AC_MSG_ERROR([**** Could not find datachannel ****])])
|
|
])
|
|
])
|
|
;;
|
|
cygwin*|mingw*|windows)
|
|
build_windows=yes
|
|
AC_MSG_NOTICE([Windows detected])
|
|
|
|
# Do NOT check for aac lib here because butt must not depend on libfdk-aac dll.
|
|
# Instead define HAVE_LIBFDK_AAC manually, so butt runs with and without the dll
|
|
CPPFLAGS="$CPPFLAGS -DHAVE_LIBFDK_AAC"
|
|
|
|
AS_IF([test "x$client_only" != "xyes"],
|
|
[
|
|
AC_CHECK_LIB([datachannel], [rtcCreatePeerConnection], [],
|
|
[AC_MSG_ERROR([**** Could not find datachannel ****])])
|
|
])
|
|
;;
|
|
darwin*)
|
|
build_mac=yes
|
|
AC_MSG_NOTICE([MacOS detected])
|
|
CPPFLAGS="$CPPFLAGS -x objective-c++"
|
|
LIBS="$LIBS -framework AVFoundation -lintl -framework ScriptingBridge"
|
|
LDFLAGS="$LDFLAGS -rpath /usr/local/lib"
|
|
|
|
AS_IF([test "x$client_only" != "xyes"],
|
|
[
|
|
AC_CHECK_LIB([datachannel], [rtcCreatePeerConnection], [],
|
|
[AC_MSG_ERROR([**** Could not find datachannel ****])])
|
|
])
|
|
;;
|
|
freebsd*)
|
|
build_freebsd=yes
|
|
AC_MSG_NOTICE([FreeBSD detected])
|
|
|
|
AS_IF([test "x$enable_aac" != "xno" -a "x$client_only" != "xyes"],
|
|
[
|
|
# By default AC_CHECK_LIB adds -lfdk-aac to the linker flags if the check succeeds. But as the library is loaded with dlopen() during runtime
|
|
# the linker flag is not needed. So we only define HAVE_LIBFDK_AAC in case the library was found
|
|
AC_CHECK_LIB([fdk-aac], [aacEncOpen], [CPPFLAGS="$CPPFLAGS -DHAVE_LIBFDK_AAC"],
|
|
[AC_MSG_ERROR([**** Could not find libfdk-aac - run ./configure --disable-aac to build without aac support ****])]
|
|
)
|
|
])
|
|
|
|
AC_ARG_ENABLE([webrtc],
|
|
AS_HELP_STRING([--enable-webrtc], [Enable WebRTC support]),
|
|
[
|
|
AS_IF([test "x$client_only" != "xyes"],
|
|
[
|
|
AC_CHECK_LIB([datachannel], [rtcCreatePeerConnection], [],
|
|
[AC_MSG_ERROR([**** Could not find datachannel ****])])
|
|
])
|
|
])
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(["OS $host_os is not supported"])
|
|
;;
|
|
esac
|
|
|
|
# Pass the conditionals to automake
|
|
AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"])
|
|
AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"])
|
|
AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"])
|
|
AM_CONDITIONAL([FREEBSD], [test "$build_freebsd" = "yes"])
|
|
AM_CONDITIONAL([WITH_RADIOCO], [test "x$with_radioco" = "xyes"])
|
|
AM_CONDITIONAL([WITH_CLIENT], [test "x$with_client" = "xyes" -o "x$client_only" = "xyes"])
|
|
AM_CONDITIONAL([CLIENT_ONLY], [test "x$client_only" = "xyes"])
|
|
|
|
AC_CHECK_PROG([FLTKCONFIG],[fltk-config], [fltk-config])
|
|
|
|
if test "x$client_only" != "xyes"; then
|
|
if test "$FLTKCONFIG" = "fltk-config"; then
|
|
AC_CHECK_LIB([fltk], [main],
|
|
[
|
|
LIBS="$LIBS `fltk-config --ldflags --use-images`"
|
|
CXXFLAGS="$CXXFLAGS `fltk-config --cxxflags`"
|
|
],
|
|
[AC_MSG_ERROR([**** Could not find libfltk ****])]
|
|
)
|
|
else
|
|
AC_MSG_ERROR([**** Could not find fltk-config ****])
|
|
fi
|
|
fi
|
|
|
|
|
|
#Add dbus library for Linux
|
|
if test "$build_linux" = "yes" -a "x$client_only" != "xyes"; then
|
|
AC_MSG_NOTICE([])
|
|
PKG_CHECK_MODULES([DBUS], [dbus-1], [
|
|
AC_DEFINE([HAVE_DBUS], [1], [Use dbus to get current tracks])
|
|
LIBS="$LIBS $DBUS_LIBS"
|
|
CFLAGS="$CFLAGS $LIBS $DBUS_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $DBUS_CFLAGS"
|
|
], [
|
|
AC_DEFINE([HAVE_DBUS], [0], [Use dbus to get current tracks])
|
|
AC_MSG_ERROR([**** Coud not find dbus dev files])
|
|
])
|
|
# Explicitly add X11 library because it is not added by fltk-config on OpenSUSE
|
|
LIBS="$LIBS -lX11"
|
|
|
|
fi
|
|
|
|
#Add dbus library for FreeBSD
|
|
if test "$build_freebsd" = "yes" -a "x$client_only" != "xyes"; then
|
|
AC_MSG_NOTICE([])
|
|
PKG_CHECK_MODULES([DBUS], [dbus-1], [
|
|
AC_DEFINE([HAVE_DBUS], [1], [Use dbus to get current tracks])
|
|
LIBS="$LIBS $DBUS_LIBS"
|
|
CFLAGS="$CFLAGS $LIBS $DBUS_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $DBUS_CFLAGS"
|
|
], [
|
|
AC_DEFINE([HAVE_DBUS], [0], [Use dbus to get current tracks])
|
|
AC_MSG_ERROR([**** Coud not find dbus dev files])
|
|
])
|
|
fi
|
|
# Checks for header files.
|
|
AC_PATH_X
|
|
AC_CHECK_HEADERS([fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h])
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_HEADER_STDBOOL
|
|
AC_C_INLINE
|
|
|
|
# Checks for library functions.
|
|
#AC_FUNC_MALLOC
|
|
#AC_FUNC_REALLOC
|
|
AC_CHECK_FUNCS([gethostbyaddr gethostbyname memset pow select socket strchr strdup strpbrk strrchr strstr X509_check_host])
|
|
|
|
AC_CONFIG_FILES([Makefile po/Makefile.in src/Makefile])
|
|
AC_OUTPUT
|