Blame configure.ac

Packit Service 2ea82d
dnl -*- mode: m4; -*-
Packit Service 2ea82d
Packit Service 2ea82d
AC_PREREQ(2.60)
Packit Service 2ea82d
Packit Service 2ea82d
# When bumping versions see also the LT vesion numbers below.
Packit Service 2ea82d
define([PACKAGE_VERSION_MAJOR], [0])
Packit Service 2ea82d
define([PACKAGE_VERSION_MINOR], [4])
Packit Service 2ea82d
define([PACKAGE_VERSION_FIX], [10])
Packit Service 2ea82d
define([PACKAGE_SUFFIX], [])
Packit Service 2ea82d
Packit Service 2ea82d
AC_INIT([libp11],[PACKAGE_VERSION_MAJOR.PACKAGE_VERSION_MINOR.PACKAGE_VERSION_FIX[]PACKAGE_SUFFIX])
Packit Service 2ea82d
AC_CONFIG_AUX_DIR([.])
Packit Service 2ea82d
AC_CONFIG_HEADERS([src/config.h])
Packit Service 2ea82d
AC_CONFIG_MACRO_DIR([m4])
Packit Service 2ea82d
AM_INIT_AUTOMAKE([subdir-objects])
Packit Service 2ea82d
Packit Service 2ea82d
LIBP11_VERSION_MAJOR="PACKAGE_VERSION_MAJOR"
Packit Service 2ea82d
LIBP11_VERSION_MINOR="PACKAGE_VERSION_MINOR"
Packit Service 2ea82d
LIBP11_VERSION_FIX="PACKAGE_VERSION_FIX"
Packit Service 2ea82d
Packit Service 2ea82d
AC_CONFIG_SRCDIR([src/libp11.h])
Packit Service 2ea82d
Packit Service 2ea82d
# silent build by default
Packit Service 2ea82d
ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit Service 2ea82d
Packit Service 2ea82d
AC_CANONICAL_HOST
Packit Service 2ea82d
AC_PROG_CC
Packit Service 2ea82d
PKG_PROG_PKG_CONFIG
Packit Service 2ea82d
AC_C_BIGENDIAN
Packit Service 2ea82d
Packit Service 2ea82d
# we need to set our soversion based on openssl's soversion to avoid
Packit Service 2ea82d
# issues with applications linking to new openssl, old libp11, and vice versa
Packit Service 2ea82d
case "`$PKG_CONFIG --modversion --silence-errors libcrypto || \
Packit Service 2ea82d
	$PKG_CONFIG --modversion openssl`" in
Packit Service 2ea82d
	1.1.*) # Predicted engines directory prefix for OpenSSL 1.1.x
Packit Service 2ea82d
	    LIBP11_LT_OLDEST="3"
Packit Service 2ea82d
	    debian_ssl_prefix="openssl-1.1.0";;
Packit Service 2ea82d
	1.0.*) # Engines directory prefix for OpenSSL 1.0.x
Packit Service 2ea82d
	    LIBP11_LT_OLDEST="2"
Packit Service 2ea82d
	    debian_ssl_prefix="openssl-1.0.0";;
Packit Service 2ea82d
	*) # Engines directory prefix for OpenSSL 0.9.x
Packit Service 2ea82d
	    LIBP11_LT_OLDEST="2"
Packit Service 2ea82d
	    debian_ssl_prefix="ssl";;
Packit Service 2ea82d
esac
Packit Service 2ea82d
Packit Service 2ea82d
Packit Service 2ea82d
# LT Version numbers, remember to change them just *before* a release.
Packit Service 2ea82d
#   (Code changed:                      REVISION++)
Packit Service 2ea82d
#   (Oldest interface removed:          OLDEST++)
Packit Service 2ea82d
#   (Interfaces added:                  CURRENT++, REVISION=0)
Packit Service 2ea82d
#
Packit Service 2ea82d
# Note that at this moment we tie the oldest (soname) version to
Packit Service 2ea82d
# the openssl version we link to. If the ABI is broken on a later
Packit Service 2ea82d
# release, we should either stick to supporting a single openssl ABI
Packit Service 2ea82d
# or bump the LT_OLDEST version sufficiently to avoid clashes.
Packit Service 2ea82d
LIBP11_LT_REVISION="2"
Packit Service 2ea82d
LIBP11_LT_CURRENT="7"
Packit Service 2ea82d
LIBP11_LT_AGE="$((${LIBP11_LT_CURRENT}-${LIBP11_LT_OLDEST}))"
Packit Service 2ea82d
Packit Service 2ea82d
gl_LD_VERSION_SCRIPT
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_WITH(
Packit Service 2ea82d
	[cygwin-native],
Packit Service 2ea82d
	[AS_HELP_STRING([--with-cygwin-native],[compile native win32])],
Packit Service 2ea82d
	,
Packit Service 2ea82d
	[with_cygwin_native="no"]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
dnl Check for some target-specific stuff
Packit Service 2ea82d
test -z "${WIN32}" && WIN32="no"
Packit Service 2ea82d
test -z "${CYGWIN}" && CYGWIN="no"
Packit Service 2ea82d
case "${host}" in
Packit Service 2ea82d
	*-mingw*|*-winnt*)
Packit Service 2ea82d
		WIN32="yes"
Packit Service 2ea82d
		CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
Packit Service 2ea82d
		WIN_LIBPREFIX="lib"
Packit Service 2ea82d
	;;
Packit Service 2ea82d
	*-cygwin*)
Packit Service 2ea82d
		AC_MSG_CHECKING([cygwin mode to use])
Packit Service 2ea82d
		CYGWIN="yes"
Packit Service 2ea82d
		if test "${with_cygwin_native}" = "yes"; then
Packit Service 2ea82d
			AC_MSG_RESULT([Using native win32])
Packit Service 2ea82d
			CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
Packit Service 2ea82d
			CFLAGS="${CFLAGS} -mno-cygwin"
Packit Service 2ea82d
			WIN32="yes"
Packit Service 2ea82d
		else
Packit Service 2ea82d
			AC_MSG_RESULT([Using cygwin])
Packit Service 2ea82d
			CPPFLAGS="${CPPFLAGS} -DCRYPTOKI_FORCE_WIN32"
Packit Service 2ea82d
			WIN_LIBPREFIX="cyg"
Packit Service 2ea82d
			AC_DEFINE([USE_CYGWIN], [1], [Define if you are on Cygwin])
Packit Service 2ea82d
		fi
Packit Service 2ea82d
	;;
Packit Service 2ea82d
esac
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_ENABLE(
Packit Service 2ea82d
	[strict],
Packit Service 2ea82d
	[AS_HELP_STRING([--enable-strict],[enable strict compile mode @<:@disabled@:>@])],
Packit Service 2ea82d
	,
Packit Service 2ea82d
	[enable_strict="no"]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_ENABLE(
Packit Service 2ea82d
	[pedantic],
Packit Service 2ea82d
	[AS_HELP_STRING([--enable-pedantic],[enable pedantic compile mode @<:@disabled@:>@])],
Packit Service 2ea82d
	,
Packit Service 2ea82d
	[enable_pedantic="no"]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_ENABLE(
Packit Service 2ea82d
	[api-doc],
Packit Service 2ea82d
	[AS_HELP_STRING([--enable-api-doc],[enable generation and installation of API documents @<:@disabled@:>@])],
Packit Service 2ea82d
	,
Packit Service 2ea82d
	[enable_api_doc="no"]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_WITH(
Packit Service 2ea82d
	[apidocdir],
Packit Service 2ea82d
	[AS_HELP_STRING([--with-apidocdir],[put API documents at this directory @<:@HTMLDIR/api@:>@])],
Packit Service 2ea82d
	[apidocdir="${with_apidocdir}"],
Packit Service 2ea82d
	[apidocdir="\$(htmldir)/api"]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_WITH(
Packit Service 2ea82d
	[enginesdir],
Packit Service 2ea82d
	[AS_HELP_STRING([--with-enginesdir], [OpenSSL engines directory])],
Packit Service 2ea82d
	[enginesexecdir="${withval}"],
Packit Service 2ea82d
	[
Packit Service 2ea82d
		enginesexecdir="`$PKG_CONFIG --variable=enginesdir --silence-errors libcrypto`"
Packit Service 2ea82d
		if test "${enginesexecdir}" = ""; then
Packit Service 2ea82d
		    libcryptodir="`$PKG_CONFIG --variable=libdir --silence-errors libcrypto || \
