Peter Stuge | 85a14f4 | 2011-05-09 08:12:24 +0200 | [diff] [blame] | 1 | dnl These m4 macros are whitespace sensitive and break if moved around much. |
| 2 | m4_define([LU_VERSION_H], m4_include([libusb/version.h])) |
| 3 | m4_define([LU_DEFINE_VERSION_ATOM], |
| 4 | [m4_define([$1], m4_bregexp(LU_VERSION_H, |
| 5 | [^#define\s*$1\s*\([0-9]*\).*], [\1]))]) |
Peter Stuge | cbc2d7b | 2011-09-15 16:48:35 +0200 | [diff] [blame] | 6 | m4_define([LU_DEFINE_VERSION_RC_ATOM], |
| 7 | [m4_define([$1], m4_bregexp(LU_VERSION_H, |
| 8 | [^#define\s*$1\s*"\(-rc[0-9]*\)".*], [\1]))]) |
Peter Stuge | 85a14f4 | 2011-05-09 08:12:24 +0200 | [diff] [blame] | 9 | dnl The m4_bregexp() returns (only) the numbers following the #define named |
| 10 | dnl in the first macro parameter. m4_define() then defines the name for use |
Ludovic Rousseau | c9d41fe | 2012-06-01 11:30:00 +0200 | [diff] [blame] | 11 | dnl in AC_INIT. |
Pete Batard | 9a4249f | 2010-07-10 17:51:13 -0600 | [diff] [blame] | 12 | |
Peter Stuge | 85a14f4 | 2011-05-09 08:12:24 +0200 | [diff] [blame] | 13 | LU_DEFINE_VERSION_ATOM([LIBUSB_MAJOR]) |
| 14 | LU_DEFINE_VERSION_ATOM([LIBUSB_MINOR]) |
| 15 | LU_DEFINE_VERSION_ATOM([LIBUSB_MICRO]) |
Peter Stuge | cbc2d7b | 2011-09-15 16:48:35 +0200 | [diff] [blame] | 16 | LU_DEFINE_VERSION_RC_ATOM([LIBUSB_RC]) |
Daniel Drake | d7c2545 | 2010-10-04 20:03:58 +0100 | [diff] [blame] | 17 | |
Chris Dickens | 4a5540a | 2020-03-25 00:09:26 -0700 | [diff] [blame] | 18 | AC_INIT([libusb-1.0], [LIBUSB_MAJOR[.]LIBUSB_MINOR[.]LIBUSB_MICRO[]LIBUSB_RC], [libusb-devel@lists.sourceforge.net], [libusb-1.0], [http://libusb.info]) |
Daniel Drake | d7c2545 | 2010-10-04 20:03:58 +0100 | [diff] [blame] | 19 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 20 | dnl Library versioning |
| 21 | dnl These numbers should be tweaked on every release. Read carefully: |
| 22 | dnl http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html |
| 23 | dnl http://sourceware.org/autobook/autobook/autobook_91.html |
Nathan Hjelm | fde20bb | 2018-12-05 10:36:50 -0700 | [diff] [blame] | 24 | lt_current=2 |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 25 | lt_revision=0 |
Ludovic Rousseau | 767eafb | 2019-08-08 00:13:17 +0200 | [diff] [blame] | 26 | lt_age=2 |
Peter Stuge | 717f476 | 2010-11-15 19:58:51 +0100 | [diff] [blame] | 27 | LTLDFLAGS="-version-info ${lt_current}:${lt_revision}:${lt_age}" |
Pete Batard | 9a4249f | 2010-07-10 17:51:13 -0600 | [diff] [blame] | 28 | |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 29 | AM_INIT_AUTOMAKE |
Peter Stuge | 6e52ea0 | 2010-11-21 23:37:27 +0100 | [diff] [blame] | 30 | |
Daniel Drake | e9364d7 | 2008-01-04 00:40:49 +0000 | [diff] [blame] | 31 | AC_CONFIG_SRCDIR([libusb/core.c]) |
Daniel Drake | 8be2560 | 2009-06-13 17:19:07 +0100 | [diff] [blame] | 32 | AC_CONFIG_MACRO_DIR([m4]) |
Ludovic Rousseau | c9d41fe | 2012-06-01 11:30:00 +0200 | [diff] [blame] | 33 | AC_CONFIG_HEADERS([config.h]) |
Daniel Drake | 9b120c2 | 2009-11-07 10:03:07 +0000 | [diff] [blame] | 34 | m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 35 | |
Nathan Hjelm | 2040ab1 | 2016-03-10 12:57:50 -0700 | [diff] [blame] | 36 | AC_PREREQ([2.69]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 37 | AC_PROG_CC |
Chris Dickens | 3dc781c | 2015-12-03 12:59:20 -0800 | [diff] [blame] | 38 | AC_PROG_CXX |
Ludovic Rousseau | c9d41fe | 2012-06-01 11:30:00 +0200 | [diff] [blame] | 39 | LT_INIT |
Peter Stuge | fa9b682 | 2011-09-22 21:17:37 +0200 | [diff] [blame] | 40 | LT_LANG([Windows Resource]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 41 | AC_C_INLINE |
| 42 | AM_PROG_CC_C_O |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 43 | AC_DEFINE([_GNU_SOURCE], [1], [Use GNU extensions]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 44 | |
Peter Stuge | 717f476 | 2010-11-15 19:58:51 +0100 | [diff] [blame] | 45 | LTLDFLAGS="${LTLDFLAGS} -no-undefined" |
| 46 | |
Daniel Drake | c0c9432 | 2008-03-13 12:36:56 +0000 | [diff] [blame] | 47 | AC_MSG_CHECKING([operating system]) |
Kuangye Guo | 7e3de5d | 2013-10-21 18:36:15 -0700 | [diff] [blame] | 48 | case $host in |
Nathan Hjelm | b49f6bf | 2009-02-16 21:39:29 -0300 | [diff] [blame] | 49 | *-darwin*) |
Peter Stuge | 0bd4a4d | 2011-02-26 04:08:38 +0100 | [diff] [blame] | 50 | AC_MSG_RESULT([Darwin/Mac OS X]) |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 51 | backend=darwin |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 52 | poll=posix |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 53 | threads=posix |
Pete Batard | 9a4249f | 2010-07-10 17:51:13 -0600 | [diff] [blame] | 54 | ;; |
Akshay Jaggi | dc97425 | 2014-09-24 22:46:17 +0100 | [diff] [blame] | 55 | *-haiku*) |
| 56 | AC_MSG_RESULT([Haiku]) |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 57 | backend=haiku |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 58 | poll=posix |
| 59 | threads=posix |
| 60 | ;; |
| 61 | *-linux* | *-uclinux*) |
| 62 | dnl on linux-android platform, some functions are in different places |
| 63 | case $host in |
| 64 | *-linux-android*) |
| 65 | AC_MSG_RESULT([Linux (Android system)]) |
| 66 | is_backend_android=yes |
| 67 | ;; |
| 68 | *) |
| 69 | AC_MSG_RESULT([Linux]) |
| 70 | is_backend_android=no |
| 71 | ;; |
| 72 | esac |
| 73 | backend=linux |
| 74 | poll=posix |
| 75 | threads=posix |
| 76 | ;; |
| 77 | *-netbsd*) |
| 78 | AC_MSG_RESULT([NetBSD]) |
| 79 | backend=netbsd |
| 80 | poll=posix |
| 81 | threads=posix |
| 82 | ;; |
| 83 | *-openbsd*) |
| 84 | AC_MSG_RESULT([OpenBSD]) |
| 85 | backend=openbsd |
| 86 | poll=posix |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 87 | threads=posix |
Akshay Jaggi | dc97425 | 2014-09-24 22:46:17 +0100 | [diff] [blame] | 88 | ;; |
Lei Chen | eefd322 | 2016-02-19 11:58:39 +0800 | [diff] [blame] | 89 | *-solaris*) |
| 90 | AC_MSG_RESULT([SunOS]) |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 91 | backend=sunos |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 92 | poll=posix |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 93 | threads=posix |
Lei Chen | eefd322 | 2016-02-19 11:58:39 +0800 | [diff] [blame] | 94 | ;; |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 95 | *-cygwin*) |
| 96 | AC_MSG_RESULT([Windows (using Cygwin)]) |
| 97 | backend=windows |
| 98 | poll=windows |
| 99 | threads=posix |
| 100 | ;; |
| 101 | *-mingw* | *msys*) |
| 102 | AC_MSG_RESULT([Windows]) |
| 103 | backend=windows |
| 104 | poll=windows |
| 105 | threads=windows |
Chris Dickens | 4a5540a | 2020-03-25 00:09:26 -0700 | [diff] [blame] | 106 | test "x$enable_shared" = xyes && create_import_lib=yes |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 107 | AM_CFLAGS="${AM_CFLAGS} -fno-omit-frame-pointer" |
| 108 | ;; |
Daniel Drake | c0c9432 | 2008-03-13 12:36:56 +0000 | [diff] [blame] | 109 | *) |
Pino Toscano | 53572d7 | 2019-12-27 18:41:28 +0100 | [diff] [blame] | 110 | AC_MSG_RESULT([Null]) |
| 111 | backend="null" |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 112 | poll=posix |
Pino Toscano | 53572d7 | 2019-12-27 18:41:28 +0100 | [diff] [blame] | 113 | threads="posix" |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 114 | ;; |
Daniel Drake | c0c9432 | 2008-03-13 12:36:56 +0000 | [diff] [blame] | 115 | esac |
Pete Batard | 968df12 | 2012-04-19 18:01:04 +0100 | [diff] [blame] | 116 | |
| 117 | case $backend in |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 118 | darwin) |
| 119 | AC_DEFINE([OS_DARWIN], [1], [Darwin backend]) |
| 120 | LIBS="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" |
| 121 | LTLDFLAGS="${LTLDFLAGS} -Wl,-prebind" |
| 122 | ;; |
| 123 | haiku) |
| 124 | AC_DEFINE([OS_HAIKU], [1], [Haiku backend]) |
| 125 | LIBS="-lbe" |
| 126 | ;; |
Pete Batard | 968df12 | 2012-04-19 18:01:04 +0100 | [diff] [blame] | 127 | linux) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 128 | AC_DEFINE([OS_LINUX], [1], [Linux backend]) |
Baruch Siach | 552a4a4 | 2018-06-05 14:22:21 +0300 | [diff] [blame] | 129 | AC_SEARCH_LIBS([clock_gettime], [rt], [], [], [-pthread]) |
Nathan Hjelm | 6853291 | 2012-11-29 16:14:03 -0700 | [diff] [blame] | 130 | AC_ARG_ENABLE([udev], |
Toby Gray | 9222a54 | 2013-07-09 16:05:39 +0100 | [diff] [blame] | 131 | [AC_HELP_STRING([--enable-udev], [use udev for device enumeration and hotplug support (recommended) [default=yes]])], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 132 | [], [enable_udev=yes]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 133 | if test "x$enable_udev" = xyes ; then |
| 134 | dnl system has udev. use it or fail! |
| 135 | AC_CHECK_HEADER([libudev.h], [], [AC_MSG_ERROR([udev support requested but libudev header not installed])]) |
| 136 | AC_CHECK_LIB([udev], [udev_new], [], [AC_MSG_ERROR([udev support requested but libudev not installed])]) |
| 137 | else |
| 138 | AC_CHECK_HEADERS([asm/types.h]) |
| 139 | AC_CHECK_HEADER([linux/netlink.h], [], [AC_MSG_ERROR([Linux netlink header not found])]) |
| 140 | AC_CHECK_HEADER([sys/socket.h], [], [AC_MSG_ERROR([Linux socket header not found])]) |
| 141 | fi |
Chris Dickens | 068b594 | 2017-01-12 11:01:59 -0800 | [diff] [blame] | 142 | if test "x$is_backend_android" != xyes; then |
| 143 | THREAD_CFLAGS="-pthread" |
| 144 | LIBS="${LIBS} -pthread" |
| 145 | fi |
Alexander Stein | 6e0028c | 2020-02-05 21:41:07 +0100 | [diff] [blame] | 146 | AC_CHECK_FUNCS([pthread_setname_np]) |
Lei Chen | eefd322 | 2016-02-19 11:58:39 +0800 | [diff] [blame] | 147 | ;; |
Hans de Goede | eb4e7be | 2013-08-21 16:18:39 +0200 | [diff] [blame] | 148 | netbsd) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 149 | AC_DEFINE([OS_NETBSD], [1], [NetBSD backend]) |
Hans de Goede | eb4e7be | 2013-08-21 16:18:39 +0200 | [diff] [blame] | 150 | THREAD_CFLAGS="-pthread" |
| 151 | LIBS="-pthread" |
Akshay Jaggi | dc97425 | 2014-09-24 22:46:17 +0100 | [diff] [blame] | 152 | ;; |
Pino Toscano | 53572d7 | 2019-12-27 18:41:28 +0100 | [diff] [blame] | 153 | null) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 154 | AC_DEFINE([OS_NULL], [1], [Null backend]) |
Pino Toscano | 53572d7 | 2019-12-27 18:41:28 +0100 | [diff] [blame] | 155 | THREAD_CFLAGS="-pthread" |
| 156 | LIBS="-pthread" |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 157 | ;; |
| 158 | openbsd) |
| 159 | AC_DEFINE([OS_OPENBSD], [1], [OpenBSD backend]) |
| 160 | THREAD_CFLAGS="-pthread" |
| 161 | LIBS="-pthread" |
| 162 | ;; |
| 163 | sunos) |
| 164 | AC_DEFINE([OS_SUNOS], [1], [SunOS backend]) |
| 165 | THREAD_CFLAGS="-pthread" |
| 166 | LIBS="-pthread -ldevinfo" |
| 167 | ;; |
| 168 | windows) |
| 169 | AC_DEFINE([OS_WINDOWS], [1], [Windows backend]) |
| 170 | AC_CHECK_TYPES([struct timespec], [], [], [[#include <time.h>]]) |
| 171 | LIBS="" |
| 172 | LTLDFLAGS="${LTLDFLAGS} -avoid-version -Wl,--add-stdcall-alias" |
| 173 | AC_DEFINE([_WIN32_WINNT], [_WIN32_WINNT_VISTA], [Oldest Windows version supported (Vista)]) |
| 174 | ;; |
| 175 | *) |
| 176 | AC_MSG_ERROR([Unknown backend]) |
Pino Toscano | 53572d7 | 2019-12-27 18:41:28 +0100 | [diff] [blame] | 177 | ;; |
Pete Batard | 968df12 | 2012-04-19 18:01:04 +0100 | [diff] [blame] | 178 | esac |
| 179 | |
Peter Stuge | 94b0ccc | 2012-10-23 00:15:23 +0000 | [diff] [blame] | 180 | AC_SUBST(LIBS) |
Daniel Drake | c0c9432 | 2008-03-13 12:36:56 +0000 | [diff] [blame] | 181 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 182 | AM_CONDITIONAL([OS_DARWIN], [test "x$backend" = xdarwin]) |
| 183 | AM_CONDITIONAL([OS_HAIKU], [test "x$backend" = xhaiku]) |
| 184 | AM_CONDITIONAL([OS_LINUX], [test "x$backend" = xlinux]) |
| 185 | AM_CONDITIONAL([OS_NETBSD], [test "x$backend" = xnetbsd]) |
| 186 | AM_CONDITIONAL([OS_NULL], [test "x$backend" = xnull]) |
| 187 | AM_CONDITIONAL([OS_OPENBSD], [test "x$backend" = xopenbsd]) |
| 188 | AM_CONDITIONAL([OS_SUNOS], [test "x$backend" = xsunos]) |
| 189 | AM_CONDITIONAL([OS_WINDOWS], [test "x$backend" = xwindows]) |
Chris Dickens | a96937a | 2020-01-26 14:29:48 -0800 | [diff] [blame] | 190 | AM_CONDITIONAL([POLL_POSIX], [test "x$poll" = xposix]) |
| 191 | AM_CONDITIONAL([POLL_WINDOWS], [test "x$poll" = xwindows]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 192 | AM_CONDITIONAL([THREADS_POSIX], [test "x$threads" = xposix]) |
| 193 | AM_CONDITIONAL([THREADS_WINDOWS], [test "x$threads" = xwindows]) |
| 194 | AM_CONDITIONAL([CREATE_IMPORT_LIB], [test "x$create_import_lib" = xyes]) |
| 195 | AM_CONDITIONAL([USE_UDEV], [test "x$enable_udev" = xyes]) |
Daniel Drake | c0c9432 | 2008-03-13 12:36:56 +0000 | [diff] [blame] | 196 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 197 | if test "x$poll" = xposix; then |
| 198 | AC_DEFINE([POLL_POSIX], [1], [Use POSIX poll() implementation]) |
| 199 | AC_CHECK_TYPES([nfds_t], [], [], [[#include <poll.h>]]) |
| 200 | AC_CHECK_FUNCS([pipe2]) |
| 201 | elif test "x$poll" = xwindows; then |
| 202 | AC_DEFINE([POLL_WINDOWS], [1], [Use Windows poll() implementation]) |
Daniel Drake | 4783008 | 2009-10-28 20:33:49 +0545 | [diff] [blame] | 203 | else |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 204 | AC_MSG_ERROR([Unknown poll implementation]) |
| 205 | fi |
| 206 | |
| 207 | if test "x$threads" = xposix; then |
| 208 | AC_DEFINE([THREADS_POSIX], [1], [Use POSIX Threads]) |
| 209 | elif test "x$threads" = xwindows; then |
| 210 | AC_DEFINE([THREADS_WINDOWS], [1], [Use Windows Threads]) |
| 211 | else |
| 212 | AC_MSG_ERROR([Unknown threads implementation]) |
| 213 | fi |
| 214 | |
| 215 | dnl headers not available on all platforms but required on others |
| 216 | AC_CHECK_HEADERS([sys/time.h]) |
| 217 | |
Chris Dickens | 26b16eb | 2020-01-26 22:43:28 -0800 | [diff] [blame] | 218 | dnl the clock_gettime() function needs certain clock IDs defined |
| 219 | AC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes], [have_clockgettime=no]) |
| 220 | if test "x$have_clock_gettime" = xyes; then |
| 221 | AC_CHECK_DECL([CLOCK_REALTIME], [], [AC_MSG_ERROR([C library headers missing definition for CLOCK_REALTIME])], [[#include <time.h>]]) |
| 222 | AC_CHECK_DECL([CLOCK_MONOTONIC], [], [AC_MSG_ERROR([C library headers missing definition for CLOCK_MONOTONIC])], [[#include <time.h>]]) |
| 223 | elif test "x$backend" != xdarwin && test "x$backend" != xwindows; then |
| 224 | AC_MSG_ERROR([clock_gettime() is required on this platform]) |
| 225 | fi |
| 226 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 227 | dnl timerfd support |
| 228 | if test "x$backend" = xlinux || test "x$backend" = xsunos; then |
| 229 | AC_ARG_ENABLE([timerfd], |
| 230 | [AS_HELP_STRING([--enable-timerfd], [use timerfd for timing [default=auto]])], |
| 231 | [use_timerfd=$enableval], |
| 232 | [use_timerfd=auto]) |
| 233 | if test "x$use_timerfd" != xno; then |
| 234 | AC_CHECK_HEADER([sys/timerfd.h], [timerfd_h=yes], [timerfd_h=no]) |
| 235 | if test "x$timerfd_h" = xyes; then |
| 236 | AC_CHECK_DECLS([TFD_NONBLOCK, TFD_CLOEXEC], [timerfd_h_ok=yes], [timerfd_h_ok=no], [[#include <sys/timerfd.h>]]) |
| 237 | if test "x$timerfd_h_ok" = xyes; then |
| 238 | AC_CHECK_FUNC([timerfd_create], [timerfd_ok=yes], [timerfd_ok=no]) |
| 239 | if test "x$timerfd_ok" = xyes; then |
| 240 | AC_DEFINE([HAVE_TIMERFD], [1], [Define if the system has timerfd functionality]) |
| 241 | elif test "x$use_timerfd" = xyes; then |
| 242 | AC_MSG_ERROR([timerfd_create() function not found; glibc 2.9+ required]) |
| 243 | fi |
| 244 | elif test "x$use_timerfd" = xyes; then |
| 245 | AC_MSG_ERROR([timerfd header not usable; glibc 2.9+ required]) |
| 246 | fi |
| 247 | elif test "x$use_timerfd" = xyes; then |
| 248 | AC_MSG_ERROR([timerfd header not available; glibc 2.9+ required]) |
| 249 | fi |
| 250 | fi |
| 251 | AC_MSG_CHECKING([whether to use timerfd for timing]) |
| 252 | if test "x$use_timerfd" = xno; then |
| 253 | AC_MSG_RESULT([no (disabled by user)]) |
| 254 | elif test "x$timerfd_h" = xno; then |
| 255 | AC_MSG_RESULT([no (header not usable)]) |
| 256 | elif test "x$timerfd_h_ok" = xno; then |
Daniel Drake | 4783008 | 2009-10-28 20:33:49 +0545 | [diff] [blame] | 257 | AC_MSG_RESULT([no (header not available)]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 258 | elif test "x$timerfd_ok" = xno; then |
| 259 | AC_MSG_RESULT([no (functions not available)]) |
| 260 | else |
| 261 | AC_MSG_RESULT([yes]) |
Daniel Drake | 4783008 | 2009-10-28 20:33:49 +0545 | [diff] [blame] | 262 | fi |
| 263 | fi |
| 264 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 265 | dnl Message logging |
| 266 | AC_ARG_ENABLE([log], |
| 267 | [AS_HELP_STRING([--disable-log], [disable all logging])], |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 268 | [log_enabled=$enableval], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 269 | [log_enabled=yes]) |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 270 | if test "x$log_enabled" != xno; then |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 271 | AC_DEFINE([ENABLE_LOGGING], [1], [Message logging]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 272 | fi |
| 273 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 274 | AC_ARG_ENABLE([debug-log], |
| 275 | [AS_HELP_STRING([--enable-debug-log], [start with debug message logging enabled [default=no]])], |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 276 | [debug_log_enabled=$enableval], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 277 | [debug_log_enabled=no]) |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 278 | if test "x$debug_log_enabled" != xno; then |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 279 | AC_DEFINE([ENABLE_DEBUG_LOGGING], [1], [Start with debug message logging enabled]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 280 | fi |
| 281 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 282 | AC_ARG_ENABLE([system-log], |
| 283 | [AS_HELP_STRING([--enable-system-log], [output logging messages to system wide log, if supported by the OS [default=no]])], |
Toby Gray | 9222a54 | 2013-07-09 16:05:39 +0100 | [diff] [blame] | 284 | [system_log_enabled=$enableval], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 285 | [system_log_enabled=no]) |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 286 | if test "x$system_log_enabled" != xno; then |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 287 | AC_DEFINE([USE_SYSTEM_LOGGING_FACILITY], [1], [Enable output to system log]) |
| 288 | if test "x$backend" != xwindows && test "x$is_backend_android" != xyes; then |
| 289 | dnl Check if syslog is available in standard C library |
| 290 | AC_CHECK_HEADER([syslog.h], [syslog_h=yes], [syslog_h=no]) |
| 291 | if test "x$syslog_h" = xyes; then |
| 292 | AC_CHECK_FUNCS([syslog]) |
| 293 | fi |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 294 | fi |
Toby Gray | 9222a54 | 2013-07-09 16:05:39 +0100 | [diff] [blame] | 295 | fi |
| 296 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 297 | dnl Examples build |
| 298 | AC_ARG_ENABLE([examples-build], |
| 299 | [AS_HELP_STRING([--enable-examples-build], [build example applications [default=no]])], |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 300 | [build_examples=$enableval], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 301 | [build_examples=no]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 302 | AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != xno]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 303 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 304 | dnl Tests build |
| 305 | AC_ARG_ENABLE([tests-build], |
| 306 | [AS_HELP_STRING([--enable-tests-build], [build test applications [default=no]])], |
Toby Gray | 21cf6e4 | 2012-11-21 14:00:31 +0000 | [diff] [blame] | 307 | [build_tests=$enableval], |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 308 | [build_tests=no]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 309 | AM_CONDITIONAL([BUILD_TESTS], [test "x$build_tests" != xno]) |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 310 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 311 | dnl sigaction needed for some example programs |
| 312 | if test "x$build_examples" != xno; then |
| 313 | AC_CHECK_FUNC([sigaction], [have_sigaction=yes], [have_sigaction=no]) |
| 314 | fi |
| 315 | AM_CONDITIONAL([HAVE_SIGACTION], [test "x$have_sigaction" = xyes]) |
Chris Dickens | 9417868 | 2017-01-12 13:50:35 -0800 | [diff] [blame] | 316 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 317 | dnl check for -fvisibility=hidden compiler support (GCC >= 3.4) |
| 318 | saved_CFLAGS="${CFLAGS}" |
| 319 | dnl -Werror required for cygwin |
| 320 | CFLAGS="${CFLAGS} -Werror -fvisibility=hidden" |
Peter Stuge | 44b85da | 2010-11-21 23:10:35 +0100 | [diff] [blame] | 321 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], |
Alex Vatchenko | b501795 | 2009-05-28 15:58:50 -0400 | [diff] [blame] | 322 | [VISIBILITY_CFLAGS="-fvisibility=hidden" |
Chris Dickens | cb77a25 | 2017-02-20 00:18:33 -0800 | [diff] [blame] | 323 | AC_DEFINE([DEFAULT_VISIBILITY], [__attribute__((visibility("default")))], [Default visibility])], |
| 324 | [VISIBILITY_CFLAGS="" |
| 325 | AC_DEFINE([DEFAULT_VISIBILITY], [], [Default visibility])], |
Alex Vatchenko | b501795 | 2009-05-28 15:58:50 -0400 | [diff] [blame] | 326 | ]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 327 | CFLAGS="${saved_CFLAGS}" |
Nathan Hjelm | b49f6bf | 2009-02-16 21:39:29 -0300 | [diff] [blame] | 328 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 329 | dnl check for -Wno-pointer-sign compiler support (GCC >= 4) |
| 330 | saved_CFLAGS="${CFLAGS}" |
| 331 | CFLAGS="${CFLAGS} -Wno-pointer-sign" |
Peter Stuge | 44b85da | 2010-11-21 23:10:35 +0100 | [diff] [blame] | 332 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], |
Alex Vatchenko | b501795 | 2009-05-28 15:58:50 -0400 | [diff] [blame] | 333 | nopointersign_cflags="-Wno-pointer-sign", nopointersign_cflags="") |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 334 | CFLAGS="${saved_CFLAGS}" |
Alex Vatchenko | b501795 | 2009-05-28 15:58:50 -0400 | [diff] [blame] | 335 | |
Chris Dickens | a5f6a43 | 2020-01-24 11:51:55 -0800 | [diff] [blame] | 336 | dnl check for -std=gnu11 compiler support |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 337 | saved_CFLAGS="${CFLAGS}" |
Chris Dickens | a5f6a43 | 2020-01-24 11:51:55 -0800 | [diff] [blame] | 338 | CFLAGS="-std=gnu11" |
| 339 | AC_MSG_CHECKING([whether CC supports -std=gnu11]) |
Akshay Jaggi | dc97425 | 2014-09-24 22:46:17 +0100 | [diff] [blame] | 340 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 341 | [AC_MSG_RESULT([yes]) |
Chris Dickens | a5f6a43 | 2020-01-24 11:51:55 -0800 | [diff] [blame] | 342 | AM_CFLAGS="${AM_CFLAGS} -std=gnu11"], |
| 343 | [AC_MSG_RESULT([no])]) |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 344 | CFLAGS="${saved_CFLAGS}" |
Akshay Jaggi | dc97425 | 2014-09-24 22:46:17 +0100 | [diff] [blame] | 345 | |
Chris Dickens | a5f6a43 | 2020-01-24 11:51:55 -0800 | [diff] [blame] | 346 | dnl check for _Thread_local compiler support |
| 347 | if test "x$backend" != xwindows; then |
| 348 | saved_CFLAGS="${CFLAGS}" |
| 349 | saved_LDFLAGS="${LDFLAGS}" |
| 350 | CFLAGS="${CFLAGS} -fPIC" |
| 351 | LDFLAGS="${LDFLAGS} -shared" |
| 352 | AC_MSG_CHECKING([whether CC supports _Thread_local]) |
| 353 | AC_LINK_IFELSE([AC_LANG_PROGRAM([], [static _Thread_local int v])], |
| 354 | [AC_MSG_RESULT([yes]) |
| 355 | AC_DEFINE([HAVE_CC_THREAD_LOCAL], [1], [Define to 1 if the compiler supports _Thread_local.])], |
| 356 | [AC_MSG_RESULT([no])]) |
| 357 | CFLAGS="${saved_CFLAGS}" |
| 358 | LDFLAGS="${saved_LDFLAGS}" |
| 359 | fi |
| 360 | |
Chris Dickens | d5bb64b | 2020-01-22 17:39:14 -0800 | [diff] [blame] | 361 | AM_CFLAGS="${AM_CFLAGS} -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration ${nopointersign_cflags} -Wshadow ${THREAD_CFLAGS} ${VISIBILITY_CFLAGS}" |
Alex Vatchenko | b501795 | 2009-05-28 15:58:50 -0400 | [diff] [blame] | 362 | |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 363 | AC_SUBST(AM_CFLAGS) |
Peter Stuge | 717f476 | 2010-11-15 19:58:51 +0100 | [diff] [blame] | 364 | AC_SUBST(LTLDFLAGS) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 365 | |
Chris Dickens | 4a5540a | 2020-03-25 00:09:26 -0700 | [diff] [blame] | 366 | dnl set name of html output directory for doxygen |
| 367 | AC_SUBST(DOXYGEN_HTMLDIR, [api-1.0]) |
| 368 | |
Peter Stuge | ef39d15 | 2011-02-25 02:33:29 +0100 | [diff] [blame] | 369 | AC_CONFIG_FILES([libusb-1.0.pc]) |
| 370 | AC_CONFIG_FILES([Makefile]) |
| 371 | AC_CONFIG_FILES([libusb/Makefile]) |
Peter Stuge | ef39d15 | 2011-02-25 02:33:29 +0100 | [diff] [blame] | 372 | AC_CONFIG_FILES([examples/Makefile]) |
Toby Gray | 21cf6e4 | 2012-11-21 14:00:31 +0000 | [diff] [blame] | 373 | AC_CONFIG_FILES([tests/Makefile]) |
Peter Stuge | ef39d15 | 2011-02-25 02:33:29 +0100 | [diff] [blame] | 374 | AC_CONFIG_FILES([doc/Makefile]) |
| 375 | AC_CONFIG_FILES([doc/doxygen.cfg]) |
Daniel Drake | 852bba4 | 2007-11-28 13:48:45 +0000 | [diff] [blame] | 376 | AC_OUTPUT |