blob: 9ce1b9a077ec953c44b5d4a248009facee136378 [file] [log] [blame]
Cullen Jennings235513a2005-09-21 22:51:36 +00001dnl Process this file with autoconf to produce a configure script.
Pascal Bühler34acba62017-01-19 10:57:30 +01002AC_INIT([libsrtp2], [2.1.0-pre], [https://github.com/cisco/libsrtp/issues])
Cullen Jennings235513a2005-09-21 22:51:36 +00003
David McGrewb67061f2005-09-28 14:23:06 +00004dnl Must come before AC_PROG_CC
5if test -z "$CFLAGS"; then
6 dnl Default value for CFLAGS if not specified.
Alexander Traud536bd512016-06-16 17:43:58 +02007 CFLAGS="-Wall -O4 -fexpensive-optimizations -funroll-loops"
David McGrewb67061f2005-09-28 14:23:06 +00008fi
9
Cullen Jennings235513a2005-09-21 22:51:36 +000010dnl Checks for programs.
Alexander Traud52c30db2016-06-16 17:24:18 +020011m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
Cullen Jennings235513a2005-09-21 22:51:36 +000012AC_PROG_RANLIB
13AC_PROG_CC
David McGrewb67061f2005-09-28 14:23:06 +000014AC_PROG_INSTALL
Cullen Jennings235513a2005-09-21 22:51:36 +000015
Marcus Sundbergfaf84ca2007-05-23 17:24:52 +000016dnl Check the byte order
17AC_C_BIGENDIAN
18
19AC_CANONICAL_HOST
20
21dnl check host_cpu type, set defines appropriately
22case $host_cpu in
Jonathan Lennoxc7528162012-04-26 23:17:21 +000023 i*86 | x86_64 )
Marcus Sundbergfaf84ca2007-05-23 17:24:52 +000024 AC_DEFINE(CPU_CISC, 1,
25 [Define if building for a CISC machine (e.g. Intel).])
26 AC_DEFINE(HAVE_X86, 1,
27 [Define to use X86 inlined assembly code]);;
28 * )
Marcus Sundbergfaf84ca2007-05-23 17:24:52 +000029 AC_DEFINE(CPU_RISC, 1,
30 [Define if building for a RISC machine (assume slow byte access).])
Marcus Sundbergfaf84ca2007-05-23 17:24:52 +000031 ;;
32esac
33
34dnl Check if we are on a Windows platform.
35case $host_os in
36 *cygwin*|*mingw* )
37 EXE=.exe
38 HOST_IS_WINDOWS=yes
39 ;;
40 * )
41 EXE=""
42 ;;
43esac
44AC_SUBST(EXE) # define executable suffix; this is needed for `make clean'
45
Cullen Jennings235513a2005-09-21 22:51:36 +000046
47dnl Checks for header files.
48AC_HEADER_STDC
49AC_CHECK_HEADERS(stdlib.h)
50AC_CHECK_HEADERS(unistd.h)
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000051AC_CHECK_HEADERS(byteswap.h)
Cullen Jennings235513a2005-09-21 22:51:36 +000052AC_CHECK_HEADERS(stdint.h)
53AC_CHECK_HEADERS(sys/uio.h)
Randell Jesupaa851352005-09-28 22:36:05 +000054AC_CHECK_HEADERS(inttypes.h)
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000055AC_CHECK_HEADERS(sys/types.h)
Cullen Jennings235513a2005-09-21 22:51:36 +000056AC_CHECK_HEADERS(machine/types.h)
57AC_CHECK_HEADERS(sys/int_types.h)
58
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000059dnl socket() and friends
60AC_CHECK_HEADERS(sys/socket.h netinet/in.h arpa/inet.h)
61AC_CHECK_HEADERS(windows.h, [AC_CHECK_HEADERS(winsock2.h)])
62
Randell Jesupaa851352005-09-28 22:36:05 +000063AC_CHECK_TYPES([int8_t,uint8_t,int16_t,uint16_t,int32_t,uint32_t,uint64_t])
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000064AC_CHECK_SIZEOF(unsigned long)
65AC_CHECK_SIZEOF(unsigned long long)
Cullen Jennings235513a2005-09-21 22:51:36 +000066
67dnl Checks for typedefs, structures, and compiler characteristics.
68AC_C_CONST
69AC_C_INLINE
70AC_TYPE_SIZE_T
71
72dnl Checks for library functions.
Jonathan Lennox3f7fc222010-05-17 19:32:02 +000073AC_CHECK_FUNCS(socket inet_aton usleep sigaction)
David McGrewb67061f2005-09-28 14:23:06 +000074
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000075dnl Find socket function if not found yet.
76if test "x$ac_cv_func_socket" = "xno"; then
77 AC_CHECK_LIB(socket, socket)
78 AC_MSG_CHECKING([for socket in -lwsock32])
79 SAVELIBS="$LIBS"
80 LIBS="$LIBS -lwsock32"
Alexander Traudd80ef6c2016-06-16 17:31:35 +020081 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000082#include <winsock2.h>
Alexander Traudd80ef6c2016-06-16 17:31:35 +020083]], [[
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000084socket(0, 0, 0);
Alexander Traudd80ef6c2016-06-16 17:31:35 +020085]])],[ac_cv_func_socket=yes
86 AC_MSG_RESULT(yes)],[LIBS="$SAVELIBS"
87 AC_MSG_RESULT(no)])
Marcus Sundberg8046c3a2005-10-02 20:02:05 +000088fi
Cullen Jennings235513a2005-09-21 22:51:36 +000089
David McGrewb67061f2005-09-28 14:23:06 +000090AC_MSG_CHECKING(whether to compile in debugging)
91AC_ARG_ENABLE(debug,
92 [AS_HELP_STRING([--disable-debug],
93 [do not compile in dynamic debugging system])],
94 [], enable_debug=yes)
95if test "$enable_debug" = "yes"; then
96 AC_DEFINE(ENABLE_DEBUGGING, 1,
97 [Define to compile in dynamic debugging system.])
Cullen Jennings235513a2005-09-21 22:51:36 +000098fi
David McGrewb67061f2005-09-28 14:23:06 +000099AC_MSG_RESULT($enable_debug)
Cullen Jennings235513a2005-09-21 22:51:36 +0000100
David McGrewb67061f2005-09-28 14:23:06 +0000101AC_MSG_CHECKING(whether to use ISMAcryp code)
102AC_ARG_ENABLE(generic-aesicm,
103 [AS_HELP_STRING([--enable-generic-aesicm],
104 [compile in changes for ISMAcryp])],
105 [], enable_generic_aesicm=no)
106if test "$enable_generic_aesicm" = "yes"; then
107 AC_DEFINE(GENERIC_AESICM, 1, [Define this to use ISMAcryp code.])
Cullen Jennings235513a2005-09-21 22:51:36 +0000108fi
David McGrewb67061f2005-09-28 14:23:06 +0000109AC_MSG_RESULT($enable_generic_aesicm)
Cullen Jennings235513a2005-09-21 22:51:36 +0000110
Michael Thomas (malinka)1d4460d2016-06-04 19:59:31 -0400111PKG_PROG_PKG_CONFIG
112
jfigusa14b5a02013-03-29 12:24:12 -0400113AC_MSG_CHECKING(whether to leverage OpenSSL crypto)
114AC_ARG_ENABLE(openssl,
115 [AS_HELP_STRING([--enable-openssl],
116 [compile in OpenSSL crypto engine])],
117 [], enable_openssl=no)
jfigus2b486652014-07-24 15:01:41 -0400118AC_MSG_RESULT($enable_openssl)
jfigusa14b5a02013-03-29 12:24:12 -0400119if test "$enable_openssl" = "yes"; then
jfigus038d2cf2015-05-11 14:10:11 -0400120 AC_MSG_CHECKING(for user specified OpenSSL directory)
121 AC_ARG_WITH(openssl-dir,
122 [AS_HELP_STRING([--with-openssl-dir], [Location of OpenSSL installation])],
123 [openssl_dir="$withval"], openssl_dir="")
124
Michael Thomas (malinka)df9fe1a2016-06-04 20:00:00 -0400125 LDFLAGS="$LDFLAGS -L$openssl_dir/lib $($PKG_CONFIG --libs openssl)";
126 CFLAGS="$CFLAGS -I$openssl_dir/include $($PKG_CONFIG --cflags openssl)";
Cullen Jenningse1de50f2013-05-22 12:27:28 -0600127
jfigusb5fad5f2015-02-26 12:25:08 -0500128 AC_CHECK_LIB([dl], [dlopen], [],
jfigus13fd6942015-03-02 09:09:13 -0500129 [AC_MSG_WARN([can't find libdl])])
jfigusb5fad5f2015-02-26 12:25:08 -0500130 AC_CHECK_LIB([z], [inflate], [],
jfigus13fd6942015-03-02 09:09:13 -0500131 [AC_MSG_WARN([can't find libz])])
jfigusa14b5a02013-03-29 12:24:12 -0400132 AC_CHECK_LIB([crypto], [EVP_EncryptInit], [],
jfigus5b22e372013-05-09 09:23:26 -0400133 [AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
134 AC_CHECK_LIB([crypto], [EVP_aes_128_ctr], [],
135 [AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
jfigus7882dd92013-08-02 16:08:23 -0400136 AC_CHECK_LIB([crypto], [EVP_aes_128_gcm], [],
137 [AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
jfigusa14b5a02013-03-29 12:24:12 -0400138 AC_DEFINE(OPENSSL, 1, [Define this to use OpenSSL crypto.])
jfigus7882dd92013-08-02 16:08:23 -0400139 AES_ICM_OBJS="crypto/cipher/aes_icm_ossl.o crypto/cipher/aes_gcm_ossl.o"
jfigus0d3a2682013-04-02 15:42:37 -0400140 HMAC_OBJS=crypto/hash/hmac_ossl.o
141 USE_OPENSSL=1
142 AC_SUBST(USE_OPENSSL)
jfigus038d2cf2015-05-11 14:10:11 -0400143
144 AC_MSG_CHECKING(whether to leverage OpenSSL KDF algorithm)
145 AC_ARG_ENABLE(openssl-kdf,
146 [AS_HELP_STRING([--enable-openssl-kdf], [Use OpenSSL KDF algorithm])],
147 [], enable_openssl_kdf=no)
148 AC_MSG_RESULT($enable_openssl_kdf)
149 if test "$enable_openssl_kdf" = "yes"; then
150 AC_CHECK_LIB([crypto], [kdf_srtp], [],
151 [AC_MSG_FAILURE([can't find openssl KDF lib])])
152 AC_DEFINE(OPENSSL_KDF, 1, [Define this to use OpenSSL KDF for SRTP.])
153 fi
jfigusa14b5a02013-03-29 12:24:12 -0400154else
jfigusa3127b82014-11-19 14:46:52 -0500155 AES_ICM_OBJS="crypto/cipher/aes_icm.o crypto/cipher/aes.o"
jfigus0d3a2682013-04-02 15:42:37 -0400156 HMAC_OBJS="crypto/hash/hmac.o crypto/hash/sha1.o"
jfigusa14b5a02013-03-29 12:24:12 -0400157fi
jfigus0d3a2682013-04-02 15:42:37 -0400158AC_SUBST(AES_ICM_OBJS)
jfigus0d3a2682013-04-02 15:42:37 -0400159AC_SUBST(HMAC_OBJS)
jfigusa14b5a02013-03-29 12:24:12 -0400160
Bernardo Torres79e38ae2014-10-10 05:29:36 -0300161dnl Checking for PCAP
Bernardo Torresb3c51422014-10-14 12:40:09 -0300162AC_CHECK_LIB([pcap],[pcap_create],
163 [PCAP=1
164 LIBS="-lpcap $LIBS"
165 HAVE_PCAP=1
166 AC_DEFINE(HAVE_PCAP, 1, [Define to 1 if you have the `pcap' library (-lpcap)])
167 AC_SUBST(HAVE_PCAP)
168])
Bernardo Torres79e38ae2014-10-10 05:29:36 -0300169
David McGrewb67061f2005-09-28 14:23:06 +0000170AC_MSG_CHECKING(whether to use stdout for error reporting)
171AC_ARG_ENABLE(stdout,
jfigus97a80f42014-11-04 14:15:40 -0500172 [AS_HELP_STRING([--enable-stdout], [use stdout for debug/error reporting])],
173 [], enable_stdout=no)
David McGrewb67061f2005-09-28 14:23:06 +0000174if test "$enable_stdout" = "yes"; then
175 AC_DEFINE(ERR_REPORTING_STDOUT, 1, [Define to use logging to stdout.])
Cullen Jennings235513a2005-09-21 22:51:36 +0000176fi
David McGrewb67061f2005-09-28 14:23:06 +0000177AC_MSG_RESULT($enable_stdout)
Cullen Jennings235513a2005-09-21 22:51:36 +0000178
David McGrewb67061f2005-09-28 14:23:06 +0000179AC_MSG_CHECKING(whether to use /dev/console for error reporting)
180AC_ARG_ENABLE(console,
181 [AS_HELP_STRING([--enable-console], [use /dev/console for error reporting])],
182 [], enable_console=no)
183if test "$enable_console" = "yes"; then
184 AC_DEFINE(USE_ERR_REPORTING_FILE, 1, [Write errors to this file])
185 AC_DEFINE(ERR_REPORTING_FILE, "/dev/console", [Report errors to this file.])
Cullen Jennings235513a2005-09-21 22:51:36 +0000186fi
David McGrewb67061f2005-09-28 14:23:06 +0000187AC_MSG_RESULT($enable_console)
Cullen Jennings235513a2005-09-21 22:51:36 +0000188
David McGrewfec49dd2005-09-23 19:34:11 +0000189AC_CONFIG_HEADER(crypto/include/config.h:config_in.h)
Cullen Jennings235513a2005-09-21 22:51:36 +0000190
Saúl Ibarra Corretgéb86063c2014-10-01 11:23:24 +0200191if test "x$PKG_CONFIG" != "x"; then
192 HAVE_PKG_CONFIG=1
jfigusd196e022014-11-20 16:43:44 -0500193 AC_CONFIG_FILES([libsrtp2.pc])
Saúl Ibarra Corretgéb86063c2014-10-01 11:23:24 +0200194else
195 HAVE_PKG_CONFIG=0
196fi
197AC_SUBST(HAVE_PKG_CONFIG)
198AC_CONFIG_FILES([Makefile crypto/Makefile doc/Makefile])
199AC_OUTPUT
Marcus Sundberg4ce29b22005-09-29 14:29:53 +0000200
201# This is needed when building outside the source dir.
Marcus Sundberg4ce29b22005-09-29 14:29:53 +0000202AS_MKDIR_P(crypto/cipher)
203AS_MKDIR_P(crypto/hash)
204AS_MKDIR_P(crypto/kernel)
205AS_MKDIR_P(crypto/math)
206AS_MKDIR_P(crypto/replay)
Marcus Sundberg4ce29b22005-09-29 14:29:53 +0000207AS_MKDIR_P(crypto/test)
208AS_MKDIR_P(doc)
209AS_MKDIR_P(srtp)
Marcus Sundberg4ce29b22005-09-29 14:29:53 +0000210AS_MKDIR_P(test)