Packit Service 2ea82d
			$PKG_CONFIG --variable=libdir openssl`"
Packit Service 2ea82d
		    if test -d "$libcryptodir/$debian_ssl_prefix/engines"; then
Packit Service 2ea82d
			# Debian-based OpenSSL package (for example Ubuntu)
Packit Service 2ea82d
			enginesexecdir="$libcryptodir/$debian_ssl_prefix/engines"
Packit Service 2ea82d
		    else # Default OpenSSL engines directory
Packit Service 2ea82d
			enginesexecdir="$libcryptodir/engines"
Packit Service 2ea82d
		    fi
Packit Service 2ea82d
		    if test "${prefix}" != "NONE" -o "${exec_prefix}" != "NONE"; then
Packit Service 2ea82d
			# Override the autodetected value with the default
Packit Service 2ea82d
			enginesexecdir="\$(libdir)"
Packit Service 2ea82d
		    fi
Packit Service 2ea82d
		fi
Packit Service 2ea82d
	]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_WITH(
Packit Service 2ea82d
	[pkcs11-module],
Packit Service 2ea82d
	[AS_HELP_STRING([--with-pkcs11-module], [default PKCS11 module])],
Packit Service 2ea82d
	[pkcs11_module="${withval}"],
Packit Service 2ea82d
	[pkcs11_module="`$PKG_CONFIG --variable=proxy_module --silence-errors p11-kit-1`"])
Packit Service 2ea82d
Packit Service 2ea82d
dnl Checks for programs.
Packit Service 2ea82d
AC_PROG_CPP
Packit Service 2ea82d
AC_PROG_INSTALL
Packit Service 2ea82d
AC_PROG_LN_S
Packit Service 2ea82d
AC_PROG_MKDIR_P
Packit Service 2ea82d
AC_PROG_SED
Packit Service 2ea82d
AC_PROG_MAKE_SET
Packit Service 2ea82d
Packit Service 2ea82d
dnl Add libtool support.
Packit Service 2ea82d
ifdef(
Packit Service 2ea82d
	[LT_INIT],
Packit Service 2ea82d
	[
Packit Service 2ea82d
		LT_INIT([win32-dll])
Packit Service 2ea82d
		LT_LANG([Windows Resource])
Packit Service 2ea82d
	],
Packit Service 2ea82d
	[
Packit Service 2ea82d
		AC_LIBTOOL_WIN32_DLL
Packit Service 2ea82d
		AC_LIBTOOL_RC
Packit Service 2ea82d
		AC_PROG_LIBTOOL
Packit Service 2ea82d
	]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
dnl Checks for header files.
Packit Service 2ea82d
AC_HEADER_STDC
Packit Service 2ea82d
AC_HEADER_SYS_WAIT
Packit Service 2ea82d
AC_CHECK_HEADERS([ \
Packit Service 2ea82d
	errno.h fcntl.h malloc.h stdlib.h \
Packit Service 2ea82d
	inttypes.h string.h strings.h sys/time.h \
Packit Service 2ea82d
	unistd.h locale.h getopt.h dlfcn.h utmp.h \
Packit Service 2ea82d
])
Packit Service 2ea82d
Packit Service 2ea82d
AC_ARG_VAR([DOXYGEN], [doxygen utility])
Packit Service 2ea82d
AC_CHECK_PROGS([DOXYGEN],[doxygen])
Packit Service 2ea82d
test "${enable_api_doc}" = "yes" -a -z "${DOXYGEN}" && AC_MSG_ERROR([doxygen is required for API doc])
Packit Service 2ea82d
Packit Service 2ea82d
if test "${WIN32}" != "yes"; then
Packit Service 2ea82d
	AC_SEARCH_LIBS(
Packit Service 2ea82d
		[dlopen],
Packit Service 2ea82d
		[dl],
Packit Service 2ea82d
		,
Packit Service 2ea82d
		[AC_MSG_ERROR([dlopen required])]
Packit Service 2ea82d
	)
Packit Service 2ea82d
	AC_CHECK_FUNCS([__register_atfork],,)
Packit Service 2ea82d
fi
Packit Service 2ea82d
Packit Service 2ea82d
PKG_CHECK_MODULES(
Packit Service 2ea82d
	[OPENSSL],
Packit Service 2ea82d
	[libcrypto >= 0.9.8],
Packit Service 2ea82d
	,
Packit Service 2ea82d
	[AC_MSG_ERROR([libcrypto >= 0.9.8 is required])]
Packit Service 2ea82d
)
Packit Service 2ea82d
Packit Service 2ea82d
if test -n "${pkcs11_module}"; then
Packit Service 2ea82d
	AC_DEFINE_UNQUOTED(
Packit Service 2ea82d
		[DEFAULT_PKCS11_MODULE],
Packit Service 2ea82d
		"${pkcs11_module}",
Packit Service 2ea82d
		[Default PKCS#11 module.])
Packit Service 2ea82d
fi
Packit Service 2ea82d
Packit Service 2ea82d
pkgconfigdir="\$(libdir)/pkgconfig"
Packit Service 2ea82d
Packit Service 2ea82d
AC_SUBST([pkgconfigdir])
Packit Service 2ea82d
AC_SUBST([apidocdir])
Packit Service 2ea82d
AC_SUBST([enginesexecdir])
Packit Service 2ea82d
AC_SUBST([LIBP11_VERSION_MAJOR])
Packit Service 2ea82d
AC_SUBST([LIBP11_VERSION_MINOR])
Packit Service 2ea82d
AC_SUBST([LIBP11_VERSION_FIX])
Packit Service 2ea82d
AC_SUBST([LIBP11_LT_CURRENT])
Packit Service 2ea82d
AC_SUBST([LIBP11_LT_REVISION])
Packit Service 2ea82d
AC_SUBST([LIBP11_LT_AGE])
Packit Service 2ea82d
AC_SUBST([LIBP11_LT_OLDEST])
Packit Service 2ea82d
AC_SUBST([WIN_LIBPREFIX])
Packit Service 2ea82d
AC_SUBST([SHARED_EXT], $(eval echo "${shrext_cmds}"))
Packit Service 2ea82d
Packit Service 2ea82d
AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
Packit Service 2ea82d
AM_CONDITIONAL([CYGWIN], [test "${CYGWIN}" = "yes"])
Packit Service 2ea82d
AM_CONDITIONAL([ENABLE_API_DOC], [test "${enable_api_doc}" = "yes"])
Packit Service 2ea82d
Packit Service 2ea82d
if test "${enable_pedantic}" = "yes"; then
Packit Service 2ea82d
	enable_strict="yes";
Packit Service 2ea82d
	CFLAGS="${CFLAGS} -pedantic"
Packit Service 2ea82d
fi
Packit Service 2ea82d
if test "${enable_strict}" = "yes"; then
Packit Service 2ea82d
	CFLAGS="${CFLAGS} -Wall -Wextra"
Packit Service 2ea82d
fi
Packit Service 2ea82d
Packit Service 2ea82d
AC_MSG_CHECKING([if libtool needs -no-undefined flag to build shared libraries])
Packit Service 2ea82d
case "$host_os" in
Packit Service 2ea82d
  cygwin*|msys*|mingw*)
Packit Service 2ea82d
    ## Add in the -no-undefined flag to LDFLAGS for libtool.
Packit Service 2ea82d
    AC_MSG_RESULT([yes])
Packit Service 2ea82d
    LDFLAGS="$LDFLAGS -no-undefined"
Packit Service 2ea82d
    ;;
Packit Service 2ea82d
  *)
Packit Service 2ea82d
    ## Don't add in anything.
Packit Service 2ea82d
    AC_MSG_RESULT([no])
Packit Service 2ea82d
    ;;
Packit Service 2ea82d
esac
Packit Service 2ea82d
Packit Service 2ea82d
AC_CONFIG_FILES([
Packit Service 2ea82d
	Makefile
Packit Service 2ea82d
	src/Makefile
Packit Service 2ea82d
	src/libp11.pc
Packit Service 2ea82d
	src/libp11.rc
Packit Service 2ea82d
	src/pkcs11.rc
Packit Service 2ea82d
	doc/Makefile
Packit Service 2ea82d
	doc/doxygen.conf
Packit Service 2ea82d
	examples/Makefile
Packit Service 2ea82d
	tests/Makefile
Packit Service 2ea82d
])
Packit Service 2ea82d
AC_OUTPUT
Packit Service 2ea82d
Packit Service 2ea82d
AC_MSG_NOTICE([creating src/libp11.map])
Packit Service 2ea82d
# We do it *after* the src directory is created
Packit Service 2ea82d
rm -f src/libp11.map
Packit Service 2ea82d
echo "LIBP11_${LIBP11_LT_OLDEST}" >src/libp11.map
Packit Service 2ea82d
echo "{" >>src/libp11.map
Packit Service 2ea82d
echo "global:" >>src/libp11.map
Packit Service 2ea82d
tr '\n' ';' <$srcdir/src/libp11.exports >>src/libp11.map
Packit Service 2ea82d
echo "" >>src/libp11.map
Packit Service 2ea82d
echo "local:" >>src/libp11.map
Packit Service 2ea82d
echo '*;' >>src/libp11.map
Packit Service 2ea82d
echo "};" >>src/libp11.map
Packit Service 2ea82d
chmod ugo-w src/libp11.map
Packit Service 2ea82d
Packit Service 2ea82d
cat <
Packit Service 2ea82d
Packit Service 2ea82d
libp11 has been configured with the following options:
Packit Service 2ea82d
Packit Service 2ea82d
Version:                 ${PACKAGE_VERSION}
Packit Service 2ea82d
libp11 directory:        $(eval eval eval echo "${libdir}")
Packit Service 2ea82d
Engine directory:        ${enginesexecdir}
Packit Service 2ea82d
Default PKCS11 module:   ${pkcs11_module}
Packit Service 2ea82d
API doc support:         ${enable_api_doc}
Packit Service 2ea82d
Packit Service 2ea82d
Host:                    ${host}
Packit Service 2ea82d
Compiler:                ${CC}
Packit Service 2ea82d
Preprocessor flags:      ${CPPFLAGS}
Packit Service 2ea82d
Compiler flags:          ${CFLAGS}
Packit Service 2ea82d
Linker flags:            ${LDFLAGS}
Packit Service 2ea82d
Libraries:               ${LIBS}
Packit Service 2ea82d
Packit Service 2ea82d
OPENSSL_CFLAGS:          ${OPENSSL_CFLAGS}
Packit Service 2ea82d
OPENSSL_LIBS:            ${OPENSSL_LIBS}
Packit Service 2ea82d
Packit Service 2ea82d
EOF
Packit Service 2ea82d
Packit Service 2ea82d
# vim: set noexpandtab: