forked from Mirrors/freeswitch
365 lines
12 KiB
Plaintext
365 lines
12 KiB
Plaintext
AC_PREREQ(2.59)
|
|
AC_INIT(srtp, 1.4.2, mcgrew@cisco.com)
|
|
AC_CONFIG_AUX_DIR(build)
|
|
AM_INIT_AUTOMAKE
|
|
|
|
CFLAGS="$CFLAGS $CONFIGURE_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $CONFIGURE_CXXFLAGS"
|
|
LDFLAGS="$LDFLAGS $CONFIGURE_LDFLAGS"
|
|
|
|
#Set default language
|
|
AC_LANG_C
|
|
# Checks for programs.
|
|
AC_PROG_CC
|
|
AC_PROG_AWK
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LIBTOOL
|
|
AX_COMPILER_VENDOR
|
|
|
|
# Optimization
|
|
AC_ARG_ENABLE(optimization,
|
|
[AC_HELP_STRING([--enable-optimization],[Set if you want us to add max optimising compiler flags])],[enable_optimizer="$enableval"],[enable_optimizer="no"])
|
|
|
|
if test "${enable_optimizer}" = "yes" ; then
|
|
AC_DEFINE([OPTIMZER],[],[Enable Optimization.])
|
|
AX_CC_MAXOPT
|
|
fi
|
|
|
|
# Enable debugging
|
|
AC_ARG_ENABLE(debug,
|
|
[AC_HELP_STRING([--enable-debug],[build with debug information])],[enable_debug="$enable_debug"],[enable_debug="yes"])
|
|
|
|
if test "${enable_debug}" = "yes"; then
|
|
AC_DEFINE([DEBUG],[],[Enable extra debugging.])
|
|
AX_CFLAGS_WARN_ALL_ANSI
|
|
fi
|
|
|
|
|
|
AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"])
|
|
|
|
IN_LINE=inline
|
|
|
|
case "$host" in
|
|
*-solaris2*)
|
|
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
|
SOLINK="-Bdynamic -dy -G"
|
|
new_AM_CFLAGS="-KPIC -DPIC"
|
|
new_AM_LDFLAGS="-R${prefix}/lib"
|
|
FUNC_DEF=__func__
|
|
IN_LINE=""
|
|
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
|
SOLINK="-Bdynamic -dy -G"
|
|
new_AM_CFLAGS="-fPIC -Wall -O4 -fexpensive-optimizations -funroll-loops"
|
|
new_AM_LDFLAGS=""
|
|
IN_LINE=inline
|
|
fi
|
|
DYNAMIC_LIB_EXTEN="so"
|
|
;;
|
|
*-darwin*)
|
|
if test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then
|
|
SOLINK="-dynamic -bundle -force-flat-namespace"
|
|
new_AM_CFLAGS="-DMACOSX"
|
|
new_AM_LDFLAGS=""
|
|
fi
|
|
DYNAMIC_LIB_EXTEN="dylib"
|
|
;;
|
|
x86_64-*-linux-gnu)
|
|
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
|
SOLINK="-Bdynamic -dy -G"
|
|
new_AM_CFLAGS="-KPIC -DPIC"
|
|
new_AM_LDFLAGS="-R${prefix}/lib"
|
|
FUNC_DEF=__func__
|
|
elif test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then
|
|
SOLINK="-shared -Xlinker -x"
|
|
new_AM_CFLAGS="-fPIC -Wall -O4 -fexpensive-optimizations -funroll-loops"
|
|
new_AM_LDFLAGS=""
|
|
fi
|
|
DYNAMIC_LIB_EXTEN="so"
|
|
;;
|
|
i*6-*-linux-gnu)
|
|
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
|
SOLINK="-Bdynamic -dy -G"
|
|
new_AM_CFLAGS="-KPIC -DPIC"
|
|
new_AM_LDFLAGS="-R${prefix}/lib"
|
|
FUNC_DEF=__func__
|
|
elif test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then
|
|
SOLINK="-shared -Xlinker -x"
|
|
new_AM_CFLAGS="-fpic -Wall -O4 -fexpensive-optimizations -funroll-loops"
|
|
new_AM_LDFLAGS=""
|
|
fi
|
|
DYNAMIC_LIB_EXTEN="so"
|
|
;;
|
|
i*6*-*-freebsd*)
|
|
SOLINK="-shared -Xlinker -x"
|
|
new_AM_CFLAGS="-fPIC -Wall -O4 -fexpensive-optimizations -funroll-loops"
|
|
new_AM_LDFLAGS=""
|
|
DYNAMIC_LIB_EXTEN="so"
|
|
;;
|
|
x86_64-*-freebsd*|amd64-*-freebsd*)
|
|
SOLINK="-shared -Xlinker -x"
|
|
new_AM_CFLAGS="-fPIC -Wall -O4 -fexpensive-optimizations -funroll-loops"
|
|
new_AM_LDFLAGS=""
|
|
DYNAMIC_LIB_EXTEN="so"
|
|
;;
|
|
esac
|
|
|
|
# Enable 64 bit build
|
|
AC_ARG_ENABLE(64,
|
|
[AC_HELP_STRING([--enable-64],[build with 64 bit support])],[enable_64="$enable_64"],[enable_64="no"])
|
|
|
|
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
|
if test "${enable_64}" = "yes"; then
|
|
new_AM_CFLAGS="$new_AM_CFLAGS -m64"
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(new_AM_CFLAGS)
|
|
AC_SUBST(new_AM_LDFLAGS)
|
|
AC_SUBST(SOLINK)
|
|
AC_SUBST(DYNAMIC_LIB_EXTEN)
|
|
if test "x$FUNC_DEF" != "x"; then
|
|
AC_DEFINE_UNQUOTED([__FUNCTION__],[$FUNC_DEF],[define it the right way ;)])
|
|
fi
|
|
AC_DEFINE_UNQUOTED([inline],[$IN_LINE],[sunpro is bad at inline])
|
|
|
|
|
|
AC_ARG_ENABLE(kernel-linux,
|
|
[AS_HELP_STRING([--enable-kernel-linux],
|
|
[build library to run in Linux kernel context])],
|
|
[], enable_kernel_linux=no)
|
|
AC_MSG_CHECKING(whether to build for Linux kernel context)
|
|
if test "$enable_kernel_linux" = "yes"; then
|
|
AC_DEFINE(SRTP_KERNEL, 1,
|
|
[Define to compile for kernel contexts.])
|
|
AC_DEFINE(SRTP_KERNEL_LINUX, 1,
|
|
[Define to compile for Linux kernel context.])
|
|
fi
|
|
AC_MSG_RESULT($enable_kernel_linux)
|
|
|
|
dnl Check for /dev/urandom
|
|
AC_CHECK_FILE(/dev/urandom, DEV_URANDOM=/dev/urandom,
|
|
[AC_CHECK_FILE(/dev/random, DEV_URANDOM=/dev/random)])
|
|
|
|
dnl Checks for header files.
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS(stdlib.h)
|
|
AC_CHECK_HEADERS(unistd.h)
|
|
AC_CHECK_HEADERS(stdint.h)
|
|
AC_CHECK_HEADERS(sys/uio.h)
|
|
AC_CHECK_HEADERS(inttypes.h)
|
|
AC_CHECK_HEADERS(sys/types.h)
|
|
AC_CHECK_HEADERS(machine/types.h)
|
|
AC_CHECK_HEADERS(sys/int_types.h)
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <inttypes.h>
|
|
#include <byteswap.h>
|
|
]],[[
|
|
uint64_t y = 0x1122334455667788LL;
|
|
bswap_64(y);
|
|
]])],byteswap_cv_bswap_64_usable=yes,byteswap_cv_bswap_64_usable=no)
|
|
|
|
if test "x${byteswap_cv_bswap_64_usable}" = "xyes" ; then
|
|
AC_DEFINE([HAVE_BYTESWAP_H],1,[define if you have a usable bswap_64 in byteswap.h])
|
|
fi
|
|
|
|
dnl socket() and friends
|
|
AC_CHECK_HEADERS(sys/socket.h netinet/in.h arpa/inet.h)
|
|
AC_CHECK_HEADERS(windows.h, [AC_CHECK_HEADERS(winsock2.h)])
|
|
|
|
AC_CHECK_HEADERS(syslog.h)
|
|
|
|
AC_CHECK_TYPES([int8_t,uint8_t,int16_t,uint16_t,int32_t,uint32_t,uint64_t])
|
|
AC_CHECK_SIZEOF(unsigned long)
|
|
AC_CHECK_SIZEOF(unsigned long long)
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_TYPE_SIZE_T
|
|
|
|
dnl Checks for library functions.
|
|
AC_CHECK_FUNCS(socket inet_aton usleep sigaction)
|
|
|
|
dnl Find socket function if not found yet.
|
|
if test "x$ac_cv_func_socket" = "xno"; then
|
|
AC_CHECK_LIB(socket, socket)
|
|
AC_MSG_CHECKING([for socket in -lwsock32])
|
|
SAVELIBS="$LIBS"
|
|
LIBS="$LIBS -lwsock32"
|
|
AC_TRY_LINK([
|
|
#include <winsock2.h>
|
|
],[
|
|
socket(0, 0, 0);
|
|
],
|
|
ac_cv_func_socket=yes
|
|
AC_MSG_RESULT(yes),
|
|
LIBS="$SAVELIBS"
|
|
AC_MSG_RESULT(no))
|
|
fi
|
|
|
|
dnl Check the byte order
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
dnl check host_cpu type, set defines appropriately
|
|
case $host_cpu in
|
|
i*86 | x86_64 )
|
|
AC_DEFINE(CPU_CISC, 1,
|
|
[Define if building for a CISC machine (e.g. Intel).])
|
|
# Do not enable use of asm for MACOSX
|
|
if test "x$new_AM_CFLAGS" != "x-DMACOSX"; then
|
|
AC_DEFINE(HAVE_X86, 1,
|
|
[Define to use X86 inlined assembly code])
|
|
fi
|
|
;;
|
|
* )
|
|
# CPU_RISC is only supported for big endian machines.
|
|
if test "$ac_cv_c_bigendian" = "yes"; then
|
|
AC_DEFINE(CPU_RISC, 1,
|
|
[Define if building for a RISC machine (assume slow byte access).])
|
|
else
|
|
AC_DEFINE(CPU_CISC, 1)
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
dnl Check if we're on a Windows platform.
|
|
case $host_os in
|
|
*cygwin*|*mingw* )
|
|
EXE=.exe;;
|
|
* ) EXE="";;
|
|
esac
|
|
|
|
AC_SUBST(EXE) # define executable suffix; this is needed for `make clean'
|
|
|
|
AC_MSG_CHECKING(whether to compile in debugging)
|
|
AC_ARG_ENABLE(debug,
|
|
[AS_HELP_STRING([--disable-debug],
|
|
[do not compile in dynamic debugging system])],
|
|
[], enable_debug=yes)
|
|
if test "$enable_debug" = "yes"; then
|
|
AC_DEFINE(ENABLE_DEBUGGING, 1,
|
|
[Define to compile in dynamic debugging system.])
|
|
fi
|
|
AC_MSG_RESULT($enable_debug)
|
|
|
|
AC_MSG_CHECKING(whether to use ISMAcryp code)
|
|
AC_ARG_ENABLE(generic-aesicm,
|
|
[AS_HELP_STRING([--enable-generic-aesicm],
|
|
[compile in changes for ISMAcryp])],
|
|
[], enable_generic_aesicm=no)
|
|
if test "$enable_generic_aesicm" = "yes"; then
|
|
AC_DEFINE(GENERIC_AESICM, 1, [Define this to use ISMAcryp code.])
|
|
fi
|
|
AC_MSG_RESULT($enable_generic_aesicm)
|
|
|
|
AC_MSG_CHECKING(whether to leverage OpenSSL crypto)
|
|
AC_ARG_ENABLE(openssl,
|
|
[AS_HELP_STRING([--enable-openssl],
|
|
[compile in OpenSSL crypto engine])],
|
|
[], enable_openssl=no)
|
|
if test "$enable_openssl" = "yes"; then
|
|
echo $enable_openssl
|
|
LDFLAGS="$LDFLAGS $(pkg-config --libs openssl)";
|
|
CFLAGS="$CFLAGS $(pkg-config --cflags openssl)";
|
|
|
|
AC_CHECK_LIB([crypto], [EVP_EncryptInit], [],
|
|
[AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
|
|
AC_CHECK_LIB([crypto], [EVP_aes_128_ctr], [],
|
|
[AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
|
|
AC_CHECK_LIB([crypto], [EVP_aes_128_gcm], [],
|
|
[AC_MSG_FAILURE([can't find openssl >1.0.1 crypto lib])])
|
|
AC_DEFINE(OPENSSL, 1, [Define this to use OpenSSL crypto.])
|
|
AES_ICM_OBJS="crypto/cipher/aes_icm_ossl.o crypto/cipher/aes_gcm_ossl.o"
|
|
RNG_OBJS=rand_source_ossl.o
|
|
HMAC_OBJS=crypto/hash/hmac_ossl.o
|
|
USE_OPENSSL=1
|
|
AC_SUBST(USE_OPENSSL)
|
|
else
|
|
echo $enable_openssl
|
|
AES_ICM_OBJS="crypto/cipher/aes_icm.o crypto/cipher/aes.o crypto/cipher/aes_cbc.o"
|
|
AC_MSG_CHECKING(which random device to use)
|
|
if test "$enable_kernel_linux" = "yes"; then
|
|
RNG_OBJS=rand_linux_kernel.o
|
|
AC_MSG_RESULT([Linux kernel builtin])
|
|
else
|
|
RNG_OBJS=rand_source.o
|
|
if test -n "$DEV_URANDOM"; then
|
|
AC_DEFINE_UNQUOTED(DEV_URANDOM, "$DEV_URANDOM",[Path to random device])
|
|
AC_MSG_RESULT([$DEV_URANDOM])
|
|
else
|
|
AC_MSG_RESULT([standard rand() function...])
|
|
fi
|
|
fi
|
|
RNG_EXTRA_OBJS="crypto/rng/prng.o crypto/rng/ctr_prng.o"
|
|
HMAC_OBJS="crypto/hash/hmac.o crypto/hash/sha1.o"
|
|
fi
|
|
AM_CONDITIONAL([ENABLE_OPENSSL],[test "${enable_openssl}" = "yes"])
|
|
AM_CONDITIONAL([RNG_OBJS_LINUX], test x$enable_kernel_linux = xyes)
|
|
|
|
AC_SUBST(AES_ICM_OBJS)
|
|
AC_SUBST(RNG_OBJS)
|
|
AC_SUBST(RNG_EXTRA_OBJS)
|
|
AC_SUBST(HMAC_OBJS)
|
|
AC_MSG_RESULT($enable_openssl)
|
|
|
|
AC_MSG_CHECKING(whether to use syslog for error reporting)
|
|
AC_ARG_ENABLE(syslog,
|
|
[AS_HELP_STRING([--enable-syslog], [use syslog for error reporting])],
|
|
[], enable_syslog=no)
|
|
if test "$enable_syslog" = "yes"; then
|
|
AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog logging.])
|
|
fi
|
|
AC_MSG_RESULT($enable_syslog)
|
|
|
|
AC_MSG_CHECKING(whether to use stdout for error reporting)
|
|
AC_ARG_ENABLE(stdout,
|
|
[AS_HELP_STRING([--disable-stdout], [don't use stdout for error reporting])],
|
|
[], enable_stdout=yes)
|
|
if test "$enable_stdout" = "yes"; then
|
|
AC_DEFINE(ERR_REPORTING_STDOUT, 1, [Define to use logging to stdout.])
|
|
fi
|
|
AC_MSG_RESULT($enable_stdout)
|
|
|
|
AC_MSG_CHECKING(whether to use /dev/console for error reporting)
|
|
AC_ARG_ENABLE(console,
|
|
[AS_HELP_STRING([--enable-console], [use /dev/console for error reporting])],
|
|
[], enable_console=no)
|
|
if test "$enable_console" = "yes"; then
|
|
AC_DEFINE(USE_ERR_REPORTING_FILE, 1, [Write errors to this file])
|
|
AC_DEFINE(ERR_REPORTING_FILE, "/dev/console", [Report errors to this file.])
|
|
fi
|
|
AC_MSG_RESULT($enable_console)
|
|
|
|
AC_MSG_CHECKING(whether to use GDOI key management)
|
|
AC_ARG_ENABLE(gdoi,
|
|
[AS_HELP_STRING([--enable-gdoi], [enable GDOI key management])],
|
|
[], enable_gdoi=no)
|
|
if test "$enable_gdoi" = "yes"; then
|
|
AC_DEFINE(SRTP_GDOI, 1, [Define to use GDOI.])
|
|
GDOI_OBJS=gdoi/srtp+gdoi.o
|
|
AC_SUBST(GDOI_OBJS)
|
|
fi
|
|
AC_MSG_RESULT($enable_gdoi)
|
|
AM_CONDITIONAL([GDOI],[test "SRTP_GDOI" = "1"])
|
|
|
|
AC_CONFIG_HEADERS(crypto/include/config.h:config_in.h)
|
|
|
|
AC_OUTPUT(Makefile crypto/Makefile doc/Makefile test/Makefile srtp-1.42.pc)
|
|
|
|
# This is needed when building outside the source dir.
|
|
AS_MKDIR_P(crypto/ae_xfm)
|
|
AS_MKDIR_P(crypto/cipher)
|
|
AS_MKDIR_P(crypto/hash)
|
|
AS_MKDIR_P(crypto/kernel)
|
|
AS_MKDIR_P(crypto/math)
|
|
AS_MKDIR_P(crypto/replay)
|
|
AS_MKDIR_P(crypto/rng)
|
|
AS_MKDIR_P(crypto/test)
|
|
AS_MKDIR_P(doc)
|
|
AS_MKDIR_P(srtp)
|
|
AS_MKDIR_P(tables)
|
|
AS_MKDIR_P(test)
|