# BlueALSA - configure.ac # Copyright (c) 2016-2018 Arkadiusz Bokowy AC_PREREQ([2.59]) AC_INIT([bluez-alsa], [1.3.1], [arkadiusz.bokowy@gmail.com]) AM_INIT_AUTOMAKE([foreign subdir-objects -Wall -Werror]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_PROG_CC AC_PROG_INSTALL AM_PROG_AR AM_PROG_CC_C_O LT_INIT # configuration should match ALSA library AC_PREFIX_DEFAULT([/usr]) AC_SUBST([runstatedir], [/var/run]) # testing presence of pkg-config AC_MSG_CHECKING([pkg-config m4 macros]) if test m4_ifdef([PKG_CHECK_MODULES], [yes], [no]) = "yes"; then AC_MSG_RESULT([yes]); else AC_MSG_RESULT([no]); AC_MSG_ERROR([pkg-config is required. See pkg-config.freedesktop.org]) fi # support for debugging AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [enable debugging support])) AM_CONDITIONAL([ENABLE_DEBUG], [test "x$enable_debug" = "xyes"]) AM_COND_IF([ENABLE_DEBUG], [ AC_DEFINE([DEBUG], [1], [Define to 1 if the debugging is enabled.]) ]) AC_ARG_ENABLE([debug-time], AS_HELP_STRING([--enable-debug-time], [enable debug timing support])) AM_CONDITIONAL([ENABLE_DEBUG_TIME], [test "x$enable_debug_time" = "xyes"]) AM_COND_IF([ENABLE_DEBUG_TIME], [ AC_DEFINE([DEBUG_TIME], [1], [Define to 1 if the debug timing is enabled.]) ]) AC_CHECK_FUNCS([register_printf_specifier]) AC_CHECK_LIB([pthread], [pthread_create], [], [AC_MSG_ERROR([pthread library not found])]) AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([unable to find clock_gettime() function])]) AC_SEARCH_LIBS([pow], [m], [], [AC_MSG_ERROR([unable to find pow() function])]) PKG_CHECK_MODULES([ALSA], [alsa]) PKG_CHECK_MODULES([BLUEZ], [bluez >= 5.0]) PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.26]) PKG_CHECK_MODULES([GIO2], [gio-unix-2.0]) PKG_CHECK_MODULES([SBC], [sbc >= 1.2]) AM_CONDITIONAL([ALSA_1_1_2], [$PKG_CONFIG --atleast-version=1.1.2 alsa]) AM_CONDITIONAL([ALSA_1_1_7], [$PKG_CONFIG --atleast-version=1.1.7 alsa]) AC_ARG_ENABLE([aac], [AS_HELP_STRING([--enable-aac], [enable AAC support])]) AM_CONDITIONAL([ENABLE_AAC], [test "x$enable_aac" = "xyes"]) AM_COND_IF([ENABLE_AAC], [ PKG_CHECK_MODULES([AAC], [fdk-aac >= 0.1.1]) AC_DEFINE([ENABLE_AAC], [1], [Define to 1 if AAC is enabled.]) ]) AC_ARG_ENABLE([aptx], [AS_HELP_STRING([--enable-aptx], [enable apt-X support])]) AM_CONDITIONAL([ENABLE_APTX], [test "x$enable_aptx" = "xyes"]) AM_COND_IF([ENABLE_APTX], [ PKG_CHECK_MODULES([APTX], [openaptx >= 1.0.0]) AC_DEFINE([ENABLE_APTX], [1], [Define to 1 if apt-X is enabled.]) ]) AC_ARG_ENABLE([ldac], [AS_HELP_STRING([--enable-ldac], [enable LDAC support])]) AM_CONDITIONAL([ENABLE_LDAC], [test "x$enable_ldac" = "xyes"]) AM_COND_IF([ENABLE_LDAC], [ PKG_CHECK_MODULES([LDAC], [libldacBT >= 2.0.0]) PKG_CHECK_MODULES([LDAC_ABR], [libldacBT_abr >= 2.0.0]) AC_DEFINE([ENABLE_LDAC], [1], [Define to 1 if LDAC is enabled.]) ]) AC_ARG_ENABLE([payloadcheck], [AS_HELP_STRING([--disable-payloadcheck], [disable RTP payload type check (workaround for a PulseAudio bug)])]) AM_CONDITIONAL([ENABLE_PAYLOADCHECK], [test "x$enable_payloadcheck" != "xno"]) AM_COND_IF([ENABLE_PAYLOADCHECK], [ AC_DEFINE([ENABLE_PAYLOADCHECK], [1], [Define to 1 if PAYLOADCHECK is enabled.]) ]) AC_ARG_ENABLE([aplay], [AS_HELP_STRING([--disable-aplay], [disable building of bluealsa-aplay tool])]) AM_CONDITIONAL([ENABLE_APLAY], [test "x$enable_aplay" != "xno"]) AC_ARG_ENABLE([rfcomm], [AS_HELP_STRING([--disable-rfcomm], [disable building of bluealsa-rfcomm tool])]) AM_CONDITIONAL([ENABLE_RFCOMM], [test "x$enable_rfcomm" != "xno"]) AC_ARG_ENABLE([hcitop], [AS_HELP_STRING([--enable-hcitop], [enable building of hcitop tool])]) AM_CONDITIONAL([ENABLE_HCITOP], [test "x$enable_hcitop" = "xyes"]) AM_COND_IF([ENABLE_HCITOP], [ PKG_CHECK_MODULES([LIBBSD], [libbsd]) PKG_CHECK_MODULES([NCURSES], [ncurses]) ]) AC_ARG_ENABLE([test], [AS_HELP_STRING([--enable-test], [enable unit test])]) AM_CONDITIONAL([ENABLE_TEST], [test "x$enable_test" = "xyes"]) AM_COND_IF([ENABLE_TEST], [ PKG_CHECK_MODULES([CHECK], [check >= 0.9.10]) ]) # Since it is not possible to specify custom ALSA plugin directory, BlueALSA # PCM plugin has to be installed prior to this test. AC_ARG_ENABLE([test-pcm], [AS_HELP_STRING([--enable-test-pcm], [enable PCM plugin test])]) AM_CONDITIONAL([ENABLE_TEST_PCM], [test "x$enable_test_pcm" = "xyes"]) AC_ARG_WITH([alsaplugindir], AS_HELP_STRING([--with-alsaplugindir=dir], [path where ALSA plugin files are stored]), [alsaplugindir="$withval"], [alsaplugindir=$($PKG_CONFIG --variable=libdir alsa)/alsa-lib]) AC_ARG_WITH([alsaconfdir], AS_HELP_STRING([--with-alsaconfdir=dir], [directory containing ALSA add-on configuration files]), [alsaconfdir="$withval"], [AM_COND_IF([ALSA_1_1_7], [alsaconfdir="$sysconfdir/alsa/conf.d"], [alsaconfdir="$datadir/alsa/alsa.conf.d"])]) test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix # TODO: Get rid of "ev(a|i)l" statements. # TIP: Wizard-level Autotconf coder is needed. eval alsaconfdir="$alsaconfdir" eval alsaconfdir="$alsaconfdir" eval alsaplugindir="$alsaplugindir" eval alsaplugindir="$alsaplugindir" AC_DEFINE_UNQUOTED([ALSA_CONF_DIR], "$alsaconfdir", [Directory containing ALSA add-on configuration files.]) AC_DEFINE_UNQUOTED([ALSA_PLUGIN_DIR], "$alsaplugindir", [Directory containing ALSA add-on modules.]) AC_DEFINE_UNQUOTED([RUN_STATE_DIR], "$runstatedir", [Path where run statuses are stored.]) AC_SUBST([ALSA_CONF_DIR], [$alsaconfdir]) AC_SUBST([ALSA_PLUGIN_DIR], [$alsaplugindir]) AC_SUBST([RUN_STATE_DIR], [$runstatedir]) AC_CONFIG_FILES([ Makefile src/Makefile src/asound/Makefile utils/Makefile test/Makefile]) AC_OUTPUT # warn user that alsa-lib thread-safety makes troubles AM_COND_IF([ALSA_1_1_2], [ AC_MSG_WARN([ *** alsa-lib >= 1.1.2 ***]) AC_MSG_WARN([Starting from alsa-lib 1.1.2, it is possible to enable]) AC_MSG_WARN([thread-safe API functions. Unfortunately, this feature]) AC_MSG_WARN([is not mature enough - software plugins may experience]) AC_MSG_WARN([random deadlocks (bluez-alsa PCM plugin is affected).]) AC_MSG_WARN([Either compile alsa-lib without this feature or export]) AC_MSG_WARN([LIBASOUND_THREAD_SAFE=0 while using bluealsa PCM.]) ]) # warn user that aptX support is not an open-source feature AM_COND_IF([ENABLE_APTX], [ AC_MSG_WARN([ *** aptX encoder support ***]) AC_MSG_WARN([You have enabled support for aptX encoding. Note, that]) AC_MSG_WARN([by default bluez-alsa will use openaptx library, which]) AC_MSG_WARN([does NOT perform any encoding/decoding.]) ])