xref: /aosp_15_r20/external/tpm2-tss/configure.ac (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
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