Philip Tricca | c054cf9 | 2018-11-11 11:06:00 -0800 | [diff] [blame] | 1 | # SPDX-License-Identifier: BSD-2 |
Philip Tricca | 8ffb654 | 2018-03-04 19:51:53 -0800 | [diff] [blame] | 2 | # Copyright (c) 2015 - 2018 Intel Corporation |
| 3 | # Copyright (c) 2018 Fraunhofer SIT sponsored by Infineon Technologies AG |
| 4 | # All rights reserved. |
Philip Tricca | c054cf9 | 2018-11-11 11:06:00 -0800 | [diff] [blame] | 5 | |
Philip Tricca | 1a94dd8 | 2017-08-16 14:32:55 -0700 | [diff] [blame] | 6 | AC_INIT([tpm2-tss], |
Tadeusz Struk | edb6f00 | 2019-02-04 13:38:09 -0800 | [diff] [blame] | 7 | [2.2.0], |
Philip Tricca | dc1f15d | 2018-03-04 19:53:25 -0800 | [diff] [blame] | 8 | [https://github.com/tpm2-software/tpm2-tss/issues], |
Philip Tricca | d97ed64 | 2017-08-25 14:19:27 -0700 | [diff] [blame] | 9 | [], |
Philip Tricca | dc1f15d | 2018-03-04 19:53:25 -0800 | [diff] [blame] | 10 | [https://github.com/tpm2-software/tpm2-tss]) |
Philip Tricca | a509a68 | 2015-09-14 15:34:52 -0700 | [diff] [blame] | 11 | AC_CONFIG_MACRO_DIR([m4]) |
Philip Tricca | 74037d3 | 2018-11-04 16:17:19 -0800 | [diff] [blame] | 12 | : ${CFLAGS=""} |
Tadeusz Struk | 55eba78 | 2019-02-27 15:08:43 -0800 | [diff] [blame] | 13 | AC_PROG_CXX([clang++ g++]) |
| 14 | AC_PROG_CC([clang gcc]) |
Philip Tricca | ffbd61a | 2015-09-25 00:27:57 -0700 | [diff] [blame] | 15 | LT_INIT() |
Philip Tricca | 71aa985 | 2015-08-25 00:26:22 -0700 | [diff] [blame] | 16 | AM_INIT_AUTOMAKE([foreign |
| 17 | subdir-objects]) |
Andreas Fuchs | 3c965e7 | 2017-11-24 16:16:20 +0100 | [diff] [blame] | 18 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) #Backward compatible setting of "silent-rules" |
| 19 | |
Tadeusz Struk | 90f094f | 2019-01-31 13:53:16 -0800 | [diff] [blame] | 20 | AC_CONFIG_HEADERS([config.h]) |
| 21 | |
Andreas Fuchs | bc169cb | 2018-04-10 12:02:10 +0200 | [diff] [blame] | 22 | AC_CONFIG_FILES([Makefile Doxyfile]) |
Philip Tricca | 1a94dd8 | 2017-08-16 14:32:55 -0700 | [diff] [blame] | 23 | |
| 24 | # propagate configure arguments to distcheck |
| 25 | AC_SUBST([DISTCHECK_CONFIGURE_FLAGS],[$ac_configure_args]) |
| 26 | |
Safayet N Ahmed | 1354f49 | 2018-11-03 16:02:49 -0400 | [diff] [blame] | 27 | AC_CANONICAL_HOST |
| 28 | |
| 29 | # Check OS and set library and compile flags accordingly |
| 30 | case "${host_os}" in |
| 31 | *nto-qnx*) |
| 32 | ADD_COMPILER_FLAG([-D_QNX_SOURCE]) |
| 33 | LIBDL_LDFLAGS="" |
| 34 | LIBSOCKET_LDFLAGS="-lsocket" |
| 35 | ;; |
| 36 | *) |
| 37 | LIBDL_LDFLAGS="-ldl" |
| 38 | LIBSOCKET_LDFLAGS="" |
| 39 | ;; |
| 40 | esac |
| 41 | AC_SUBST([LIBDL_LDFLAGS]) |
| 42 | AC_SUBST([LIBSOCKET_LDFLAGS]) |
| 43 | |
Philip Tricca | 4334dee | 2016-08-09 19:56:28 -0700 | [diff] [blame] | 44 | AC_ARG_ENABLE([unit], |
| 45 | [AS_HELP_STRING([--enable-unit], |
| 46 | [build cmocka unit tests (default is no)])], |
| 47 | [enable_unit=$enableval], |
| 48 | [enable_unit=no]) |
Philip Tricca | 38db755 | 2018-02-27 07:58:25 -0800 | [diff] [blame] | 49 | m4_define([cmocka_min_version], [1.0]) |
| 50 | m4_define([cmocka_err], [Unit test enabled, but cmocka missing or version requirements not met. cmocka version must be >= cmocka_min_version]) |
Philip Tricca | 4334dee | 2016-08-09 19:56:28 -0700 | [diff] [blame] | 51 | AS_IF([test "x$enable_unit" != xno], |
| 52 | [PKG_CHECK_MODULES([CMOCKA], |
Philip Tricca | 38db755 | 2018-02-27 07:58:25 -0800 | [diff] [blame] | 53 | [cmocka >= cmocka_min_version], |
Philip Tricca | 4334dee | 2016-08-09 19:56:28 -0700 | [diff] [blame] | 54 | [AC_DEFINE([HAVE_CMOCKA], |
Tadeusz Struk | 90f094f | 2019-01-31 13:53:16 -0800 | [diff] [blame] | 55 | [1], [CMOCKA UNIT TEST LIBRARY])], |
Philip Tricca | 38db755 | 2018-02-27 07:58:25 -0800 | [diff] [blame] | 56 | [AC_MSG_ERROR([cmocka_err])])]) |
Philip Tricca | 4334dee | 2016-08-09 19:56:28 -0700 | [diff] [blame] | 57 | AM_CONDITIONAL([UNIT], [test "x$enable_unit" != xno]) |
Philip Tricca | 77683c7 | 2017-12-04 16:05:52 -0800 | [diff] [blame] | 58 | |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 59 | AC_ARG_ENABLE([esapi], |
| 60 | [AS_HELP_STRING([--enable-esapi], |
| 61 | [build the esapi layer (default is yes)])], |
| 62 | [enable_esapi=$enableval], |
| 63 | [enable_esapi=yes]) |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 64 | |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 65 | AM_CONDITIONAL(ESAPI, test "x$enable_esapi" = "xyes") |
| 66 | |
Tadeusz Struk | 3f2489b | 2018-08-22 10:01:11 -0700 | [diff] [blame] | 67 | AC_ARG_ENABLE([tcti-device-async], |
| 68 | AS_HELP_STRING([--enable-tcti-device-async], |
| 69 | [Enable asynchronus operation on TCTI device |
| 70 | (note: This needs to be supported by the kernel driver). default is no]), |
| 71 | [enable_tcti_device_async=$enableval], |
| 72 | [enable_tcti_device_async=no]) |
| 73 | AS_IF([test "x$enable_tcti_device_async" = "xyes"], |
Tadeusz Struk | 90f094f | 2019-01-31 13:53:16 -0800 | [diff] [blame] | 74 | AC_DEFINE([TCTI_ASYNC],[1], [TCTI ASYNC MODE])) |
Tadeusz Struk | 3f2489b | 2018-08-22 10:01:11 -0700 | [diff] [blame] | 75 | |
Tadeusz Struk | fa423ad | 2018-11-27 13:20:38 -0800 | [diff] [blame] | 76 | AC_ARG_ENABLE([tcti-partial-reads], |
| 77 | AS_HELP_STRING([--enable-tcti-partial-reads], |
| 78 | [Enable partial reads for TCTI device |
| 79 | (note: This needs to be supported by the kernel driver). default is no]), |
| 80 | [enable_tcti_partial_reads=$enableval], |
| 81 | [enable_tcti_partial_reads=no]) |
| 82 | AS_IF([test "x$enable_tcti_partial_reads" = "xyes"], |
Tadeusz Struk | 90f094f | 2019-01-31 13:53:16 -0800 | [diff] [blame] | 83 | AC_DEFINE([TCTI_PARTIAL_READ],[1], [TCTI PARTIAL READ MODE])) |
Tadeusz Struk | fa423ad | 2018-11-27 13:20:38 -0800 | [diff] [blame] | 84 | |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 85 | AC_ARG_WITH([crypto], |
| 86 | [AS_HELP_STRING([--with-crypto={gcrypt,ossl}], |
Tadeusz Struk | a5ff71a | 2018-10-23 16:04:25 -0700 | [diff] [blame] | 87 | [sets the ESAPI crypto backend (default is OpenSSL)])], |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 88 | [], |
Tadeusz Struk | a5ff71a | 2018-10-23 16:04:25 -0700 | [diff] [blame] | 89 | [with_crypto=ossl]) |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 90 | |
| 91 | AM_CONDITIONAL(ESYS_OSSL, test "x$with_crypto" = "xossl") |
| 92 | AM_CONDITIONAL(ESYS_GCRYPT, test "x$with_crypto" = "xgcrypt") |
| 93 | |
| 94 | AS_IF([test "x$with_crypto" != "xgcrypt"], |
| 95 | AS_IF([test "x$with_crypto" != "xossl"], |
| 96 | AC_MSG_ERROR([Bad value for --with-crypto $with_crypto]))) |
| 97 | |
| 98 | AS_IF([test "x$enable_esapi" != xno -a "x$with_crypto" = "xgcrypt"], |
Philip Tricca | 8eecfd3 | 2018-01-31 06:28:27 -0800 | [diff] [blame] | 99 | [AC_CHECK_HEADER([gcrypt.h], |
| 100 | [], |
| 101 | [AC_MSG_ERROR([Missing required header: gcrypt.h.])])]) |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 102 | |
| 103 | AS_IF([test "x$enable_esapi" != xno -a "x$with_cryptor" = "xgcrypt"], |
Philip Tricca | 8eecfd3 | 2018-01-31 06:28:27 -0800 | [diff] [blame] | 104 | [AC_CHECK_LIB([gcrypt], |
| 105 | [gcry_mac_open], |
| 106 | [], |
| 107 | [AC_MSG_ERROR([Missing required library: gcrypt.])])]) |
Juergen Repp | bebbc7a | 2018-06-22 14:03:12 +0200 | [diff] [blame] | 108 | |
| 109 | AS_IF([test "x$enable_esapi" != xno -a "x$with_crypto" = "xossl"], |
| 110 | [AC_CHECK_HEADER([openssl/ssl.h], |
| 111 | [], |
| 112 | [AC_MSG_ERROR([Missing required header: openssl/ssl.h.])])]) |
| 113 | |
| 114 | AS_IF([test "x$enable_esapi" != xno -a "x$with_crypto" = "xossl"], |
| 115 | AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])) |
| 116 | |
| 117 | AS_IF([test "x$enable_esapi" != xno -a "x$with_crypto" = "xossl"], |
| 118 | AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])) |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 119 | |
| 120 | AC_ARG_WITH([tctidefaultmodule], |
| 121 | [AS_HELP_STRING([--with-tctidefaultmodule], |
Andreas Fuchs | 037c878 | 2018-03-21 18:52:38 +0100 | [diff] [blame] | 122 | [The default TCTI module for ESAPI. (Default: libtss2-tcti-default.so])], |
| 123 | [AC_DEFINE_UNQUOTED([ESYS_TCTI_DEFAULT_MODULE], |
Andreas Fuchs | fefb6b0 | 2018-08-29 13:30:35 +0200 | [diff] [blame] | 124 | ["$with_tctidefaultmodule"], |
Andreas Fuchs | 037c878 | 2018-03-21 18:52:38 +0100 | [diff] [blame] | 125 | ["The default TCTI library file"])], |
| 126 | []) |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 127 | |
| 128 | AC_ARG_WITH([tctidefaultconfig], |
| 129 | [AS_HELP_STRING([--with-tctidefaultconfig], |
| 130 | [The default tcti module's configuration.])], |
Andreas Fuchs | 037c878 | 2018-03-21 18:52:38 +0100 | [diff] [blame] | 131 | [AC_DEFINE_UNQUOTED([ESYS_TCTI_DEFAULT_CONFIG], |
Andreas Fuchs | fefb6b0 | 2018-08-29 13:30:35 +0200 | [diff] [blame] | 132 | ["$with_tctidefaultconfig"], |
Andreas Fuchs | 037c878 | 2018-03-21 18:52:38 +0100 | [diff] [blame] | 133 | ["The default TCTIs configuration string"])], |
| 134 | []) |
| 135 | |
Andreas Fuchs | 2b085e9 | 2018-05-02 16:42:47 +0200 | [diff] [blame] | 136 | AC_ARG_ENABLE([tcti-device], |
| 137 | [AS_HELP_STRING([--enable-tcti-device], |
| 138 | [build the tcti-device module (default is yes)])], |
| 139 | [enable_tcti_device=$enableval], |
| 140 | [enable_tcti_device=yes]) |
| 141 | AM_CONDITIONAL([ENABLE_TCTI_DEVICE], [test "x$enable_tcti_device" != xno]) |
John Andersen | 443455b | 2019-01-16 12:58:36 -0800 | [diff] [blame] | 142 | AS_IF([test "x$enable_tcti_device" = "xyes"], |
| 143 | AC_DEFINE([TCTI_DEVICE],[1], [TCTI FOR DEV TPM])) |
Andreas Fuchs | 2b085e9 | 2018-05-02 16:42:47 +0200 | [diff] [blame] | 144 | |
| 145 | AC_ARG_ENABLE([tcti-mssim], |
| 146 | [AS_HELP_STRING([--enable-tcti-mssim], |
| 147 | [build the tcti-mssim module (default is yes)])], |
| 148 | [enable_tcti_mssim=$enableval], |
| 149 | [enable_tcti_mssim=yes]) |
| 150 | AM_CONDITIONAL([ENABLE_TCTI_MSSIM], [test "x$enable_tcti_mssim" != xno]) |
Tadeusz Struk | 7ab3cbb | 2019-01-31 14:30:18 -0800 | [diff] [blame] | 151 | AS_IF([test "x$enable_tcti_mssim" = "xyes"], |
| 152 | AC_DEFINE([TCTI_MSSIM],[1], [TCTI FOR MS SIMULATOR])) |
Andreas Fuchs | 2b085e9 | 2018-05-02 16:42:47 +0200 | [diff] [blame] | 153 | |
John Andersen | 443455b | 2019-01-16 12:58:36 -0800 | [diff] [blame] | 154 | AC_ARG_ENABLE([tcti-fuzzing], |
| 155 | [AS_HELP_STRING([--enable-tcti-fuzzing], |
| 156 | [build the tcti-fuzzing module (default is no)])], |
| 157 | [enable_tcti_fuzzing=$enableval], |
| 158 | [enable_tcti_fuzzing=no]) |
| 159 | AM_CONDITIONAL([ENABLE_TCTI_FUZZING], [test "x$enable_tcti_fuzzing" != xno]) |
| 160 | AS_IF([test "x$enable_tcti_fuzzing" = "xyes"], |
| 161 | AC_DEFINE([TCTI_FUZZING],[1], [TCTI FOR FUZZING])) |
| 162 | |
Philip Tricca | 99d4142 | 2017-06-18 15:11:50 -0700 | [diff] [blame] | 163 | # |
Javier Martinez Canillas | 0075f88 | 2018-04-13 12:49:37 +0200 | [diff] [blame] | 164 | # udev |
| 165 | # |
| 166 | AC_ARG_WITH([udevrulesdir], |
| 167 | [AS_HELP_STRING([--with-udevrulesdir=DIR],[udev rules directory])], |
| 168 | [], |
| 169 | [with_udevrulesdir=${libdir}/udev/rules.d]) |
| 170 | AX_NORMALIZE_PATH([with_udevrulesdir]) |
| 171 | AC_SUBST([udevrulesdir], [$with_udevrulesdir]) |
| 172 | AC_ARG_WITH([udevrulesprefix], |
| 173 | [AS_HELP_STRING([--with-udevrulesprefix=XY],[prefix for udev rules file])], |
| 174 | [AC_SUBST([udevrulesprefix],[$with_udevrulesprefix])]) |
| 175 | AM_CONDITIONAL(WITH_UDEVRULESPREFIX, [test -n "$with_udevrulesprefix"]) |
| 176 | # |
Philip Tricca | 9907543 | 2018-04-25 19:02:05 -0700 | [diff] [blame] | 177 | # enable integration tests and check for simulator binary |
Philip Tricca | 99d4142 | 2017-06-18 15:11:50 -0700 | [diff] [blame] | 178 | # |
Philip Tricca | 9907543 | 2018-04-25 19:02:05 -0700 | [diff] [blame] | 179 | AC_ARG_ENABLE([integration], |
| 180 | [AS_HELP_STRING([--enable-integration], |
| 181 | [build and execute integration tests (default is no)])], |
| 182 | [enable_integration=$enableval], |
| 183 | [enable_integration=no]) |
| 184 | AS_IF([test "x$enable_integration" = "xyes"], |
Philip Tricca | 154b81d | 2018-07-06 12:41:07 -0700 | [diff] [blame] | 185 | [ERROR_IF_NO_PROG([tpm_server]) |
Jonas Witschel | 8b9285d | 2018-12-27 23:53:21 +0100 | [diff] [blame] | 186 | ERROR_IF_NO_PROG([ss]) |
Philip Tricca | 35ab16e | 2018-07-06 13:03:17 -0700 | [diff] [blame] | 187 | ERROR_IF_NO_PROG([ps]) |
| 188 | ERROR_IF_NO_PROG([echo]) |
| 189 | ERROR_IF_NO_PROG([kill]) |
Jonas Witschel | 303412c | 2018-12-27 23:55:55 +0100 | [diff] [blame] | 190 | ERROR_IF_NO_PROG([stdbuf]) |
Philip Tricca | 35ab16e | 2018-07-06 13:03:17 -0700 | [diff] [blame] | 191 | ERROR_IF_NO_PROG([sleep]) |
| 192 | ERROR_IF_NO_PROG([cat]) |
| 193 | ERROR_IF_NO_PROG([realpath]) |
| 194 | ERROR_IF_NO_PROG([dirname]) |
| 195 | ERROR_IF_NO_PROG([basename]) |
| 196 | ERROR_IF_NO_PROG([mktemp]) |
| 197 | ERROR_IF_NO_PROG([od]) |
| 198 | ERROR_IF_NO_PROG([awk]) |
| 199 | ERROR_IF_NO_PROG([expr]) |
| 200 | ERROR_IF_NO_PROG([grep]) |
| 201 | ERROR_IF_NO_PROG([env]) |
| 202 | ERROR_IF_NO_PROG([rm]) |
Philip Tricca | 9907543 | 2018-04-25 19:02:05 -0700 | [diff] [blame] | 203 | PKG_CHECK_MODULES([LIBCRYPTO],[libcrypto]) |
| 204 | AC_CHECK_HEADER(uthash.h, [], [AC_MSG_ERROR([Can not find uthash.h. Please install uthash-dev])]) |
Tadeusz Struk | 91e7bd6 | 2018-07-23 11:30:02 -0700 | [diff] [blame] | 205 | AS_IF([test "x$enable_tcti_mssim" = xno], |
| 206 | AC_MSG_ERROR([Integration tests can not be enabled without the TCTI_MSSIM module])) |
Philip Tricca | 9907543 | 2018-04-25 19:02:05 -0700 | [diff] [blame] | 207 | AC_SUBST([ENABLE_INTEGRATION], [$enable_integration])]) |
| 208 | AM_CONDITIONAL([ENABLE_INTEGRATION],[test "x$enable_integration" = "xyes"]) |
John Andersen | 4eab6da | 2019-01-16 13:59:16 -0800 | [diff] [blame] | 209 | # |
| 210 | # fuzz testing |
| 211 | # |
| 212 | AC_ARG_WITH([fuzzing], |
| 213 | [AS_HELP_STRING([--with-fuzzing={none,libfuzzer,ossfuzz}], |
| 214 | [fuzzing to build with (default is none)])], |
| 215 | [], |
| 216 | [with_fuzzing=none]) |
| 217 | AS_CASE(["x$with_fuzzing"], |
| 218 | ["xnone"], |
| 219 | [], |
| 220 | ["xlibfuzzer"], |
| 221 | [ADD_FUZZING_FLAG([-fsanitize=fuzzer])], |
| 222 | ["xossfuzz"], |
| 223 | [AS_IF([test "x$LIB_FUZZING_ENGINE" = "x"], |
| 224 | AC_MSG_ERROR([OSS Fuzz testing requires LIB_FUZZING_ENGINE environment variable be set])) |
| 225 | ADD_FUZZING_FLAG([-lFuzzingEngine])], |
| 226 | [AC_MSG_ERROR([Bad value for --with-fuzzing])]) |
| 227 | AM_CONDITIONAL([ENABLE_FUZZING],[test "x$with_fuzzing" != "xnone"]) |
| 228 | AS_IF([test "x$with_fuzzing" != "xnone"], |
| 229 | [ADD_COMPILER_FLAG([-fsanitize=fuzzer-no-link], [required]) |
| 230 | AS_IF([test "x$enable_tcti_fuzzng" = "xno"], |
| 231 | AC_MSG_ERROR([Fuzz tests can not be enabled without the TCTI_FUZZING module]))]) |
Tadeusz Struk | 1bc0f08 | 2018-04-18 11:53:26 -0700 | [diff] [blame] | 232 | |
Peter Huewe | f59aee3 | 2019-02-19 22:56:21 +0100 | [diff] [blame] | 233 | AX_VALGRIND_CHECK |
| 234 | |
David R. Bild | 1e49b4c | 2017-11-28 18:09:42 -0600 | [diff] [blame] | 235 | gl_LD_VERSION_SCRIPT |
| 236 | |
Andreas Fuchs | 80e8485 | 2018-02-27 22:45:09 +0100 | [diff] [blame] | 237 | AC_ARG_WITH([maxloglevel], |
| 238 | [AS_HELP_STRING([--with-maxloglevel={none,error,warning,info,debug,trace}], |
Andreas Fuchs | bc49076 | 2018-01-03 14:36:38 +0100 | [diff] [blame] | 239 | [sets the maximum log level (default is trace)])], |
| 240 | [], |
Andreas Fuchs | 80e8485 | 2018-02-27 22:45:09 +0100 | [diff] [blame] | 241 | [with_maxloglevel=trace]) |
Philip Tricca | feae8b1 | 2018-11-04 19:53:12 -0800 | [diff] [blame] | 242 | AS_CASE(["x$with_maxloglevel"], |
| 243 | ["xnone"], |
| 244 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [0], ["Logging disabled"])], |
| 245 | ["xerror"], |
| 246 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [2], ["Error log level"])], |
| 247 | ["xwarning"], |
| 248 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [3], ["Warning log level"])], |
| 249 | ["xinfo"], |
| 250 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [4], ["Info log level"])], |
| 251 | ["xdebug"], |
| 252 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [5], ["Debug log level"])], |
| 253 | ["xtrace"], |
| 254 | [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [6], ["Trace log level"])], |
| 255 | [AC_MSG_ERROR([Bad value for --with-maxloglevel])]) |
Andreas Fuchs | bc49076 | 2018-01-03 14:36:38 +0100 | [diff] [blame] | 256 | |
Tadeusz Struk | a3260d8 | 2017-09-11 12:06:13 -0700 | [diff] [blame] | 257 | AC_ARG_ENABLE([debug], |
| 258 | [AS_HELP_STRING([--enable-debug], |
| 259 | [build with debug info (default is no)])], |
| 260 | [enable_debug=$enableval], |
| 261 | [enable_debug=no]) |
Philip Tricca | 6d5985b | 2018-11-04 15:58:19 -0800 | [diff] [blame] | 262 | AS_IF([test "x$enable_debug" = "xyes"], ADD_COMPILER_FLAG([-ggdb3 -Og])) |
Philip Tricca | 085755d | 2018-11-11 12:43:29 -0800 | [diff] [blame] | 263 | AC_ARG_ENABLE([defaultflags], |
Philip Tricca | 6751b3c | 2018-11-20 00:19:13 -0800 | [diff] [blame] | 264 | [AS_HELP_STRING([--disable-defaultflags], |
| 265 | [Disable default preprocessor, compiler, and linker flags.])], |
Philip Tricca | 085755d | 2018-11-11 12:43:29 -0800 | [diff] [blame] | 266 | [enable_defaultflags=$enableval], |
| 267 | [enable_defaultflags=yes]) |
| 268 | AS_IF([test "x$enable_defaultflags" = "xyes"], |
| 269 | [ |
| 270 | ADD_PREPROC_FLAG([-D_DEFAULT_SOURCE]) |
| 271 | ADD_PREPROC_FLAG([-D_BSD_SOURCE]) |
| 272 | ADD_PREPROC_FLAG([-D_POSIX_SOURCE]) |
| 273 | AS_IF([test "x$enable_debug" = "xno"], |
| 274 | [ |
| 275 | ADD_PREPROC_FLAG([-U_FORTIFY_SOURCE]) |
| 276 | ADD_PREPROC_FLAG([-D_FORTIFY_SOURCE=2]) |
| 277 | ADD_COMPILER_FLAG([-g -O2]) |
| 278 | ]) |
| 279 | ADD_COMPILER_FLAG([-std=c99]) |
| 280 | ADD_COMPILER_FLAG([-Wall]) |
| 281 | ADD_COMPILER_FLAG([-Wextra]) |
| 282 | ADD_COMPILER_FLAG([-Wformat-security]) |
| 283 | ADD_COMPILER_FLAG([-Werror]) |
| 284 | ADD_COMPILER_FLAG([-fstack-protector-all]) |
| 285 | ADD_COMPILER_FLAG([-fpic]) |
| 286 | ADD_COMPILER_FLAG([-fPIC]) |
| 287 | # work around GCC bug #53119 |
| 288 | # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 |
| 289 | ADD_COMPILER_FLAG([-Wno-missing-braces]) |
William Roberts | 2272717 | 2018-12-07 10:34:53 -0800 | [diff] [blame] | 290 | ADD_COMPILER_FLAG([-Wstrict-overflow=5]) |
Philip Tricca | 085755d | 2018-11-11 12:43:29 -0800 | [diff] [blame] | 291 | ADD_LINK_FLAG([-Wl,--no-undefined]) |
| 292 | ADD_LINK_FLAG([-Wl,-z,noexecstack]) |
| 293 | ADD_LINK_FLAG([-Wl,-z,now]) |
| 294 | ADD_LINK_FLAG([-Wl,-z,relro]) |
| 295 | ]) |
Philip Tricca | b43de64 | 2017-03-04 21:29:10 -0800 | [diff] [blame] | 296 | |
Philip Tricca | 9907543 | 2018-04-25 19:02:05 -0700 | [diff] [blame] | 297 | AC_SUBST([PATH]) |
| 298 | |
Philip Tricca | f891580 | 2017-03-14 17:01:50 -0700 | [diff] [blame] | 299 | |
Juergen Repp | ac59836 | 2018-07-17 13:36:38 +0200 | [diff] [blame] | 300 | dnl --------- Physical TPM device ----------------------- |
| 301 | |
| 302 | AC_ARG_WITH([ptpm], |
Tadeusz Struk | c6a4a7d | 2018-08-21 13:21:22 -0700 | [diff] [blame] | 303 | [AS_HELP_STRING([--with-ptpm=<device>],[TPM device])], |
Juergen Repp | ac59836 | 2018-07-17 13:36:38 +0200 | [diff] [blame] | 304 | [AS_IF([test \( -w "$with_ptpm" \) -a \( -r "$with_ptpm" \)], |
| 305 | [AC_MSG_RESULT([success]) |
| 306 | AC_SUBST([PTPM],[$with_ptpm]) |
| 307 | AX_NORMALIZE_PATH([with_ptpm]) |
| 308 | with_ptpm_set=yes], |
| 309 | [AC_MSG_ERROR([TPM device provided does not exist or is not writable])])], |
| 310 | [with_ptpm_set=no]) |
| 311 | AM_CONDITIONAL([PTPM],[test "x$with_ptpm_set" = "xyes"]) |
| 312 | |
| 313 | AC_ARG_WITH([ptpmtests], |
| 314 | [AS_HELP_STRING([--with-ptpmtests=<case>],[Comma-separated values of possible tests: destructive,mandatory,optional] default is mandatory)], |
| 315 | [AS_IF([test "x" == x$(echo $with_ptpmtests | sed 's/destructive//g' | sed 's/mandatory//g' | sed 's/optional//g' | sed 's/,//g') ], |
| 316 | [AC_MSG_RESULT([success]) |
| 317 | with_ptpmtests_set=yes], |
| 318 | [AC_MSG_ERROR([Illegal test type for pTPM tests.])])], |
| 319 | [with_ptpmtests="mandatory"]) |
| 320 | |
| 321 | if echo $with_ptpmtests | grep destructive > /dev/null; then |
| 322 | enable_ptpm_destructive="yes" |
| 323 | fi |
| 324 | AM_CONDITIONAL([PTPMDESTRUCTIVE],[test "x$enable_ptpm_destructive" = "xyes"]) |
| 325 | |
| 326 | if echo $with_ptpmtests | grep optional > /dev/null; then |
| 327 | enable_ptpm_optional="yes" |
| 328 | fi |
| 329 | AM_CONDITIONAL([PTPMOPTIONAL],[test "x$enable_ptpm_optional" = "xyes"]) |
| 330 | |
| 331 | if echo $with_ptpmtests | grep mandatory > /dev/null; then |
| 332 | enable_ptpm_mandatory="yes" |
| 333 | fi |
| 334 | AM_CONDITIONAL([PTPMMANDATORY],[test "x$enable_ptpm_mandatory" = "xyes"]) |
| 335 | |
| 336 | AM_CONDITIONAL([TESTPTPM],[test "x$with_ptpm_set" = "xyes" -a "x$with_ptpm_set" = "xyes"]) |
| 337 | |
Andreas Fuchs | 2968c71 | 2018-02-01 18:22:47 +0100 | [diff] [blame] | 338 | dnl --------- Doxy Gen ----------------------- |
Andreas Fuchs | bc169cb | 2018-04-10 12:02:10 +0200 | [diff] [blame] | 339 | DX_DOXYGEN_FEATURE(ON) |
| 340 | DX_DOT_FEATURE(OFF) |
Andreas Fuchs | 2968c71 | 2018-02-01 18:22:47 +0100 | [diff] [blame] | 341 | DX_HTML_FEATURE(ON) |
| 342 | DX_CHM_FEATURE(OFF) |
| 343 | DX_CHI_FEATURE(OFF) |
| 344 | DX_MAN_FEATURE(ON) |
Jonas Witschel | dd54f33 | 2018-11-14 22:17:34 +0100 | [diff] [blame] | 345 | DX_RTF_FEATURE(ON) |
Andreas Fuchs | 2968c71 | 2018-02-01 18:22:47 +0100 | [diff] [blame] | 346 | DX_XML_FEATURE(OFF) |
| 347 | DX_PDF_FEATURE(OFF) |
| 348 | DX_PS_FEATURE(OFF) |
Jonas Witschel | dd54f33 | 2018-11-14 22:17:34 +0100 | [diff] [blame] | 349 | DX_INIT_DOXYGEN($PACKAGE_NAME, [Doxyfile], [doxygen-doc]) |
Andreas Fuchs | e5273b3 | 2018-04-26 16:16:24 +0200 | [diff] [blame] | 350 | AM_CONDITIONAL(DOXYMAN, [test $DX_FLAG_man -eq 1]) |
Andreas Fuchs | 2968c71 | 2018-02-01 18:22:47 +0100 | [diff] [blame] | 351 | |
Jonas Witschel | dd67236 | 2018-11-17 15:25:41 +0100 | [diff] [blame] | 352 | AS_IF([test "x$enable_doxygen_doc" != xno], |
Tadeusz Struk | 81eacdd | 2018-11-12 11:57:02 -0800 | [diff] [blame] | 353 | [ERROR_IF_NO_PROG([doxygen])]) |
| 354 | |
Andreas Fuchs | 61cb7fb | 2017-11-22 10:23:01 +0100 | [diff] [blame] | 355 | AX_CODE_COVERAGE |
Jonas Witschel | 648fa84 | 2019-01-07 22:15:06 +0100 | [diff] [blame] | 356 | m4_ifdef([_AX_CODE_COVERAGE_RULES], |
| 357 | [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])], |
| 358 | [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])]) |
Joshua Lock | b7b4232 | 2019-01-25 16:10:14 +0000 | [diff] [blame] | 359 | AX_ADD_AM_MACRO_STATIC([]) |
Andreas Fuchs | 61cb7fb | 2017-11-22 10:23:01 +0100 | [diff] [blame] | 360 | |
Philip Tricca | d1952b4 | 2015-08-05 15:52:10 -0700 | [diff] [blame] | 361 | AC_OUTPUT |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 362 | |
Andreas Fuchs | 2b085e9 | 2018-05-02 16:42:47 +0200 | [diff] [blame] | 363 | AM_COND_IF([ENABLE_TCTI_DEVICE], [], |
| 364 | [AM_COND_IF([ENABLE_TCTI_MSSIM], [], |
John Andersen | 443455b | 2019-01-16 12:58:36 -0800 | [diff] [blame] | 365 | [AM_COND_IF([ENABLE_TCTI_FUZZING], [], |
| 366 | [AC_MSG_WARN("No build-in TCTI module enabled")])])]) |
| 367 | |
| 368 | AM_COND_IF([ENABLE_TCTI_FUZZING], [ |
| 369 | AM_COND_IF([ENABLE_TCTI_DEVICE], |
| 370 | AC_MSG_ERROR("Fuzzing TCTI is meant to be built as the only TCTI"), []) |
| 371 | AM_COND_IF([ENABLE_TCTI_MSSIM], |
| 372 | AC_MSG_ERROR("Fuzzing TCTI is meant to be built as the only TCTI"), []) |
| 373 | ], []) |
Andreas Fuchs | 2b085e9 | 2018-05-02 16:42:47 +0200 | [diff] [blame] | 374 | |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 375 | AC_MSG_RESULT([ |
| 376 | $PACKAGE_NAME $VERSION |
| 377 | esapi: $enable_esapi |
| 378 | tctidefaultmodule: $with_tctidefaultmodule |
| 379 | tctidefaultconfig: $with_tctidefaultconfig |
| 380 | unit: $enable_unit |
John Andersen | 4eab6da | 2019-01-16 13:59:16 -0800 | [diff] [blame] | 381 | fuzzing: $with_fuzzing |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 382 | debug: $enable_debug |
Philip Tricca | fb0b72f | 2018-03-04 19:39:24 -0800 | [diff] [blame] | 383 | maxloglevel: $with_maxloglevel |
Andreas Fuchs | 2968c71 | 2018-02-01 18:22:47 +0100 | [diff] [blame] | 384 | doxygen: $DX_FLAG_doc $enable_doxygen_doc |
Tadeusz Struk | 3f2489b | 2018-08-22 10:01:11 -0700 | [diff] [blame] | 385 | tcti-device-async: $enable_tcti_device_async |
Tadeusz Struk | fa423ad | 2018-11-27 13:20:38 -0800 | [diff] [blame] | 386 | tcti-partial-read: $enable_tcti_partial_reads |
Tadeusz Struk | a5ff71a | 2018-10-23 16:04:25 -0700 | [diff] [blame] | 387 | crypto backend: $with_crypto |
Juergen Repp | ff821bd | 2017-12-11 15:21:42 +0100 | [diff] [blame] | 388 | ]) |