]> git.proxmox.com Git - libtpms.git/blob - configure.ac
build-sys: Add AC_CONFIG_AUX_DIR to configure.ac
[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
64 AC_ARG_WITH([openssl],
65 AC_HELP_STRING([--with-openssl],
66 [build libtpms with openssl library]),
67 [AC_CHECK_LIB(crypto,
68 [AES_set_encrypt_key],
69 [],
70 AC_MSG_ERROR(Faulty openssl crypto library))
71 AC_CHECK_HEADERS([openssl/aes.h],[],
72 AC_MSG_ERROR(Is openssl-devel/libssl-dev installed?))
73 AC_MSG_RESULT([Building with openssl crypto library])
74 cryptolib=openssl
75 ]
76 )
77
78 case "$cryptolib" in
79 freebl)
80 AM_CONDITIONAL(LIBTPMS_USE_FREEBL, true)
81 AM_CONDITIONAL(LIBTPMS_USE_OPENSSL, false)
82 AC_DEFINE([USE_FREEBL_CRYPTO_LIBRARY],
83 [1],
84 [use freebl crypto library])
85
86 CFLAGS_save=$CFLAGS
87
88 AC_CHECK_HEADERS([gmp.h],[],
89 AC_MSG_ERROR(gmp-devel/libgmp-dev is bad))
90
91 CFLAGS="$(nspr-config --cflags)"
92 if test $? -ne 0; then
93 AC_MSG_ERROR(Could not find nspr-config. Is nspr-devel/libnspr4-dev installed?)
94 fi
95 CPPFLAGS=$CFLAGS
96 AC_CHECK_HEADERS([plbase64.h],[],
97 AC_MSG_ERROR(You must install nspr-devel/libnspr4-dev))
98
99 CFLAGS="$(nss-config --cflags) $CFLAGS"
100 if test $? -ne 0; then
101 AC_MSG_ERROR(Could not find nss-config. Is nss-devel/libnss3-dev installed?)
102 fi
103 CPPFLAGS="$CPPFLAGS $CFLAGS"
104 AC_CHECK_HEADERS([sslerr.h],[],
105 AC_MSG_ERROR(nss-devel/libnss3-dev is bad))
106
107 # Check for missing headers
108 AC_CHECK_HEADERS([blapi.h],[],
109 AC_MSG_ERROR(nss-softokn-freebl-devel/libnss3-dev is missing blapi.h))
110 # Check for missing freebl library or missing library functions
111 LIBS_save="$LIBS"
112 LIBS="$(nss-config --libs) $(nspr-config --libs)"
113 AC_SEARCH_LIBS([AES_CreateContext], [freebl],[],
114 AC_MSG_ERROR("Could not find AES_CreateContext(). Is nss-softokn-freebl-devel/libnss3-dev installed?"),
115 [])
116 LIBS="$LIBS_save"
117 CFLAGS="$CFLAGS_save $CFLAGS"
118 ;;
119 openssl)
120 AM_CONDITIONAL(LIBTPMS_USE_FREEBL, false)
121 AM_CONDITIONAL(LIBTPMS_USE_OPENSSL, true)
122 AC_DEFINE([USE_OPENSSL_CRYPTO_LIBRARY],
123 [1],
124 [use openssl crypto library])
125 ;;
126 esac
127
128 LT_INIT
129 AC_PROG_CC
130 AC_PROG_INSTALL
131 AC_PROG_LIBTOOL
132
133 #AM_GNU_GETTEXT_VERSION([0.15])
134 #AM_GNU_GETTEXT([external])
135
136 AC_HEADER_STDC
137 AC_C_CONST
138 AC_C_INLINE
139
140 AC_TYPE_SIZE_T
141
142 # Some version of gcc fail with -Wstack-protector enabled
143 TMP="$($CC -fstack-protector-strong 2>&1)"
144 if echo $TMP | $GREP 'unrecognized command line option' >/dev/null; then
145 HARDENING_CFLAGS="-fstack-protector "
146 else
147 HARDENING_CFLAGS="-fstack-protector-strong "
148 fi
149
150 dnl Must not have -O0 but must have a -O for -D_FORTIFY_SOURCE=2
151 TMP1="$(echo $CFLAGS | sed -n 's/.*\(-O0\).*/\1/p')"
152 TMP2="$(echo $CFLAGS | sed -n 's/.*\(-O\).*/\1/p')"
153 if test -z "$TMP1" && test -n "$TPM2"; then
154 HARDENING_CFLAGS+="-D_FORTIFY_SOURCE=2 "
155 fi
156 dnl Check ld for 'relro' and 'now'
157 if $LD --help 2>&1 | $GREP '\-z relro ' > /dev/null; then
158 HARDENING_CFLAGS+="-Wl,-z,relro "
159 fi
160 if $LD --help 2>&1 | $GREP '\-z now ' > /dev/null; then
161 HARDENING_CFLAGS+="-Wl,-z,now "
162 fi
163 AC_SUBST([HARDENING_CFLAGS])
164
165 if test "$test_CFLAGS" != set; then
166 CFLAGS="$CFLAGS -Wall -Werror -Wreturn-type -Wsign-compare"
167 fi
168
169 AC_CONFIG_FILES(Makefile \
170 dist/libtpms.spec \
171 include/Makefile \
172 include/libtpms/Makefile \
173 include/libtpms/tpm_library.h \
174 man/Makefile \
175 man/man3/Makefile \
176 src/Makefile \
177 libtpms.pc \
178 tests/Makefile)
179 AC_OUTPUT
180
181 if test -z "$enable_debug" ; then
182 enable_debug="no"
183 fi
184
185 echo
186 echo "CFLAGS=$CFLAGS"
187 echo "HARDENING_CFLAGS=$HARDENING_CFLAGS"
188 echo "LDFLAGS=$LDFLAGS"
189 echo
190 echo "Version to build : $PACKAGE_VERSION"
191 echo "Crypto library : $cryptolib"
192 echo "Debug build : $enable_debug"
193 echo
194 echo