]> git.proxmox.com Git - libtpms.git/blob - configure.ac
pkg-config: add cryptolib to libtpms.pc
[libtpms.git] / configure.ac
1 #
2 # configure.in
3 #
4 # See the LICENSE file for the license associated with this file.
5
6 AC_INIT([libtpms], [0.6.0])
7 AC_PREREQ(2.12)
8 AC_CONFIG_SRCDIR(Makefile.am)
9 AC_CONFIG_AUX_DIR([.])
10 AM_CONFIG_HEADER(config.h)
11
12 AC_CONFIG_MACRO_DIR([m4])
13 AC_CANONICAL_TARGET
14 AM_INIT_AUTOMAKE([foreign 1.6 subdir-objects])
15
16 LIBTPMS_VER_MAJOR=`echo $PACKAGE_VERSION | awk -F. '{print $1}'`
17 LIBTPMS_VER_MINOR=`echo $PACKAGE_VERSION | awk -F. '{print $2}'`
18 LIBTPMS_VER_MICRO=`echo $PACKAGE_VERSION | awk -F. '{print $3}'`
19 LIBTPMS_VERSION=$PACKAGE_VERSION
20 LIBTPMS_VERSION_INFO=`expr $LIBTPMS_VER_MAJOR + $LIBTPMS_VER_MINOR`:$LIBTPMS_VER_MICRO:$LIBTPMS_VER_MINOR
21
22 AC_SUBST([LIBTPMS_VER_MAJOR])
23 AC_SUBST([LIBTPMS_VER_MINOR])
24 AC_SUBST([LIBTPMS_VER_MICRO])
25 AC_SUBST([LIBTPMS_VERSION])
26 AC_SUBST([LIBTPMS_VERSION_INFO])
27
28 DEBUG=""
29 AC_MSG_CHECKING([for debug-enabled build])
30 AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [create a debug build]),
31 [if test "$enableval" = "yes"; then
32 DEBUG="yes"
33 AC_MSG_RESULT([yes])
34 else
35 DEBUG="no"
36 AC_MSG_RESULT([no])
37 fi],
38 [DEBUG="no",
39 AC_MSG_RESULT([no])])
40
41 # If the user has not set CFLAGS, do something appropriate
42 test_CFLAGS=${CFLAGS+set}
43 if test "$test_CFLAGS" != set; then
44 if test "$DEBUG" == "yes"; then
45 CFLAGS="-O0 -g -DDEBUG"
46 else
47 CFLAGS="-g -O2"
48 fi
49 elif test "$DEBUG" == "yes"; then
50 CFLAGS="$CFLAGS -O0 -g -DDEBUG"
51 fi
52
53 debug_defines=
54 if test "$DEBUG" == "yes"; then
55 debug_defines="-DTPM_DEBUG"
56 # Enable the following only if ABSOLUTELY necessary
57 # volatile state will be written and behavior changes
58 #"-DTPM_VOLATILE_STORE"
59 fi
60 AC_SUBST(DEBUG_DEFINES, $debug_defines)
61
62 cryptolib=freebl
63 AC_SUBST(cryptolib, $cryptolib)
64
65 AC_ARG_WITH([openssl],
66 AC_HELP_STRING([--with-openssl],
67 [build libtpms with openssl library]),
68 [AC_CHECK_LIB(crypto,
69 [AES_set_encrypt_key],
70 [],
71 AC_MSG_ERROR(Faulty openssl crypto library))
72 AC_CHECK_HEADERS([openssl/aes.h],[],
73 AC_MSG_ERROR(Is openssl-devel/libssl-dev installed?))
74 AC_MSG_RESULT([Building with openssl crypto library])
75 cryptolib=openssl
76 ]
77 )
78
79 case "$cryptolib" in
80 freebl)
81 AM_CONDITIONAL(LIBTPMS_USE_FREEBL, true)
82 AM_CONDITIONAL(LIBTPMS_USE_OPENSSL, false)
83 AC_DEFINE([USE_FREEBL_CRYPTO_LIBRARY],
84 [1],
85 [use freebl crypto library])
86
87 CFLAGS_save=$CFLAGS
88
89 AC_CHECK_HEADERS([gmp.h],[],
90 AC_MSG_ERROR(gmp-devel/libgmp-dev is bad))
91
92 CFLAGS="$(nspr-config --cflags)"
93 if test $? -ne 0; then
94 AC_MSG_ERROR(Could not find nspr-config. Is nspr-devel/libnspr4-dev installed?)
95 fi
96 CPPFLAGS=$CFLAGS
97 AC_CHECK_HEADERS([plbase64.h],[],
98 AC_MSG_ERROR(You must install nspr-devel/libnspr4-dev))
99
100 CFLAGS="$(nss-config --cflags) $CFLAGS"
101 if test $? -ne 0; then
102 AC_MSG_ERROR(Could not find nss-config. Is nss-devel/libnss3-dev installed?)
103 fi
104 CPPFLAGS="$CPPFLAGS $CFLAGS"
105 AC_CHECK_HEADERS([sslerr.h],[],
106 AC_MSG_ERROR(nss-devel/libnss3-dev is bad))
107
108 # Check for missing headers
109 AC_CHECK_HEADERS([blapi.h],[],
110 AC_MSG_ERROR(nss-softokn-freebl-devel/libnss3-dev is missing blapi.h))
111 # Check for missing freebl library or missing library functions
112 LIBS_save="$LIBS"
113 LIBS="$(nss-config --libs) $(nspr-config --libs)"
114 AC_SEARCH_LIBS([AES_CreateContext], [freebl],[],
115 AC_MSG_ERROR("Could not find AES_CreateContext(). Is nss-softokn-freebl-devel/libnss3-dev installed?"),
116 [])
117 LIBS="$LIBS_save"
118 CFLAGS="$CFLAGS_save $CFLAGS"
119 ;;
120 openssl)
121 AM_CONDITIONAL(LIBTPMS_USE_FREEBL, false)
122 AM_CONDITIONAL(LIBTPMS_USE_OPENSSL, true)
123 AC_DEFINE([USE_OPENSSL_CRYPTO_LIBRARY],
124 [1],
125 [use openssl crypto library])
126 ;;
127 esac
128
129 AC_ARG_WITH([tpm2],
130 AC_HELP_STRING([--with-tpm2],
131 [build libtpms with TPM2 support (experimental)]),
132 AC_MSG_RESULT([Building with TPM2 support])
133 if test "x$cryptolib" = "xfreebl"; then
134 AC_MSG_ERROR([TPM2 support requires openssl crypto library])
135 fi
136 AC_DEFINE_UNQUOTED([WITH_TPM2], 1, [whether to support TPM2])
137 AM_CONDITIONAL(WITH_TPM2, true),
138 AM_CONDITIONAL(WITH_TPM2, false)
139 )
140
141 AC_ARG_ENABLE([sanitizers], AS_HELP_STRING([--enable-sanitizers], [Enable address sanitizing]),
142 [SANITIZERS="-fsanitize=address,undefined"], [])
143 AC_ARG_ENABLE([fuzzer], AS_HELP_STRING([--enable-fuzzer], [Enable fuzzer]),
144 [FUZZER="$SANITIZERS -fsanitize=fuzzer"
145 AM_CONDITIONAL(WITH_FUZZER, true)],
146 [AM_CONDITIONAL(WITH_FUZZER, false)])
147 AC_SUBST([SANITIZERS])
148 AC_SUBST([FUZZER])
149
150 LT_INIT
151 AC_PROG_CC
152 AC_PROG_INSTALL
153 AC_PROG_LIBTOOL
154
155 #AM_GNU_GETTEXT_VERSION([0.15])
156 #AM_GNU_GETTEXT([external])
157
158 AC_HEADER_STDC
159 AC_C_CONST
160 AC_C_INLINE
161
162 AC_TYPE_SIZE_T
163
164 # Some version of gcc fail with -Wstack-protector enabled
165 TMP="$($CC -fstack-protector-strong 2>&1)"
166 if echo $TMP | $GREP 'unrecognized command line option' >/dev/null; then
167 HARDENING_CFLAGS="-fstack-protector "
168 else
169 HARDENING_CFLAGS="-fstack-protector-strong "
170 fi
171
172 dnl Must not have -O0 but must have a -O for -D_FORTIFY_SOURCE=2
173 TMP1="$(echo $CFLAGS | sed -n 's/.*\(-O0\).*/\1/p')"
174 TMP2="$(echo $CFLAGS | sed -n 's/.*\(-O\).*/\1/p')"
175 if test -z "$TMP1" && test -n "$TPM2"; then
176 HARDENING_CFLAGS+="-D_FORTIFY_SOURCE=2 "
177 fi
178 dnl Check ld for 'relro' and 'now'
179 if $LD --help 2>&1 | $GREP '\-z relro ' > /dev/null; then
180 HARDENING_LDFLAGS+="-Wl,-z,relro "
181 fi
182 if $LD --help 2>&1 | $GREP '\-z now ' > /dev/null; then
183 HARDENING_LDFLAGS+="-Wl,-z,now "
184 fi
185 AC_SUBST([HARDENING_CFLAGS])
186 AC_SUBST([HARDENING_LDFLAGS])
187
188 if test "$test_CFLAGS" != set; then
189 CFLAGS="$CFLAGS -Wall -Werror -Wreturn-type -Wsign-compare -Wno-self-assign"
190 fi
191
192 AC_CONFIG_FILES(Makefile \
193 dist/libtpms.spec \
194 include/Makefile \
195 include/libtpms/Makefile \
196 include/libtpms/tpm_library.h \
197 man/Makefile \
198 man/man3/Makefile \
199 src/Makefile \
200 libtpms.pc \
201 tests/Makefile)
202 AC_OUTPUT
203
204 if test -z "$enable_debug" ; then
205 enable_debug="no"
206 fi
207 if test -z "$with_tpm2"; then
208 with_tpm2=no
209 fi
210
211 echo
212 echo "CFLAGS=$CFLAGS"
213 echo "HARDENING_CFLAGS=$HARDENING_CFLAGS"
214 echo "HARDENING_LDFLAGS=$HARDENING_LDFLAGS"
215 echo "LDFLAGS=$LDFLAGS"
216 echo
217 echo "Version to build : $PACKAGE_VERSION"
218 echo "Crypto library : $cryptolib"
219 echo "Debug build : $enable_debug"
220 echo "With TPM2 support : $with_tpm2"
221 echo
222 echo