bluez/configure.ac

384 lines
13 KiB
Plaintext
Raw Normal View History

2008-12-22 05:26:32 +08:00
AC_PREREQ(2.60)
2018-06-01 16:36:21 +08:00
AC_INIT(bluez, 5.50)
2002-12-25 09:05:59 +08:00
AM_INIT_AUTOMAKE([foreign subdir-objects color-tests silent-rules
tar-pax no-dist-gzip dist-xz])
AC_CONFIG_HEADERS(config.h)
AC_USE_SYSTEM_EXTENSIONS
2002-03-09 05:10:06 +08:00
2009-07-01 09:39:45 +08:00
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
2004-04-02 07:28:53 +08:00
AM_MAINTAINER_MODE
AC_PREFIX_DEFAULT(/usr/local)
PKG_PROG_PKG_CONFIG
COMPILER_FLAGS
2004-04-02 07:28:53 +08:00
AC_LANG_C
AC_C_RESTRICT
2002-03-09 05:10:06 +08:00
AC_PROG_CC
AM_PROG_CC_C_O
2008-06-16 08:49:28 +08:00
AC_PROG_CC_PIE
2002-03-09 05:10:06 +08:00
AC_PROG_INSTALL
AC_PROG_MKDIR_P
2003-03-31 18:05:12 +08:00
2004-07-07 23:56:21 +08:00
m4_define([_LT_AC_TAGCONFIG], [])
2004-04-02 07:28:53 +08:00
m4_ifdef([AC_LIBTOOL_TAGS], [AC_LIBTOOL_TAGS([])])
2004-03-03 11:56:18 +08:00
2005-02-10 08:21:01 +08:00
AC_DISABLE_STATIC
2004-03-03 11:56:18 +08:00
AC_PROG_LIBTOOL
2002-03-09 05:10:06 +08:00
if (test "$USE_MAINTAINER_MODE" = "yes"); then
AC_CHECK_PROG(enable_coverage, [lcov], [yes], [no])
AC_CHECK_PROG(enable_dbus_run_session, [dbus-run-session], [yes])
AC_CHECK_PROG(enable_valgrind, [valgrind], [yes])
AC_CHECK_HEADERS(valgrind/memcheck.h)
fi
AM_CONDITIONAL(COVERAGE, test "${enable_coverage}" = "yes")
AM_CONDITIONAL(DBUS_RUN_SESSION, test "${enable_dbus_run_session}" = "yes")
AM_CONDITIONAL(VALGRIND, test "${enable_valgrind}" = "yes")
MISC_FLAGS
AC_ARG_ENABLE(threads, AC_HELP_STRING([--enable-threads],
[enable threading support]), [enable_threads=${enableval}])
AC_CHECK_FUNC(signalfd, dummy=yes,
AC_MSG_ERROR(signalfd support is required))
AC_CHECK_LIB(rt, clock_gettime, dummy=yes,
AC_MSG_ERROR(realtime clock support is required))
AC_CHECK_LIB(pthread, pthread_create, dummy=yes,
AC_MSG_ERROR(posix thread support is required))
AC_CHECK_LIB(dl, dlopen, dummy=yes,
AC_MSG_ERROR(dynamic linking loader is required))
AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28, dummy=yes,
AC_MSG_ERROR(GLib >= 2.28 is required))
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
if (test "${enable_threads}" = "yes"); then
AC_DEFINE(NEED_THREADS, 1, [Define if threading support is required])
PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
AC_MSG_ERROR(GThread >= 2.16 is required))
GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
fi
PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.6, dummy=yes,
AC_MSG_ERROR(D-Bus >= 1.6 is required))
AC_SUBST(DBUS_CFLAGS)
AC_SUBST(DBUS_LIBS)
AC_ARG_WITH([dbusconfdir], AC_HELP_STRING([--with-dbusconfdir=DIR],
[path to D-Bus configuration directory]),
[path_dbusconfdir=${withval}])
if (test -z "${path_dbusconfdir}"); then
AC_MSG_CHECKING([D-Bus configuration directory])
path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`"
if (test -z "${path_dbusconfdir}"); then
AC_MSG_ERROR([D-Bus configuration directory is required])
fi
AC_MSG_RESULT([${path_dbusconfdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}])
AC_ARG_WITH([dbussystembusdir], AC_HELP_STRING([--with-dbussystembusdir=DIR],
[path to D-Bus system bus services directory]),
[path_dbussystembusdir=${withval}])
if (test -z "${path_dbussystembusdir}"); then
AC_MSG_CHECKING([D-Bus system bus services dir])
path_dbussystembusdir="`$PKG_CONFIG --variable=system_bus_services_dir dbus-1`"
if (test -z "${path_dbussystembusdir}"); then
AC_MSG_ERROR([D-Bus system bus services directory is required])
fi
AC_MSG_RESULT([${path_dbussystembusdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(DBUS_SYSTEMBUSDIR, [${path_dbussystembusdir}])
AC_ARG_WITH([dbussessionbusdir], AC_HELP_STRING([--with-dbussessionbusdir=DIR],
[path to D-Bus session bus services directory]),
[path_dbussessionbusdir=${withval}])
if (test -z "${path_dbussessionbusdir}"); then
AC_MSG_CHECKING([D-Bus session bus services dir])
path_dbussessionbusdir="`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`"
if (test -z "${path_dbussessionbusdir}"); then
AC_MSG_ERROR([D-Bus session bus services directory is required])
fi
AC_MSG_RESULT([${path_dbussessionbusdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(DBUS_SESSIONBUSDIR, [${path_dbussessionbusdir}])
AC_ARG_ENABLE(backtrace, AC_HELP_STRING([--enable-backtrace],
[compile backtrace support]), [enable_backtrace=${enableval}])
if (test "${enable_backtrace}" = "yes"); then
AC_CHECK_HEADER(elfutils/libdwfl.h, dummy=yes,
AC_MSG_ERROR(elfutils support is required))
AC_DEFINE(HAVE_BACKTRACE_SUPPORT, 1,
[Define to 1 if you have the backtrace support.])
BACKTRACE_CFLAGS=""
BACKTRACE_LIBS="-ldw"
AC_SUBST(BACKTRACE_CFLAGS)
AC_SUBST(BACKTRACE_LIBS)
fi
AC_ARG_ENABLE(library, AC_HELP_STRING([--enable-library],
[install Bluetooth library]), [enable_library=${enableval}])
AM_CONDITIONAL(LIBRARY, test "${enable_library}" = "yes")
AC_ARG_ENABLE(test, AC_HELP_STRING([--enable-test],
[enable test/example scripts]), [enable_test=${enableval}])
AM_CONDITIONAL(TEST, test "${enable_test}" = "yes")
AC_ARG_ENABLE(nfc, AC_HELP_STRING([--enable-nfc],
[enable NFC paring]), [enable_nfc=${enableval}])
AM_CONDITIONAL(NFC, test "${enable_nfc}" = "yes")
AC_ARG_ENABLE(sap, AC_HELP_STRING([--enable-sap],
[enable SAP profile]), [enable_sap=${enableval}])
AM_CONDITIONAL(SAP, test "${enable_sap}" = "yes")
AC_ARG_ENABLE(a2dp, AC_HELP_STRING([--disable-a2dp],
[disable A2DP profile]), [enable_a2dp=${enableval}])
AM_CONDITIONAL(A2DP, test "${enable_a2dp}" != "no")
AC_ARG_ENABLE(avrcp, AC_HELP_STRING([--disable-avrcp],
[disable AVRCP profile]), [enable_avrcp=${enableval}])
AM_CONDITIONAL(AVRCP, test "${enable_avrcp}" != "no")
AC_ARG_ENABLE(network, AC_HELP_STRING([--disable-network],
[disable network profiles]), [enable_network=${enableval}])
AM_CONDITIONAL(NETWORK, test "${enable_network}" != "no")
AC_ARG_ENABLE(hid, AC_HELP_STRING([--disable-hid],
[disable HID profile]), [enable_hid=${enableval}])
AM_CONDITIONAL(HID, test "${enable_hid}" != "no")
AC_ARG_ENABLE(hog, AC_HELP_STRING([--disable-hog],
[disable HoG profile]), [enable_hog=${enableval}])
AM_CONDITIONAL(HOG, test "${enable_hog}" != "no")
AC_ARG_ENABLE(health, AC_HELP_STRING([--enable-health],
[enable health profiles]), [enable_health=${enableval}])
AM_CONDITIONAL(HEALTH, test "${enable_health}" = "yes")
AC_ARG_ENABLE(tools, AC_HELP_STRING([--disable-tools],
[disable Bluetooth tools]), [enable_tools=${enableval}])
AM_CONDITIONAL(TOOLS, test "${enable_tools}" != "no")
AC_ARG_ENABLE(monitor, AC_HELP_STRING([--disable-monitor],
[disable Bluetooth monitor]), [enable_monitor=${enableval}])
AM_CONDITIONAL(MONITOR, test "${enable_monitor}" != "no")
AC_ARG_ENABLE(udev, AC_HELP_STRING([--disable-udev],
[disable udev device support]), [enable_udev=${enableval}])
if (test "${enable_tools}" != "no" && test "${enable_udev}" != "no"); then
PKG_CHECK_MODULES(UDEV, libudev >= 172, dummy=yes,
AC_MSG_ERROR(libudev >= 172 is required))
AC_SUBST(UDEV_CFLAGS)
AC_SUBST(UDEV_LIBS)
AC_CHECK_LIB(udev, udev_hwdb_new,
AC_DEFINE(HAVE_UDEV_HWDB_NEW, 1,
[Define to 1 if you have the udev_hwdb_new() function.]))
fi
AM_CONDITIONAL(UDEV, test "${enable_udev}" != "no")
AC_ARG_WITH([udevdir], AC_HELP_STRING([--with-udevdir=DIR],
[path to udev directory]), [path_udevdir=${withval}])
if (test "${enable_udev}" != "no" && test -z "${path_udevdir}"); then
AC_MSG_CHECKING([udev directory])
path_udevdir="`$PKG_CONFIG --variable=udevdir udev`"
if (test -z "${path_udevdir}"); then
AC_MSG_ERROR([udev directory is required])
fi
AC_MSG_RESULT([${path_udevdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(UDEV_DIR, [${path_udevdir}])
AM_CONDITIONAL(HID2HCI, test "${enable_tools}" != "no" &&
test "${enable_udev}" != "no")
AC_ARG_ENABLE(cups, AC_HELP_STRING([--disable-cups],
[disable CUPS printer support]), [enable_cups=${enableval}])
AM_CONDITIONAL(CUPS, test "${enable_cups}" != "no")
2017-08-15 02:24:41 +08:00
AC_ARG_ENABLE(mesh, AC_HELP_STRING([--enable-mesh],
[enable Mesh profile support]), [enable_mesh=${enableval}])
AM_CONDITIONAL(MESH, test "${enable_mesh}" = "yes")
if (test "${enable_mesh}" = "yes"); then
2017-08-15 02:24:41 +08:00
PKG_CHECK_MODULES(JSONC, json-c, dummy=yes,
AC_MSG_ERROR(json-c is required))
AC_SUBST(JSON_CFLAGS)
AC_SUBST(JSON_LIBS)
fi
profiles/midi: Added MIDI over BLE profile implementation This plugin implements the Central role of MIDI over Bluetooth Low-Energy (BLE-MIDI) 1.0 specification as published by MMA in November/2015. It was implmemented as a bluetoothd plugin because of latency requirements of MIDI. There are still room for improvements on this regard. Like previsouly mentioned, it only implements the Central role, but since all parsing and state-machine code is in libmidi.[hc] it should be simple to implement the Peripheral role as a GATT service as well. Files added: * profiles/midi/midi.c: Actual GATT plugin * profiles/midi/libmidi.[ch]: MIDI parsers Techinal notes ============== This plugin doesn't require any new threads. It relies on notifications from a device to parse and render proper events that are queued in the kernel, causing no blocks at all. Even if an error occur, it will be handled and returned control to bluetoothd. It also adds a new file descriptor to be read using struct io. That is necessary to read events from applications and render raw BLE packets to be sent to the device with a write without response command. It doesn't block as well. This patch introduces ALSA as dependency. But this feature is disabled by default. To enable it, pass --enable-midi to the configure script. Even though this introduces ALSA dependency, it is not an audio plugin. It is rather a MIDI plugin, which is a byte stream protocol with low throughput but requires low-latency. Observations ============ I have tested on a normal laptop Arch-linux (x86_64) and a Raspberry Pi 2 (ARM Cortex-A8) and it works very well. As I mentioned, the latency can always be improved. I will still maintain a personal branch on my github[1] so others can contribute there and I can test before sending to BlueZ. IMPORTAT: the timestamp support is incomplete since ALSA doesn't support the way MIDI over BLE expects (asign timestamp to an event without scheduling). We are working on ALSA to support this. Credits ======= I would like to send kudos to ROLI Ltd. which allowed my to work on this as part of my full-time job. [1] https://github.com/ftonello/bluez/
2017-01-04 01:30:06 +08:00
AC_ARG_ENABLE(midi, AC_HELP_STRING([--enable-midi],
[enable MIDI support]), [enable_midi=${enableval}])
AM_CONDITIONAL(MIDI, test "${enable_midi}" = "yes")
if (test "${enable_midi}" = "yes"); then
PKG_CHECK_MODULES(ALSA, alsa, dummy=yes,
AC_MSG_ERROR(ALSA lib is required for MIDI support))
AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS)
fi
AC_ARG_ENABLE(obex, AC_HELP_STRING([--disable-obex],
[disable OBEX profile support]), [enable_obex=${enableval}])
if (test "${enable_obex}" != "no"); then
PKG_CHECK_MODULES(ICAL, libical, dummy=yes,
AC_MSG_ERROR(libical is required))
AC_SUBST(ICAL_CFLAGS)
AC_SUBST(ICAL_LIBS)
fi
AM_CONDITIONAL(OBEX, test "${enable_obex}" != "no")
AC_ARG_ENABLE(btpclient, AC_HELP_STRING([--enable-btpclient],
[enable BTP client]), [enable_btpclient=${enableval}])
AM_CONDITIONAL(BTPCLIENT, test "${enable_btpclient}" = "yes")
if (test "${enable_btpclient}" = "yes" || test "${enable_mesh}" = "yes"); then
PKG_CHECK_MODULES(ELL, ell >= 0.3, enable_ell=yes,
AC_MSG_ERROR(ell library >= 0.3 is required))
AC_SUBST(ELL_CFLAGS)
AC_SUBST(ELL_LIBS)
fi
AM_CONDITIONAL(ELL, test "${enable_ell}" = "yes")
AC_ARG_ENABLE(client, AC_HELP_STRING([--disable-client],
[disable command line client]), [enable_client=${enableval}])
AM_CONDITIONAL(CLIENT, test "${enable_client}" != "no")
if (test "${enable_client}" != "no" || test "${enable_mesh}" = "yes"); then
AC_CHECK_HEADERS(readline/readline.h, enable_readline=yes,
AC_MSG_ERROR(readline header files are required))
fi
AM_CONDITIONAL(READLINE, test "${enable_readline}" = "yes")
AC_ARG_ENABLE(systemd, AC_HELP_STRING([--disable-systemd],
[disable systemd integration]), [enable_systemd=${enableval}])
AM_CONDITIONAL(SYSTEMD, test "${enable_systemd}" != "no")
AC_ARG_WITH([systemdsystemunitdir],
AC_HELP_STRING([--with-systemdsystemunitdir=DIR],
[path to systemd system unit directory]),
[path_systemunitdir=${withval}])
if (test "${enable_systemd}" != "no" && test -z "${path_systemunitdir}"); then
AC_MSG_CHECKING([systemd system unit dir])
path_systemunitdir="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"
if (test -z "${path_systemunitdir}"); then
AC_MSG_ERROR([systemd system unit directory is required])
fi
AC_MSG_RESULT([${path_systemunitdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(SYSTEMD_SYSTEMUNITDIR, [${path_systemunitdir}])
AC_ARG_WITH([systemduserunitdir],
AC_HELP_STRING([--with-systemduserunitdir=DIR],
[path to systemd user unit directory]),
[path_userunitdir=${withval}])
if (test "${enable_systemd}" != "no" && test -z "${path_userunitdir}"); then
AC_MSG_CHECKING([systemd user unit dir])
path_userunitdir="`$PKG_CONFIG --variable=systemduserunitdir systemd`"
if (test -z "${path_userunitdir}"); then
AC_MSG_ERROR([systemd user unit directory is required])
fi
AC_MSG_RESULT([${path_userunitdir}])
fi
configure.ac: call AC_SUBST unconditionally with --with-* options Call AC_SUBST unconditionally when specifying --with-* options, otherwise options like --with-dbusconfdir=DIR or --with-udevdir=DIR have no effect. Before this change, configuring with: $ mkdir build $ ./configure --disable-systemd \ --prefix=$(pwd)/build \ --with-dbusconfdir=$(pwd)/build/etc resulted in the option value to be ignored at "make install" time, with this error: /bin/mkdir: cannot create directory '/dbus-1/system.d': Permission denied This is what was going on in configure.ac: # define the option AC_ARG_WITH([dbusconfdir] ... [path_dbusconfdir=${withval}]) # when --with-dbusconfdir is NOT used if (test -z "${path_dbusconfdir}"); then ... # define the config dir automatically path_dbusconfdir="`$PKG_CONFIG --variable=sysconfdir dbus-1`" ... # set DBUS_CONFDIR AC_SUBST(DBUS_CONFDIR, [${path_dbusconfdir}]) endif when --with-dbusconfdir=SOMEDIR was used the test above failed, and the result was that ${path_dbusconfdir} was indeed defined as manually specified, but DBUS_CONFDIR was not, and the latter was going to be used in Makefile.am: dbusdir = @DBUS_CONFDIR@/dbus-1/system.d The failure in mkdir can be exposed by the use of the "--prefix" option and by running "make install" as a normal user; when running "make install" with the root user /dbus-1/system.d would be happily (and wrongly) created. By always setting variables relative to --with-* options (like DBUS_CONFDIR) the cases when --with-someoption=SOMEDIR are used get covered.
2013-02-11 05:20:50 +08:00
AC_SUBST(SYSTEMD_USERUNITDIR, [${path_userunitdir}])
AC_ARG_ENABLE(datafiles, AC_HELP_STRING([--disable-datafiles],
[do not install configuration and data files]),
[enable_datafiles=${enableval}])
AM_CONDITIONAL(DATAFILES, test "${enable_datafiles}" != "no")
AC_ARG_ENABLE(manpages, AC_HELP_STRING([--enable-manpages],
[enable building of manual pages]),
[enable_manpages=${enableval}])
AM_CONDITIONAL(MANPAGES, test "${enable_manpages}" = "yes")
AC_ARG_ENABLE(testing, AC_HELP_STRING([--enable-testing],
[enable testing tools]),
[enable_testing=${enableval}])
AM_CONDITIONAL(TESTING, test "${enable_testing}" = "yes")
AC_ARG_ENABLE(experimental, AC_HELP_STRING([--enable-experimental],
[enable experimental tools]),
[enable_experimental=${enableval}])
AM_CONDITIONAL(EXPERIMENTAL, test "${enable_experimental}" = "yes")
AC_ARG_ENABLE(deprecated, AC_HELP_STRING([--enable-deprecated],
[enable deprecated tools]),
[enable_deprecated=${enableval}])
AM_CONDITIONAL(DEPRECATED, test "${enable_deprecated}" = "yes")
AC_ARG_ENABLE(sixaxis, AC_HELP_STRING([--enable-sixaxis],
[enable sixaxis plugin]), [enable_sixaxis=${enableval}])
AM_CONDITIONAL(SIXAXIS, test "${enable_sixaxis}" = "yes" &&
test "${enable_udev}" != "no")
AC_ARG_ENABLE(logger, AC_HELP_STRING([--enable-logger],
[enable HCI logger service]), [enable_logger=${enableval}])
AM_CONDITIONAL(LOGGER, test "${enable_logger}" = "yes")
if (test "${prefix}" = "NONE"); then
dnl no prefix and no localstatedir, so default to /var
if (test "$localstatedir" = '${prefix}/var'); then
AC_SUBST([localstatedir], ['/var'])
fi
prefix="${ac_default_prefix}"
fi
if (test "$localstatedir" = '${prefix}/var'); then
storagedir="${prefix}/var/lib/bluetooth"
else
storagedir="${localstatedir}/lib/bluetooth"
fi
AC_DEFINE_UNQUOTED(STORAGEDIR, "${storagedir}",
[Directory for the storage files])
if (test "$sysconfdir" = '${prefix}/etc'); then
configdir="${prefix}/etc/bluetooth"
else
configdir="${sysconfdir}/bluetooth"
fi
AC_DEFINE_UNQUOTED(CONFIGDIR, "${configdir}",
[Directory for the configuration files])
AC_SUBST(CONFIGDIR, "${configdir}")
AC_ARG_ENABLE(android, AC_HELP_STRING([--enable-android],
[enable BlueZ for Android]),
[enable_android=${enableval}])
AM_CONDITIONAL(ANDROID, test "${enable_android}" = "yes")
if (test "${enable_android}" = "yes"); then
PKG_CHECK_MODULES(SBC, sbc >= 1.2, dummy=yes,
AC_MSG_ERROR(SBC library >= 1.2 is required))
AC_SUBST(SBC_CFLAGS)
AC_SUBST(SBC_LIBS)
fi
if (test "${enable_android}" = "yes"); then
PKG_CHECK_MODULES(SPEEXDSP, speexdsp >= 1.2, dummy=yes,
AC_MSG_ERROR(SPEEXDSP library >= 1.2 is required))
AC_SUBST(SPEEXDSP_CFLAGS)
AC_SUBST(SPEEXDSP_LIBS)
fi
AC_DEFINE_UNQUOTED(ANDROID_STORAGEDIR, "${storagedir}/android",
[Directory for the Android daemon storage files])
AC_OUTPUT(Makefile src/bluetoothd.8 lib/bluez.pc)