1*758e9fbaSOystein Eftevaag# SPDX-License-Identifier: BSD-2-Clause 2*758e9fbaSOystein Eftevaag# Copyright (c) 2015 - 2020 Intel Corporation 3*758e9fbaSOystein Eftevaag# Copyright (c) 2018 - 2020 Fraunhofer SIT sponsored by Infineon Technologies AG 4*758e9fbaSOystein Eftevaag# All rights reserved. 5*758e9fbaSOystein Eftevaag 6*758e9fbaSOystein EftevaagAC_INIT([tpm2-tss], 7*758e9fbaSOystein Eftevaag [2.4.0], 8*758e9fbaSOystein Eftevaag [https://github.com/tpm2-software/tpm2-tss/issues], 9*758e9fbaSOystein Eftevaag [], 10*758e9fbaSOystein Eftevaag [https://github.com/tpm2-software/tpm2-tss]) 11*758e9fbaSOystein EftevaagAC_CONFIG_MACRO_DIR([m4]) 12*758e9fbaSOystein EftevaagAM_INIT_AUTOMAKE([foreign 13*758e9fbaSOystein Eftevaag subdir-objects]) 14*758e9fbaSOystein Eftevaagm4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) #Backward compatible setting of "silent-rules" 15*758e9fbaSOystein Eftevaag 16*758e9fbaSOystein EftevaagAC_CONFIG_HEADERS([config.h]) 17*758e9fbaSOystein Eftevaag 18*758e9fbaSOystein EftevaagAC_CONFIG_FILES([Makefile Doxyfile lib/tss2-sys.pc lib/tss2-esys.pc lib/tss2-mu.pc lib/tss2-tcti-device.pc lib/tss2-tcti-mssim.pc lib/tss2-rc.pc lib/tss2-tctildr.pc lib/tss2-fapi.pc]) 19*758e9fbaSOystein Eftevaag 20*758e9fbaSOystein Eftevaag# propagate configure arguments to distcheck 21*758e9fbaSOystein EftevaagAC_SUBST([DISTCHECK_CONFIGURE_FLAGS],[$ac_configure_args]) 22*758e9fbaSOystein Eftevaag 23*758e9fbaSOystein EftevaagAC_CANONICAL_HOST 24*758e9fbaSOystein Eftevaag 25*758e9fbaSOystein EftevaagAX_IS_RELEASE(dash-version) 26*758e9fbaSOystein EftevaagAX_CHECK_ENABLE_DEBUG([info]) 27*758e9fbaSOystein Eftevaag 28*758e9fbaSOystein EftevaagAC_PROG_CC 29*758e9fbaSOystein EftevaagAC_PROG_CXX 30*758e9fbaSOystein EftevaagAC_PROG_LN_S 31*758e9fbaSOystein EftevaagAC_USE_SYSTEM_EXTENSIONS 32*758e9fbaSOystein EftevaagLT_INIT() 33*758e9fbaSOystein EftevaagLT_LIB_DLLOAD 34*758e9fbaSOystein EftevaagPKG_INSTALLDIR() 35*758e9fbaSOystein Eftevaag 36*758e9fbaSOystein Eftevaag# Check OS and set library and compile flags accordingly 37*758e9fbaSOystein Eftevaagcase "${host_os}" in 38*758e9fbaSOystein Eftevaag *nto-qnx*) 39*758e9fbaSOystein Eftevaag HOSTOS='QNX' 40*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-D_QNX_SOURCE]) 41*758e9fbaSOystein Eftevaag LIBSOCKET_LDFLAGS="-lsocket" 42*758e9fbaSOystein Eftevaag ;; 43*758e9fbaSOystein Eftevaag *bsd* | *BSD*) 44*758e9fbaSOystein Eftevaag HOSTOS='BSD' 45*758e9fbaSOystein Eftevaag LIBSOCKET_LDFLAGS="" 46*758e9fbaSOystein Eftevaag ;; 47*758e9fbaSOystein Eftevaag *) 48*758e9fbaSOystein Eftevaag #Assume linux 49*758e9fbaSOystein Eftevaag HOSTOS='Linux' 50*758e9fbaSOystein Eftevaag LIBSOCKET_LDFLAGS="" 51*758e9fbaSOystein Eftevaag ;; 52*758e9fbaSOystein Eftevaagesac 53*758e9fbaSOystein EftevaagAC_SUBST([LIBSOCKET_LDFLAGS]) 54*758e9fbaSOystein EftevaagAC_SUBST([HOSTOS]) 55*758e9fbaSOystein Eftevaag 56*758e9fbaSOystein Eftevaag# runstatedir is only defined in the yet unreleased Autoconf 2.70 57*758e9fbaSOystein EftevaagAC_ARG_WITH([runstatedir], 58*758e9fbaSOystein Eftevaag AS_HELP_STRING([--with-runstatedir=<dir>], 59*758e9fbaSOystein Eftevaag [replacement for --runstatedir in Autoconf <2.70]), 60*758e9fbaSOystein Eftevaag [runstatedir="$withval"]) 61*758e9fbaSOystein EftevaagAS_IF([test -z "$runstatedir"], [runstatedir="${localstatedir}/run"]) 62*758e9fbaSOystein EftevaagAC_SUBST([runstatedir]) 63*758e9fbaSOystein Eftevaag 64*758e9fbaSOystein EftevaagAX_RECURSIVE_EVAL([$sysconfdir], [SYSCONFDIR]) 65*758e9fbaSOystein EftevaagAC_DEFINE_UNQUOTED([SYSCONFDIR], ["$SYSCONFDIR"], [System config dir]) 66*758e9fbaSOystein Eftevaag 67*758e9fbaSOystein EftevaagAC_ARG_WITH([userstatedir], 68*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-userstatedir=<dir>], 69*758e9fbaSOystein Eftevaag [sets the relative path in the user's home (default is ".local/share")])],, 70*758e9fbaSOystein Eftevaag [with_userstatedir=.local/share]) 71*758e9fbaSOystein EftevaagAC_SUBST(userstatedir, $with_userstatedir) 72*758e9fbaSOystein Eftevaag 73*758e9fbaSOystein EftevaagAC_ARG_WITH([sysusersdir], 74*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-sysusersdir=<dir>], 75*758e9fbaSOystein Eftevaag [sets the sysusers.d directory (default is "${sysconfdir}/sysusers.d")])],, 76*758e9fbaSOystein Eftevaag [with_sysusersdir="${sysconfdir}/sysusers.d"]) 77*758e9fbaSOystein EftevaagAC_SUBST(sysusersdir, $with_sysusersdir) 78*758e9fbaSOystein Eftevaag 79*758e9fbaSOystein EftevaagAC_ARG_WITH([tmpfilesdir], 80*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-tmpfilesdir=<dir>], 81*758e9fbaSOystein Eftevaag [sets the tmpfiles.d directory (default is "${sysconfdir}/tmpfiles.d")])],, 82*758e9fbaSOystein Eftevaag [with_tmpfilesdir="${sysconfdir}/tmpfiles.d"]) 83*758e9fbaSOystein EftevaagAC_SUBST(tmpfilesdir, $with_tmpfilesdir) 84*758e9fbaSOystein Eftevaag 85*758e9fbaSOystein EftevaagAC_ARG_ENABLE([unit], 86*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--enable-unit], 87*758e9fbaSOystein Eftevaag [build cmocka unit tests])],, 88*758e9fbaSOystein Eftevaag [enable_unit=no]) 89*758e9fbaSOystein Eftevaagm4_define([cmocka_min_version], [1.0]) 90*758e9fbaSOystein Eftevaagm4_define([cmocka_err], [Unit test enabled, but cmocka missing or version requirements not met. cmocka version must be >= cmocka_min_version]) 91*758e9fbaSOystein EftevaagAS_IF([test "x$enable_unit" != xno], 92*758e9fbaSOystein Eftevaag [PKG_CHECK_MODULES([CMOCKA], 93*758e9fbaSOystein Eftevaag [cmocka >= cmocka_min_version],, 94*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([cmocka_err])])]) 95*758e9fbaSOystein EftevaagAM_CONDITIONAL([UNIT], [test "x$enable_unit" != xno]) 96*758e9fbaSOystein Eftevaag 97*758e9fbaSOystein EftevaagAC_ARG_ENABLE([esapi], 98*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--disable-esapi], 99*758e9fbaSOystein Eftevaag [don't build the esapi layer])],, 100*758e9fbaSOystein Eftevaag [enable_esapi=yes]) 101*758e9fbaSOystein Eftevaag 102*758e9fbaSOystein EftevaagAM_CONDITIONAL(ESAPI, test "x$enable_esapi" = "xyes") 103*758e9fbaSOystein Eftevaag 104*758e9fbaSOystein EftevaagAC_CHECK_FUNC([strndup],[],[AC_MSG_ERROR([strndup function not found])]) 105*758e9fbaSOystein EftevaagAC_CHECK_FUNCS([reallocarray]) 106*758e9fbaSOystein EftevaagAC_ARG_ENABLE([fapi], 107*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--enable-fapi], 108*758e9fbaSOystein Eftevaag [build the fapi layer (default is yes)])], 109*758e9fbaSOystein Eftevaag [enable_fapi=$enableval], 110*758e9fbaSOystein Eftevaag [enable_fapi=yes]) 111*758e9fbaSOystein Eftevaag 112*758e9fbaSOystein EftevaagAM_CONDITIONAL(FAPI, test "x$enable_fapi" = "xyes") 113*758e9fbaSOystein Eftevaag 114*758e9fbaSOystein EftevaagAC_ARG_ENABLE([fapi-async-tests], 115*758e9fbaSOystein Eftevaag AS_HELP_STRING([--enable-fapi-async-tests], 116*758e9fbaSOystein Eftevaag [Force fapi to spin asynchronously. (NOT FOR PRODUCTION!)]),, 117*758e9fbaSOystein Eftevaag [enable_fapi_async_tests=no]) 118*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi_async_tests" = "xyes"], 119*758e9fbaSOystein Eftevaag AC_DEFINE([TEST_FAPI_ASYNC], [1], [FAPI forced async spinning])) 120*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi_async_tests" = "xyes"], 121*758e9fbaSOystein Eftevaag AC_MSG_WARN("FAPI compiled with asynchronous spinning testing. NOT FOR PRODUCTION!")) 122*758e9fbaSOystein Eftevaag 123*758e9fbaSOystein EftevaagAC_ARG_ENABLE([tcti-device-async], 124*758e9fbaSOystein Eftevaag AS_HELP_STRING([--enable-tcti-device-async], 125*758e9fbaSOystein Eftevaag [Enable asynchronus operation on TCTI device 126*758e9fbaSOystein Eftevaag (note: This needs to be supported by the kernel driver).]),, 127*758e9fbaSOystein Eftevaag [enable_tcti_device_async=no]) 128*758e9fbaSOystein EftevaagAS_IF([test "x$enable_tcti_device_async" = "xyes"], 129*758e9fbaSOystein Eftevaag AC_DEFINE([TCTI_ASYNC],[1], [TCTI ASYNC MODE])) 130*758e9fbaSOystein Eftevaag 131*758e9fbaSOystein EftevaagAC_ARG_ENABLE([tcti-partial-reads], 132*758e9fbaSOystein Eftevaag AS_HELP_STRING([--enable-tcti-partial-reads], 133*758e9fbaSOystein Eftevaag [Enable partial reads for TCTI device 134*758e9fbaSOystein Eftevaag (note: This needs to be supported by the kernel driver).]),, 135*758e9fbaSOystein Eftevaag [enable_tcti_partial_reads=no]) 136*758e9fbaSOystein EftevaagAS_IF([test "x$enable_tcti_partial_reads" = "xyes"], 137*758e9fbaSOystein Eftevaag AC_DEFINE([TCTI_PARTIAL_READ],[1], [TCTI PARTIAL READ MODE])) 138*758e9fbaSOystein Eftevaag 139*758e9fbaSOystein EftevaagAC_ARG_WITH([crypto], 140*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-crypto={gcrypt,ossl}], 141*758e9fbaSOystein Eftevaag [sets the ESAPI crypto backend (default is OpenSSL)])],, 142*758e9fbaSOystein Eftevaag [with_crypto=ossl]) 143*758e9fbaSOystein Eftevaag 144*758e9fbaSOystein EftevaagAM_CONDITIONAL(ESYS_OSSL, test "x$with_crypto" = "xossl") 145*758e9fbaSOystein EftevaagAM_CONDITIONAL(ESYS_GCRYPT, test "x$with_crypto" = "xgcrypt") 146*758e9fbaSOystein Eftevaag 147*758e9fbaSOystein EftevaagAS_IF([test "x$enable_esapi" = xyes], 148*758e9fbaSOystein Eftevaag [AS_IF([test "x$with_crypto" = xgcrypt], [ 149*758e9fbaSOystein Eftevaag AM_PATH_LIBGCRYPT([1.6.0], [], [AC_MSG_ERROR([Missing required gcrypt library])]) 150*758e9fbaSOystein Eftevaag TSS2_ESYS_CFLAGS_CRYPTO="$LIBGCRYPT_CFLAGS" 151*758e9fbaSOystein Eftevaag TSS2_ESYS_LDFLAGS_CRYPTO="$LIBGCRYPT_LIBS" 152*758e9fbaSOystein Eftevaag ], [test "x$with_crypto" = xossl], [ 153*758e9fbaSOystein Eftevaag PKG_CHECK_MODULES([LIBCRYPTO], [libcrypto]) 154*758e9fbaSOystein Eftevaag AC_DEFINE([OSSL], [1], [OpenSSL cryptographic backend]) 155*758e9fbaSOystein Eftevaag TSS2_ESYS_CFLAGS_CRYPTO="$LIBCRYPTO_CFLAGS" 156*758e9fbaSOystein Eftevaag TSS2_ESYS_LDFLAGS_CRYPTO="$LIBCRYPTO_LIBS" 157*758e9fbaSOystein Eftevaag ], AC_MSG_ERROR([Bad value for --with-crypto $with_crypto]))]) 158*758e9fbaSOystein EftevaagAC_SUBST([TSS2_ESYS_CFLAGS_CRYPTO]) 159*758e9fbaSOystein EftevaagAC_SUBST([TSS2_ESYS_LDFLAGS_CRYPTO]) 160*758e9fbaSOystein Eftevaag 161*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi" != xno -a "x$enable_esapi" = "xno"], 162*758e9fbaSOystein Eftevaag AC_MSG_ERROR([ESAPI has to be enabled to compile FAPI.])) 163*758e9fbaSOystein Eftevaag 164*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi" != xno -a "x$with_crypto" != "xossl"], 165*758e9fbaSOystein Eftevaag AC_MSG_ERROR([FAPI has to be compiled with OpenSSL])) 166*758e9fbaSOystein Eftevaag 167*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi" = xyes ], 168*758e9fbaSOystein Eftevaag PKG_CHECK_MODULES([JSON_C], [json-c])) 169*758e9fbaSOystein Eftevaag 170*758e9fbaSOystein EftevaagAS_IF([test "x$enable_fapi" = xyes ], 171*758e9fbaSOystein Eftevaag PKG_CHECK_MODULES([CURL], [libcurl])) 172*758e9fbaSOystein Eftevaag 173*758e9fbaSOystein EftevaagAC_ARG_WITH([tctidefaultmodule], 174*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-tctidefaultmodule], 175*758e9fbaSOystein Eftevaag[The default TCTI module for ESAPI. (Default: libtss2-tcti-default.so)])], 176*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([ESYS_TCTI_DEFAULT_MODULE], 177*758e9fbaSOystein Eftevaag ["$with_tctidefaultmodule"], 178*758e9fbaSOystein Eftevaag ["The default TCTI library file"])], 179*758e9fbaSOystein Eftevaag [with_tctidefaultmodule=libtss2-tcti-default.so]) 180*758e9fbaSOystein Eftevaag 181*758e9fbaSOystein EftevaagAC_ARG_WITH([tctidefaultconfig], 182*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-tctidefaultconfig], 183*758e9fbaSOystein Eftevaag [The default tcti module's configuration.])], 184*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([ESYS_TCTI_DEFAULT_CONFIG], 185*758e9fbaSOystein Eftevaag ["$with_tctidefaultconfig"], 186*758e9fbaSOystein Eftevaag ["The default TCTIs configuration string"])]) 187*758e9fbaSOystein Eftevaag 188*758e9fbaSOystein EftevaagAC_ARG_ENABLE([tcti-device], 189*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--disable-tcti-device], 190*758e9fbaSOystein Eftevaag [don't build the tcti-device module])],, 191*758e9fbaSOystein Eftevaag [enable_tcti_device=yes]) 192*758e9fbaSOystein EftevaagAM_CONDITIONAL([ENABLE_TCTI_DEVICE], [test "x$enable_tcti_device" != xno]) 193*758e9fbaSOystein EftevaagAS_IF([test "x$enable_tcti_device" = "xyes"], 194*758e9fbaSOystein Eftevaag AC_DEFINE([TCTI_DEVICE],[1], [TCTI FOR DEV TPM])) 195*758e9fbaSOystein Eftevaag 196*758e9fbaSOystein EftevaagAC_ARG_ENABLE([tcti-mssim], 197*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--disable-tcti-mssim], 198*758e9fbaSOystein Eftevaag [don't build the tcti-mssim module])],, 199*758e9fbaSOystein Eftevaag [enable_tcti_mssim=yes]) 200*758e9fbaSOystein EftevaagAM_CONDITIONAL([ENABLE_TCTI_MSSIM], [test "x$enable_tcti_mssim" != xno]) 201*758e9fbaSOystein EftevaagAS_IF([test "x$enable_tcti_mssim" = "xyes"], 202*758e9fbaSOystein Eftevaag AC_DEFINE([TCTI_MSSIM],[1], [TCTI FOR MS SIMULATOR])) 203*758e9fbaSOystein Eftevaag 204*758e9fbaSOystein EftevaagAC_ARG_ENABLE([tcti-fuzzing], 205*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--enable-tcti-fuzzing], 206*758e9fbaSOystein Eftevaag [build the tcti-fuzzing module])],, 207*758e9fbaSOystein Eftevaag [enable_tcti_fuzzing=no]) 208*758e9fbaSOystein EftevaagAM_CONDITIONAL([ENABLE_TCTI_FUZZING], [test "x$enable_tcti_fuzzing" != xno]) 209*758e9fbaSOystein EftevaagAS_IF([test "x$enable_tcti_fuzzing" = "xyes"], 210*758e9fbaSOystein Eftevaag AC_DEFINE([TCTI_FUZZING],[1], [TCTI FOR FUZZING])) 211*758e9fbaSOystein Eftevaag 212*758e9fbaSOystein EftevaagAC_ARG_ENABLE([nodl], 213*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--enable-nodl], 214*758e9fbaSOystein Eftevaag [link against TCTIs directly, do not use dlopen])], 215*758e9fbaSOystein Eftevaag [], 216*758e9fbaSOystein Eftevaag [enable_nodl=no]) 217*758e9fbaSOystein EftevaagAM_CONDITIONAL([NO_DL], [test "x$enable_nodl" = "xyes"]) 218*758e9fbaSOystein EftevaagAS_IF([test "x$enable_nodl" = "xyes"], 219*758e9fbaSOystein Eftevaag [AC_DEFINE([NO_DL],[1], [disable use of dlopen])]) 220*758e9fbaSOystein Eftevaag 221*758e9fbaSOystein Eftevaag# 222*758e9fbaSOystein Eftevaag# udev 223*758e9fbaSOystein Eftevaag# 224*758e9fbaSOystein EftevaagAC_ARG_WITH([udevrulesdir], 225*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-udevrulesdir=DIR],[udev rules directory])],, 226*758e9fbaSOystein Eftevaag [with_udevrulesdir=${libdir}/udev/rules.d]) 227*758e9fbaSOystein EftevaagAX_NORMALIZE_PATH([with_udevrulesdir]) 228*758e9fbaSOystein EftevaagAC_SUBST([udevrulesdir], [$with_udevrulesdir]) 229*758e9fbaSOystein EftevaagAC_ARG_WITH([udevrulesprefix], 230*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-udevrulesprefix=XY],[prefix for udev rules file])], 231*758e9fbaSOystein Eftevaag [AC_SUBST([udevrulesprefix],[$with_udevrulesprefix])]) 232*758e9fbaSOystein EftevaagAM_CONDITIONAL(WITH_UDEVRULESPREFIX, [test -n "$with_udevrulesprefix"]) 233*758e9fbaSOystein Eftevaag# 234*758e9fbaSOystein Eftevaag# enable integration tests and check for simulator binary 235*758e9fbaSOystein Eftevaag# 236*758e9fbaSOystein EftevaagAC_ARG_ENABLE([integration], 237*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--enable-integration], 238*758e9fbaSOystein Eftevaag [build and execute integration tests])],, 239*758e9fbaSOystein Eftevaag [enable_integration=no]) 240*758e9fbaSOystein EftevaagAS_IF([test "x$enable_integration" = "xyes" -a "$HOSTOS" = "Linux"], 241*758e9fbaSOystein Eftevaag [ERROR_IF_NO_PROG([tpm_server]) 242*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([ss]) 243*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([ps]) 244*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([echo]) 245*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([kill]) 246*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([stdbuf]) 247*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([sleep]) 248*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([cat]) 249*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([realpath]) 250*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([dirname]) 251*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([basename]) 252*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([mktemp]) 253*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([od]) 254*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([awk]) 255*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([expr]) 256*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([grep]) 257*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([env]) 258*758e9fbaSOystein Eftevaag ERROR_IF_NO_PROG([rm]) 259*758e9fbaSOystein Eftevaag AS_IF([test "x$with_crypto" != xossl -o "x$enable_esapi" != xyes], 260*758e9fbaSOystein Eftevaag PKG_CHECK_MODULES([LIBCRYPTO],[libcrypto])) 261*758e9fbaSOystein Eftevaag AC_CHECK_HEADER(uthash.h, [], [AC_MSG_ERROR([Can not find uthash.h. Please install uthash-dev])]) 262*758e9fbaSOystein Eftevaag AS_IF([test "x$enable_tcti_mssim" = xno], 263*758e9fbaSOystein Eftevaag AC_MSG_ERROR([Integration tests can not be enabled without the TCTI_MSSIM module])) 264*758e9fbaSOystein Eftevaag AC_SUBST([ENABLE_INTEGRATION], [$enable_integration])]) 265*758e9fbaSOystein EftevaagAM_CONDITIONAL([ENABLE_INTEGRATION],[test "x$enable_integration" = "xyes"]) 266*758e9fbaSOystein Eftevaag# 267*758e9fbaSOystein Eftevaag# sanitizer compiler flags 268*758e9fbaSOystein Eftevaag# 269*758e9fbaSOystein EftevaagAC_ARG_WITH([sanitizer], 270*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-sanitizer={none,address,undefined}], 271*758e9fbaSOystein Eftevaag [build with the given sanitizer])],, 272*758e9fbaSOystein Eftevaag [with_sanitizer=none]) 273*758e9fbaSOystein EftevaagAS_CASE(["x$with_sanitizer"], 274*758e9fbaSOystein Eftevaag ["xnone"], 275*758e9fbaSOystein Eftevaag [], 276*758e9fbaSOystein Eftevaag ["xaddress"], 277*758e9fbaSOystein Eftevaag [ 278*758e9fbaSOystein Eftevaag SANITIZER_CFLAGS="-fsanitize=address -fno-omit-frame-pointer" 279*758e9fbaSOystein Eftevaag SANITIZER_LDFLAGS="-lasan" 280*758e9fbaSOystein Eftevaag ], 281*758e9fbaSOystein Eftevaag ["xundefined"], 282*758e9fbaSOystein Eftevaag [ 283*758e9fbaSOystein Eftevaag SANITIZER_CFLAGS="-fsanitize=undefined" 284*758e9fbaSOystein Eftevaag SANITIZER_LDFLAGS="-lubsan" 285*758e9fbaSOystein Eftevaag ], 286*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([Bad value for --with-sanitizer])]) 287*758e9fbaSOystein EftevaagAC_SUBST([SANITIZER_CFLAGS]) 288*758e9fbaSOystein EftevaagAC_SUBST([SANITIZER_LDFLAGS]) 289*758e9fbaSOystein Eftevaag# 290*758e9fbaSOystein Eftevaag# fuzz testing 291*758e9fbaSOystein Eftevaag# 292*758e9fbaSOystein EftevaagAC_ARG_WITH([fuzzing], 293*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-fuzzing={none,libfuzzer,ossfuzz}], 294*758e9fbaSOystein Eftevaag [fuzzing to build with (default is none)])],, 295*758e9fbaSOystein Eftevaag [with_fuzzing=none]) 296*758e9fbaSOystein EftevaagAS_CASE(["x$with_fuzzing"], 297*758e9fbaSOystein Eftevaag ["xnone"], 298*758e9fbaSOystein Eftevaag [], 299*758e9fbaSOystein Eftevaag ["xlibfuzzer"], 300*758e9fbaSOystein Eftevaag [ADD_FUZZING_FLAG([-fsanitize=fuzzer])], 301*758e9fbaSOystein Eftevaag ["xossfuzz"], 302*758e9fbaSOystein Eftevaag [AS_IF([test "x$LIB_FUZZING_ENGINE" = "x"], 303*758e9fbaSOystein Eftevaag AC_MSG_ERROR([OSS Fuzz testing requires LIB_FUZZING_ENGINE environment variable be set])) 304*758e9fbaSOystein Eftevaag ADD_FUZZING_FLAG([-lFuzzingEngine])], 305*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([Bad value for --with-fuzzing])]) 306*758e9fbaSOystein EftevaagAM_CONDITIONAL([ENABLE_FUZZING],[test "x$with_fuzzing" != "xnone"]) 307*758e9fbaSOystein EftevaagAS_IF([test "x$with_fuzzing" != "xnone"], 308*758e9fbaSOystein Eftevaag [AS_IF([test "x$enable_tcti_fuzzing" = xno], 309*758e9fbaSOystein Eftevaag AC_MSG_ERROR([Fuzz tests can not be enabled without the TCTI_FUZZING module])) 310*758e9fbaSOystein Eftevaag AS_IF([test "x$GEN_FUZZ" != "x1"], 311*758e9fbaSOystein Eftevaag AC_MSG_ERROR([Fuzz tests can not be enabled without "GEN_FUZZ=1" variable]))]) 312*758e9fbaSOystein Eftevaag 313*758e9fbaSOystein EftevaagAX_VALGRIND_CHECK 314*758e9fbaSOystein Eftevaag 315*758e9fbaSOystein Eftevaaggl_LD_VERSION_SCRIPT 316*758e9fbaSOystein Eftevaag 317*758e9fbaSOystein EftevaagAC_ARG_WITH([maxloglevel], 318*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-maxloglevel={none,error,warning,info,debug,trace}], 319*758e9fbaSOystein Eftevaag [sets the maximum log level (default is trace)])],, 320*758e9fbaSOystein Eftevaag [with_maxloglevel=trace]) 321*758e9fbaSOystein EftevaagAS_CASE(["x$with_maxloglevel"], 322*758e9fbaSOystein Eftevaag ["xnone"], 323*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [0], ["Logging disabled"])], 324*758e9fbaSOystein Eftevaag ["xerror"], 325*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [2], ["Error log level"])], 326*758e9fbaSOystein Eftevaag ["xwarning"], 327*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [3], ["Warning log level"])], 328*758e9fbaSOystein Eftevaag ["xinfo"], 329*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [4], ["Info log level"])], 330*758e9fbaSOystein Eftevaag ["xdebug"], 331*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [5], ["Debug log level"])], 332*758e9fbaSOystein Eftevaag ["xtrace"], 333*758e9fbaSOystein Eftevaag [AC_DEFINE_UNQUOTED([MAXLOGLEVEL], [6], ["Trace log level"])], 334*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([Bad value for --with-maxloglevel])]) 335*758e9fbaSOystein Eftevaag 336*758e9fbaSOystein EftevaagAC_ARG_ENABLE([defaultflags], 337*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--disable-defaultflags], 338*758e9fbaSOystein Eftevaag [Disable default preprocessor, compiler, and linker flags.])],, 339*758e9fbaSOystein Eftevaag [enable_defaultflags=yes]) 340*758e9fbaSOystein EftevaagAS_IF([test "x$enable_defaultflags" = "xyes"], 341*758e9fbaSOystein Eftevaag [ 342*758e9fbaSOystein Eftevaag AS_IF([test "x$enable_debug" = "xno"], 343*758e9fbaSOystein Eftevaag [ADD_COMPILER_FLAG([-O2]) 344*758e9fbaSOystein Eftevaag AX_ADD_FORTIFY_SOURCE]) 345*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-std=c99]) 346*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-Wall]) 347*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-Wextra]) 348*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-Wformat-security]) 349*758e9fbaSOystein Eftevaag AS_IF([test "x$ax_is_release" = "xno"], 350*758e9fbaSOystein Eftevaag [ADD_COMPILER_FLAG([-Werror])]) 351*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-fstack-protector-all]) 352*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-fpic]) 353*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-fPIC]) 354*758e9fbaSOystein Eftevaag # work around GCC bug #53119 355*758e9fbaSOystein Eftevaag # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 356*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-Wno-missing-braces]) 357*758e9fbaSOystein Eftevaag ADD_COMPILER_FLAG([-Wstrict-overflow=5]) 358*758e9fbaSOystein Eftevaag ADD_LINK_FLAG([-Wl,--no-undefined]) 359*758e9fbaSOystein Eftevaag ADD_LINK_FLAG([-Wl,-z,noexecstack]) 360*758e9fbaSOystein Eftevaag ADD_LINK_FLAG([-Wl,-z,now]) 361*758e9fbaSOystein Eftevaag ADD_LINK_FLAG([-Wl,-z,relro]) 362*758e9fbaSOystein Eftevaag ]) 363*758e9fbaSOystein Eftevaag 364*758e9fbaSOystein EftevaagAC_ARG_ENABLE([weakcrypto], 365*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--disable-weakcrypto], 366*758e9fbaSOystein Eftevaag [Disable crypto algorithms considered weak])],, 367*758e9fbaSOystein Eftevaag [enable_weakcrypto=no]) 368*758e9fbaSOystein EftevaagAS_IF([test "x$enable_weakcrypto" = "xyes"], 369*758e9fbaSOystein Eftevaag AC_DEFINE([DISABLE_WEAK_CRYPTO],[1],[DISABLE WEAK CRYPTO ALGORITHMS])) 370*758e9fbaSOystein Eftevaag 371*758e9fbaSOystein EftevaagAC_SUBST([PATH]) 372*758e9fbaSOystein Eftevaag 373*758e9fbaSOystein Eftevaagdnl --------- Physical TPM device ----------------------- 374*758e9fbaSOystein Eftevaag 375*758e9fbaSOystein EftevaagAC_ARG_WITH([ptpm], 376*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-ptpm=<device>],[TPM device])], 377*758e9fbaSOystein Eftevaag [AS_IF([test \( -w "$with_ptpm" \) -a \( -r "$with_ptpm" \)], 378*758e9fbaSOystein Eftevaag [AC_MSG_RESULT([success]) 379*758e9fbaSOystein Eftevaag AC_SUBST([PTPM],[$with_ptpm]) 380*758e9fbaSOystein Eftevaag AX_NORMALIZE_PATH([with_ptpm]) 381*758e9fbaSOystein Eftevaag with_ptpm_set=yes], 382*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([TPM device provided does not exist or is not writable])])], 383*758e9fbaSOystein Eftevaag [with_ptpm_set=no]) 384*758e9fbaSOystein EftevaagAM_CONDITIONAL([PTPM],[test "x$with_ptpm_set" = "xyes"]) 385*758e9fbaSOystein Eftevaag 386*758e9fbaSOystein EftevaagAC_ARG_WITH([ptpmtests], 387*758e9fbaSOystein Eftevaag [AS_HELP_STRING([--with-ptpmtests=<case>],[Comma-separated values of possible tests: destructive,mandatory,optional] default is mandatory)], 388*758e9fbaSOystein Eftevaag [AS_IF([test "x" = x$(echo $with_ptpmtests | sed 's/destructive//g' | sed 's/mandatory//g' | sed 's/optional//g' | sed 's/,//g') ], 389*758e9fbaSOystein Eftevaag [AC_MSG_RESULT([success]) 390*758e9fbaSOystein Eftevaag with_ptpmtests_set=yes], 391*758e9fbaSOystein Eftevaag [AC_MSG_ERROR([Illegal test type for pTPM tests.])])], 392*758e9fbaSOystein Eftevaag [with_ptpmtests="mandatory"]) 393*758e9fbaSOystein Eftevaag 394*758e9fbaSOystein Eftevaagif echo $with_ptpmtests | grep destructive > /dev/null; then 395*758e9fbaSOystein Eftevaag enable_ptpm_destructive="yes" 396*758e9fbaSOystein Eftevaagfi 397*758e9fbaSOystein EftevaagAM_CONDITIONAL([PTPMDESTRUCTIVE],[test "x$enable_ptpm_destructive" = "xyes"]) 398*758e9fbaSOystein Eftevaag 399*758e9fbaSOystein Eftevaagif echo $with_ptpmtests | grep optional > /dev/null; then 400*758e9fbaSOystein Eftevaag enable_ptpm_optional="yes" 401*758e9fbaSOystein Eftevaagfi 402*758e9fbaSOystein EftevaagAM_CONDITIONAL([PTPMOPTIONAL],[test "x$enable_ptpm_optional" = "xyes"]) 403*758e9fbaSOystein Eftevaag 404*758e9fbaSOystein Eftevaagif echo $with_ptpmtests | grep mandatory > /dev/null; then 405*758e9fbaSOystein Eftevaag enable_ptpm_mandatory="yes" 406*758e9fbaSOystein Eftevaagfi 407*758e9fbaSOystein EftevaagAM_CONDITIONAL([PTPMMANDATORY],[test "x$enable_ptpm_mandatory" = "xyes"]) 408*758e9fbaSOystein Eftevaag 409*758e9fbaSOystein EftevaagAM_CONDITIONAL([TESTPTPM],[test "x$with_ptpm_set" = xyes]) 410*758e9fbaSOystein Eftevaag 411*758e9fbaSOystein Eftevaagdnl --------- Doxy Gen ----------------------- 412*758e9fbaSOystein EftevaagDX_DOXYGEN_FEATURE(ON) 413*758e9fbaSOystein EftevaagDX_DOT_FEATURE(OFF) 414*758e9fbaSOystein EftevaagDX_HTML_FEATURE(ON) 415*758e9fbaSOystein EftevaagDX_CHM_FEATURE(OFF) 416*758e9fbaSOystein EftevaagDX_CHI_FEATURE(OFF) 417*758e9fbaSOystein EftevaagDX_MAN_FEATURE(ON) 418*758e9fbaSOystein EftevaagDX_RTF_FEATURE(ON) 419*758e9fbaSOystein EftevaagDX_XML_FEATURE(OFF) 420*758e9fbaSOystein EftevaagDX_PDF_FEATURE(OFF) 421*758e9fbaSOystein EftevaagDX_PS_FEATURE(OFF) 422*758e9fbaSOystein EftevaagDX_INIT_DOXYGEN($PACKAGE_NAME, [Doxyfile], [doxygen-doc]) 423*758e9fbaSOystein EftevaagAM_CONDITIONAL(DOXYMAN, [test $DX_FLAG_man -eq 1]) 424*758e9fbaSOystein Eftevaag 425*758e9fbaSOystein EftevaagAS_IF([test "x$enable_doxygen_doc" != xno], 426*758e9fbaSOystein Eftevaag [ERROR_IF_NO_PROG([doxygen])]) 427*758e9fbaSOystein Eftevaag 428*758e9fbaSOystein EftevaagAX_CODE_COVERAGE 429*758e9fbaSOystein Eftevaagm4_ifdef([_AX_CODE_COVERAGE_RULES], 430*758e9fbaSOystein Eftevaag [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])], 431*758e9fbaSOystein Eftevaag [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])]) 432*758e9fbaSOystein EftevaagAX_ADD_AM_MACRO_STATIC([]) 433*758e9fbaSOystein Eftevaag 434*758e9fbaSOystein EftevaagAM_COND_IF([ENABLE_TCTI_DEVICE], [], 435*758e9fbaSOystein Eftevaag [AM_COND_IF([ENABLE_TCTI_MSSIM], [], 436*758e9fbaSOystein Eftevaag [AM_COND_IF([ENABLE_TCTI_FUZZING], [], 437*758e9fbaSOystein Eftevaag [AC_MSG_WARN("No build-in TCTI module enabled")])])]) 438*758e9fbaSOystein Eftevaag 439*758e9fbaSOystein EftevaagAM_COND_IF([ENABLE_TCTI_FUZZING], [ 440*758e9fbaSOystein Eftevaag AM_COND_IF([ENABLE_TCTI_DEVICE], 441*758e9fbaSOystein Eftevaag AC_MSG_ERROR([Fuzzing TCTI is meant to be built as the only TCTI: use --disable-tcti-device --disable-tcti-mssim])) 442*758e9fbaSOystein Eftevaag AM_COND_IF([ENABLE_TCTI_MSSIM], 443*758e9fbaSOystein Eftevaag AC_MSG_ERROR([Fuzzing TCTI is meant to be built as the only TCTI: use --disable-tcti-device --disable-tcti-mssim])) 444*758e9fbaSOystein Eftevaag AS_IF([test "x$CC" != "xclang"], 445*758e9fbaSOystein Eftevaag AC_MSG_ERROR("Fuzzing TCTI can only be used with clang"), []) 446*758e9fbaSOystein Eftevaag ], []) 447*758e9fbaSOystein Eftevaag 448*758e9fbaSOystein EftevaagAC_OUTPUT 449*758e9fbaSOystein Eftevaag 450*758e9fbaSOystein EftevaagAC_MSG_RESULT([ 451*758e9fbaSOystein Eftevaag $PACKAGE_NAME $VERSION 452*758e9fbaSOystein Eftevaag esapi: $enable_esapi 453*758e9fbaSOystein Eftevaag fapi: $enable_fapi 454*758e9fbaSOystein Eftevaag tctidefaultmodule: $with_tctidefaultmodule 455*758e9fbaSOystein Eftevaag tctidefaultconfig: $with_tctidefaultconfig 456*758e9fbaSOystein Eftevaag unit: $enable_unit 457*758e9fbaSOystein Eftevaag fuzzing: $with_fuzzing 458*758e9fbaSOystein Eftevaag debug: $enable_debug 459*758e9fbaSOystein Eftevaag maxloglevel: $with_maxloglevel 460*758e9fbaSOystein Eftevaag doxygen: $DX_FLAG_doc $enable_doxygen_doc 461*758e9fbaSOystein Eftevaag tcti-device-async: $enable_tcti_device_async 462*758e9fbaSOystein Eftevaag tcti-partial-read: $enable_tcti_partial_reads 463*758e9fbaSOystein Eftevaag crypto backend: $with_crypto 464*758e9fbaSOystein Eftevaag sysconfdir: $sysconfdir 465*758e9fbaSOystein Eftevaag localstatedir: $localstatedir 466*758e9fbaSOystein Eftevaag runstatedir: $runstatedir 467*758e9fbaSOystein Eftevaag sysusersdir: $sysusersdir 468*758e9fbaSOystein Eftevaag tmpfilesdir: $tmpfilesdir 469*758e9fbaSOystein Eftevaag userstatedir: [\$HOME/]$with_userstatedir 470*758e9fbaSOystein Eftevaag]) 471