Blame configure.ac

Packit Service 3749ba
AC_PREREQ(2.61)
Packit Service 3749ba
Packit Service 3749ba
AC_INIT([p11-kit],
Packit Service 3749ba
	[0.23.21],
Packit Service 3749ba
	[https://github.com/p11-glue/p11-kit/issues],
Packit Service 3749ba
	[p11-kit],
Packit Service 3749ba
	[https://p11-glue.github.io/p11-glue/p11-kit.html])
Packit Service 3749ba
Packit Service 3749ba
# ------------------------------------------------------------------------------
Packit Service 3749ba
# p11-kit libtool versioning
Packit Service 3749ba
# CURRENT : REVISION : AGE
Packit Service 3749ba
#   +1    :     0    : +1   == new interface that does not break old one.
Packit Service 3749ba
#   +1    :     0    :  0   == removed an interface. Breaks old apps.
Packit Service 3749ba
#    ?    :    +1    :  ?   == internal changes that doesn't break anything.
Packit Service 3749ba
Packit Service 3749ba
P11KIT_CURRENT=3
Packit Service 3749ba
P11KIT_REVISION=0
Packit Service 3749ba
P11KIT_AGE=3
Packit Service 3749ba
Packit Service 3749ba
# ------------------------------------------------------------------------------
Packit Service 3749ba
Packit Service 3749ba
AC_CONFIG_HEADERS([config.h])
Packit Service 3749ba
AC_CONFIG_MACRO_DIR([build/m4])
Packit Service 3749ba
AC_CONFIG_AUX_DIR([build/litter])
Packit Service 3749ba
AC_REQUIRE_AUX_FILE([tap-driver.sh])
Packit Service 3749ba
AM_INIT_AUTOMAKE([1.12 dist-xz no-dist-gzip foreign subdir-objects])
Packit Service 3749ba
AM_SANITY_CHECK
Packit Service 3749ba
AM_MAINTAINER_MODE([enable])
Packit Service 3749ba
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
Packit Service 3749ba
m4_ifdef([PKG_PREREQ], [PKG_PREREQ(0.29)],
Packit Service 3749ba
  [m4_fatal([pkg.m4 is too old; copy the latest version in build/m4])])
Packit Service 3749ba
Packit Service 3749ba
dnl Enable platform specific extensions.
Packit Service 3749ba
AC_USE_SYSTEM_EXTENSIONS
Packit Service 3749ba
Packit Service 3749ba
LT_PREREQ([2.2.6])
Packit Service 3749ba
LT_INIT([dlopen disable-static])
Packit Service 3749ba
Packit Service 3749ba
dnl Check if -Wl,--version-script is supported by the linker
Packit Service 3749ba
gl_LD_VERSION_SCRIPT
Packit Service 3749ba
Packit Service 3749ba
dnl Checks for programs.
Packit Service 3749ba
AC_PROG_CC
Packit Service 3749ba
AC_PROG_CPP
Packit Service 3749ba
AM_PROG_CC_C_O
Packit Service 3749ba
PKG_PROG_PKG_CONFIG
Packit Service 3749ba
Packit Service 3749ba
LINGUAS=""
Packit Service 3749ba
AM_GNU_GETTEXT([external], [need-ngettext])
Packit Service 3749ba
AM_GNU_GETTEXT_VERSION([0.19.8])
Packit Service 3749ba
m4_ifdef([AM_GNU_GETTEXT_REQUIRE_VERSION],[
Packit Service 3749ba
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.8])
Packit Service 3749ba
])
Packit Service 3749ba
Packit Service 3749ba
if test "$enable_static" = "yes"; then
Packit Service 3749ba
	AC_MSG_ERROR([p11-kit cannot be used as a static library])
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([for win32])
Packit Service 3749ba
case "$host" in
Packit Service 3749ba
	*-*-mingw*)
Packit Service 3749ba
		AC_DEFINE_UNQUOTED(OS_WIN32, 1, [Building for win32])
Packit Service 3749ba
		os_win32=yes
Packit Service 3749ba
		os_unix=no
Packit Service 3749ba
		;;
Packit Service 3749ba
	*)
Packit Service 3749ba
		AC_DEFINE_UNQUOTED(OS_UNIX, 1, [Building for unix])
Packit Service 3749ba
		os_win32=no
Packit Service 3749ba
		os_unix=yes
Packit Service 3749ba
		;;
Packit Service 3749ba
esac
Packit Service 3749ba
AC_MSG_RESULT([$os_win32])
Packit Service 3749ba
AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
Packit Service 3749ba
Packit Service 3749ba
AC_C_BIGENDIAN
Packit Service 3749ba
Packit Service 3749ba
# ------------------------------------------------------------------------------
Packit Service 3749ba
# Checks for libraries and headers
Packit Service 3749ba
Packit Service 3749ba
AC_HEADER_STDBOOL
Packit Service 3749ba
Packit Service 3749ba
AC_CHECK_SIZEOF([unsigned long])
Packit Service 3749ba
Packit Service 3749ba
if test "$os_unix" = "yes"; then
Packit Service 3749ba
	AC_CHECK_FUNC([pthread_create], , [
Packit Service 3749ba
		AC_CHECK_LIB(pthread, pthread_create, , [
Packit Service 3749ba
			AC_MSG_ERROR([could not find pthread_create])
Packit Service 3749ba
		])
Packit Service 3749ba
	])
Packit Service 3749ba
Packit Service 3749ba
	AC_CHECK_FUNC([nanosleep], , [
Packit Service 3749ba
		AC_SEARCH_LIBS([nanosleep], [rt], , [
Packit Service 3749ba
			AC_MSG_ERROR([could not find nanosleep])
Packit Service 3749ba
		])
Packit Service 3749ba
	])
Packit Service 3749ba
Packit Service 3749ba
	AC_SEARCH_LIBS([dlopen], [dl dld], [], [
Packit Service 3749ba
		AC_MSG_ERROR([could not find dlopen])
Packit Service 3749ba
	])
Packit Service 3749ba
Packit Service 3749ba
	# for Solaris we need -lsocket -lnsl for socket stuff, gethostbyname
Packit Service 3749ba
	# is just a dummy to find -lnsl
Packit Service 3749ba
	AC_SEARCH_LIBS([gethostbyname], [nsl])
Packit Service 3749ba
	AC_SEARCH_LIBS([connect], [socket], [], [
Packit Service 3749ba
		AC_MSG_ERROR([could not find socket])
Packit Service 3749ba
	])
Packit Service 3749ba
Packit Service 3749ba
	AC_CHECK_HEADERS([locale.h], [
Packit Service 3749ba
		AC_CHECK_TYPES([locale_t], [], [], [[#include <locale.h>]])
Packit Service 3749ba
		AC_CHECK_FUNCS([newlocale strerror_l])
Packit Service 3749ba
	])
Packit Service 3749ba
Packit Service 3749ba
	# These are things we can work around
Packit Service 3749ba
	AC_CHECK_HEADERS([sys/resource.h ucred.h])
Packit Service 3749ba
	AC_CHECK_MEMBERS([struct dirent.d_type],,,[#include <dirent.h>])
Packit Service 3749ba
	AC_CHECK_FUNCS([getprogname getexecname basename mkstemp mkdtemp])
Packit Service 3749ba
	AC_CHECK_FUNCS([getauxval getresuid secure_getenv])
Packit Service 3749ba
	AC_CHECK_FUNCS([strnstr memdup strndup strerror_r])
Packit Service 3749ba
	AC_CHECK_FUNCS([reallocarray])
Packit Service 3749ba
	AC_CHECK_DECLS([reallocarray], [], [], [[#include <stdlib.h>]])
Packit Service 3749ba
	AC_CHECK_FUNCS([fdwalk])
Packit Service 3749ba
	AC_CHECK_FUNCS([setenv])
Packit Service 3749ba
	AC_CHECK_FUNCS([getpeereid])
Packit Service 3749ba
	AC_CHECK_FUNCS([getpeerucred])
Packit Service 3749ba
	AC_CHECK_FUNCS([issetugid])
Packit Service 3749ba
Packit Service 3749ba
	AC_CACHE_CHECK([for thread-local storage class],
Packit Service 3749ba
		[ac_cv_tls_keyword],
Packit Service 3749ba
		[ac_cv_tls_keyword=
Packit Service 3749ba
		for keyword in _Thread_local __thread; do
Packit Service 3749ba
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
Packit Service 3749ba
			[[static ]$keyword[ foo;]])],
Packit Service 3749ba
			[ac_cv_tls_keyword=$keyword])
Packit Service 3749ba
		done])
Packit Service 3749ba
	if test -n "$ac_cv_tls_keyword"; then
Packit Service 3749ba
		AC_DEFINE_UNQUOTED([P11_TLS_KEYWORD], [$ac_cv_tls_keyword], [the compiler keyword to define thread-local storage])
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	# Required functions
Packit Service 3749ba
	AC_CHECK_FUNCS([gmtime_r],
Packit Service 3749ba
		[AC_DEFINE([HAVE_GMTIME_R], 1, [Whether gmtime_r() is available])],
Packit Service 3749ba
		[AC_MSG_ERROR([could not find required gmtime_r() function])])
Packit Service 3749ba
Packit Service 3749ba
	# Check if these are declared and/or available to link against
Packit Service 3749ba
	AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
Packit Service 3749ba
	AC_MSG_CHECKING([whether program_invocation_short_name is available])
Packit Service 3749ba
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]],
Packit Service 3749ba
	                                [[program_invocation_short_name = "test";]])],
Packit Service 3749ba
	               [AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
Packit Service 3749ba
	                          [Whether program_invocation_short_name available])
Packit Service 3749ba
	                AC_MSG_RESULT([yes])],
Packit Service 3749ba
	               [AC_MSG_RESULT([no])])
Packit Service 3749ba
	AC_CHECK_DECLS([__progname])
Packit Service 3749ba
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern char *__progname;]], [[__progname=(char*)0;]])],
Packit Service 3749ba
		[AC_DEFINE(HAVE___PROGNAME, [1], [Whether __progname available])])
Packit Service 3749ba
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern int __libc_enable_secure;]], [[__libc_enable_secure = 0;]])],
Packit Service 3749ba
		[AC_DEFINE(HAVE___LIBC_ENABLE_SECURE, [1], [Whether __libc_enable_secure available])])
Packit Service 3749ba
	AC_CHECK_TYPES([sighandler_t, sig_t, __sighandler_t], [], [],
Packit Service 3749ba
		[[#include <sys/types.h>
Packit Service 3749ba
		  #include <signal.h>]])
Packit Service 3749ba
Packit Service 3749ba
	AC_MSG_CHECKING([whether vsock support is available])
Packit Service 3749ba
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>
Packit Service 3749ba
					  #include <linux/vm_sockets.h>]],
Packit Service 3749ba
	                                [[struct sockaddr_vm sa = {
Packit Service 3749ba
					  .svm_family = AF_VSOCK,
Packit Service 3749ba
					  .svm_cid = VMADDR_CID_ANY,
Packit Service 3749ba
					  };
Packit Service 3749ba
					  (void)&sa;
Packit Service 3749ba
					  return 0;]])],
Packit Service 3749ba
	               [AC_DEFINE([HAVE_VSOCK], [1],
Packit Service 3749ba
	                          [Whether vsock support available])
Packit Service 3749ba
	                AC_MSG_RESULT([yes])],
Packit Service 3749ba
	               [AC_MSG_RESULT([no])])
Packit Service 3749ba
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
# These are thngs we can work around
Packit Service 3749ba
AC_CHECK_FUNCS([asprintf vasprintf vsnprintf])
Packit Service 3749ba
AC_CHECK_DECLS([asprintf, vasprintf], [], [], [[#include <stdio.h>]])
Packit Service 3749ba
Packit Service 3749ba
AC_CHECK_LIB(intl, dgettext)
Packit Service 3749ba
Packit Service 3749ba
# ------------------------------------------------------------------------------
Packit Service 3749ba
# PKCS#11 Directories
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([module-config],
Packit Service 3749ba
            [AS_HELP_STRING([--with-module-config], [Module configuration files shipped by packages])],
Packit Service 3749ba
            [module_config=$withval],
Packit Service 3749ba
            [module_config='${pkgdatadir}/modules'])
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([system-config],
Packit Service 3749ba
            [AS_HELP_STRING([--with-system-config], [Change PKCS#11 system config directory])],
Packit Service 3749ba
            [system_config_dir=$withval],
Packit Service 3749ba
            [system_config_dir=$sysconfdir/pkcs11])
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([user-config],
Packit Service 3749ba
            [AS_HELP_STRING([--with-user-config], [Change PKCS#11 user config directory])],
Packit Service 3749ba
            [user_config_dir=$withval],
Packit Service 3749ba
            [user_config_dir="~/.config/pkcs11"])
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([module-path],
Packit Service 3749ba
            [AS_HELP_STRING([--with-module-path], [Load modules with relative path names from here])],
Packit Service 3749ba
            [module_path=$withval],
Packit Service 3749ba
            [module_path=$libdir/pkcs11])
Packit Service 3749ba
Packit Service 3749ba
# We expand these so we have concrete paths
Packit Service 3749ba
p11_system_config=$system_config_dir
Packit Service 3749ba
p11_system_config_file=$p11_system_config/pkcs11.conf
Packit Service 3749ba
p11_system_config_modules=$p11_system_config/modules
Packit Service 3749ba
p11_package_config_modules=$module_config
Packit Service 3749ba
p11_user_config=$user_config_dir
Packit Service 3749ba
p11_user_config_file="$p11_user_config/pkcs11.conf"
Packit Service 3749ba
p11_user_config_modules="$p11_user_config/modules"
Packit Service 3749ba
p11_module_path="$module_path"
Packit Service 3749ba
Packit Service 3749ba
AC_SUBST(p11_system_config)
Packit Service 3749ba
AC_SUBST(p11_system_config_file)
Packit Service 3749ba
AC_SUBST(p11_system_config_modules)
Packit Service 3749ba
AC_SUBST(p11_package_config_modules)
Packit Service 3749ba
AC_SUBST(p11_user_config)
Packit Service 3749ba
AC_SUBST(p11_user_config_file)
Packit Service 3749ba
AC_SUBST(p11_user_config_modules)
Packit Service 3749ba
AC_SUBST(p11_module_path)
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# libtasn1 support
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([libtasn1],
Packit Service 3749ba
            AS_HELP_STRING([--without-libtasn1],
Packit Service 3749ba
                           [Disable dependency on libtasn1])
Packit Service 3749ba
)
Packit Service 3749ba
Packit Service 3749ba
AS_IF([test "$with_libtasn1" != "no"], [
Packit Service 3749ba
	PKG_CHECK_MODULES([LIBTASN1], [libtasn1 >= 2.3], [],
Packit Service 3749ba
		[AC_MSG_ERROR([libtasn1 not found. Building without it results in significant loss of functionality. To proceed use --without-libtasn1])]
Packit Service 3749ba
	)
Packit Service 3749ba
	AC_SUBST(LIBTASN1_CFLAGS)
Packit Service 3749ba
	AC_SUBST(LIBTASN1_LIBS)
Packit Service 3749ba
	AC_PATH_PROG([ASN1PARSER], [asn1Parser])
Packit Service 3749ba
	with_libtasn1="yes"
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(WITH_ASN1, 1, [Build with libtasn1 and certificate support])
Packit Service 3749ba
])
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL(WITH_ASN1, test "$with_libtasn1" = "yes")
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# libffi
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([libffi],
Packit Service 3749ba
            AS_HELP_STRING([--without-libffi],
Packit Service 3749ba
                           [Don't use libffi for building closures]))
Packit Service 3749ba
Packit Service 3749ba
if test "$with_libffi" != "no"; then
Packit Service 3749ba
	PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(WITH_FFI, 1, [Use libffi for building closures])
Packit Service 3749ba
	AC_SUBST(LIBFFI_CFLAGS)
Packit Service 3749ba
	AC_SUBST(LIBFFI_LIBS)
Packit Service 3749ba
Packit Service 3749ba
	with_libffi="yes"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL(WITH_FFI, test "$with_libffi" = "yes")
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([closures],
Packit Service 3749ba
	    [AS_HELP_STRING([--with-closures[=NUM]],
Packit Service 3749ba
		            [the number of precompiled closures, used when libffi is unavailable])],
Packit Service 3749ba
	    [closures=$withval],
Packit Service 3749ba
	    [closures=64])
Packit Service 3749ba
Packit Service 3749ba
if test "$closures" -lt 1; then
Packit Service 3749ba
	AC_MSG_ERROR([at least one closure must be compiled in])
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_DEFINE_UNQUOTED(P11_VIRTUAL_MAX_FIXED, [$closures], [the number of closures])
Packit Service 3749ba
AC_SUBST(closures)
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# Hash implementation
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([hash-impl],
Packit Service 3749ba
            AS_HELP_STRING([--with-hash-impl=@<:@freebl/internal@:>@],
Packit Service 3749ba
                           [Choose the hash implementation to use])
Packit Service 3749ba
)
Packit Service 3749ba
Packit Service 3749ba
AS_IF([test "$with_hash_impl" = ""], [with_hash_impl=internal])
Packit Service 3749ba
Packit Service 3749ba
AS_CASE([$with_hash_impl],
Packit Service 3749ba
	[freebl], [
Packit Service 3749ba
		AC_CHECK_LIB(freebl3, NSSLOW_Init,
Packit Service 3749ba
			[
Packit Service 3749ba
				HASH_LIBS=-lfreebl3
Packit Service 3749ba
				AC_DEFINE_UNQUOTED(WITH_FREEBL, 1, [Use freebl for hash implementation])
Packit Service 3749ba
			],
Packit Service 3749ba
			AC_MSG_ERROR([could not find the freebl3 library])
Packit Service 3749ba
		)
Packit Service 3749ba
	],
Packit Service 3749ba
Packit Service 3749ba
	[internal], [
Packit Service 3749ba
		HASH_LIBS=
Packit Service 3749ba
	],
Packit Service 3749ba
Packit Service 3749ba
	[
Packit Service 3749ba
		AC_MSG_ERROR([unsupported hash impl: $with_hash_impl])
Packit Service 3749ba
	]
Packit Service 3749ba
)
Packit Service 3749ba
Packit Service 3749ba
AC_SUBST(HASH_LIBS)
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# Trust Module
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_ENABLE([trust-module],
Packit Service 3749ba
              AS_HELP_STRING([--disable-trust-module],
Packit Service 3749ba
                             [Disable building the trust module])
Packit Service 3749ba
)
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([if trust module is enabled])
Packit Service 3749ba
AS_IF([test "$with_libtasn1" != "yes"], [
Packit Service 3749ba
	AS_IF([test "$enable_trust_module" = "yes"], [
Packit Service 3749ba
		AC_MSG_ERROR([--with-libtasn1 is needed in order to build the trust module])
Packit Service 3749ba
	])
Packit Service 3749ba
	AS_IF([test "$enable_trust_module" != "no"], [
Packit Service 3749ba
		AC_MSG_WARN([--with-libtasn1 is needed in order to build the trust module, disabling])
Packit Service 3749ba
	])
Packit Service 3749ba
	enable_trust_module="no"
Packit Service 3749ba
])
Packit Service 3749ba
Packit Service 3749ba
AS_IF([test "$enable_trust_module" != "no"], [enable_trust_module="yes"])
Packit Service 3749ba
AM_CONDITIONAL(WITH_TRUST_MODULE, test "$enable_trust_module" = "yes")
Packit Service 3749ba
AC_MSG_RESULT([$enable_trust_module])
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([trust-paths],
Packit Service 3749ba
            AS_HELP_STRING([--with-trust-paths=@<:@path@:>@]:
Packit Service 3749ba
                           [input paths for trust module])
Packit Service 3749ba
)
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([for trust module paths])
Packit Service 3749ba
Packit Service 3749ba
# This option was disabled, no anchors
Packit Service 3749ba
if test "$with_trust_paths" = "no"; then
Packit Service 3749ba
	with_trust_paths=""
Packit Service 3749ba
	AC_MSG_RESULT([disabled])
Packit Service 3749ba
Packit Service 3749ba
elif test "$enable_trust_module" != "yes"; then
Packit Service 3749ba
	if test "$with_trust_paths" != ""; then
Packit Service 3749ba
		AC_MSG_ERROR([need --enable-trust-module in order to specify trust module paths.])
Packit Service 3749ba
	fi
Packit Service 3749ba
	with_trust_paths=""
Packit Service 3749ba
	AC_MSG_RESULT([disabled])
Packit Service 3749ba
Packit Service 3749ba
# Option was not set, try to detect
Packit Service 3749ba
elif test "$with_trust_paths" = "" -o "$with_trust_paths" = "yes"; then
Packit Service 3749ba
	with_trust_paths=""
Packit Service 3749ba
	for f in /etc/pki/tls/certs/ca-bundle.crt \
Packit Service 3749ba
		/etc/ssl/certs/ca-certificates.crt \
Packit Service 3749ba
		/etc/ssl/ca-bundle.pem \
Packit Service 3749ba
		/etc/ssl/ca-bundle.crt; do
Packit Service 3749ba
		if test -f "$f"; then
Packit Service 3749ba
			with_trust_paths="$f"
Packit Service 3749ba
			break
Packit Service 3749ba
		fi
Packit Service 3749ba
	done
Packit Service 3749ba
Packit Service 3749ba
	if test "$with_trust_paths" = ""; then
Packit Service 3749ba
		AC_MSG_ERROR([could not find. Use --with-trust-paths=/path to set, or --without-trust-paths to disable])
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	AC_MSG_RESULT($with_trust_paths)
Packit Service 3749ba
Packit Service 3749ba
else
Packit Service 3749ba
	# Anchors explicitly set
Packit Service 3749ba
	AC_MSG_RESULT($with_trust_paths)
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_DEFINE_UNQUOTED(TRUST_PATHS, ["$with_trust_paths"], [The trust module input paths])
Packit Service 3749ba
AC_SUBST(with_trust_paths)
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# GTK Doc
Packit Service 3749ba
Packit Service 3749ba
dnl check for tools
Packit Service 3749ba
AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
Packit Service 3749ba
AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
Packit Service 3749ba
AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
Packit Service 3749ba
AC_PATH_PROG([GTKDOC_SCAN],[gtkdoc-scan])
Packit Service 3749ba
AC_PATH_PROG([XSLTPROC], [xsltproc])
Packit Service 3749ba
Packit Service 3749ba
dnl for overriding the documentation installation directory
Packit Service 3749ba
AC_ARG_WITH([html-dir],
Packit Service 3749ba
	AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
Packit Service 3749ba
	               [with_html_dir='${datadir}/gtk-doc/html'])
Packit Service 3749ba
HTML_DIR="$with_html_dir"
Packit Service 3749ba
AC_SUBST([HTML_DIR])
Packit Service 3749ba
Packit Service 3749ba
dnl enable/disable documentation building
Packit Service 3749ba
AC_ARG_ENABLE([doc],
Packit Service 3749ba
	AS_HELP_STRING([--enable-doc],
Packit Service 3749ba
	               [build documentation using gtk-doc [[default=no]]]),,
Packit Service 3749ba
              [enable_doc=no])
Packit Service 3749ba
Packit Service 3749ba
if test x$enable_doc = xyes; then
Packit Service 3749ba
	if test -z "$GTKDOC_SCAN"; then
Packit Service 3749ba
		AC_MSG_ERROR([gtk-doc not installed and --enable-doc requested])
Packit Service 3749ba
	fi
Packit Service 3749ba
	if test -z "$XSLTPROC"; then
Packit Service 3749ba
		AC_MSG_ERROR([the xsltproc command was not found and --enable-doc requested])
Packit Service 3749ba
	fi
Packit Service 3749ba
	doc_status="yes (manual, reference)"
Packit Service 3749ba
else
Packit Service 3749ba
	enable_doc=no
Packit Service 3749ba
	doc_status="no (no manual or reference)"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([whether to build documentation])
Packit Service 3749ba
AC_MSG_RESULT($enable_doc)
Packit Service 3749ba
Packit Service 3749ba
dnl enable/disable output formats
Packit Service 3749ba
AC_ARG_ENABLE([doc-html],
Packit Service 3749ba
	AS_HELP_STRING([--enable-doc-html],
Packit Service 3749ba
	               [build documentation in html format [[default=yes]]]),,
Packit Service 3749ba
	          [enable_doc_html=yes])
Packit Service 3749ba
AC_ARG_ENABLE([doc-pdf],
Packit Service 3749ba
	AS_HELP_STRING([--enable-doc-pdf],
Packit Service 3749ba
	               [build documentation in pdf format [[default=no]]]),,
Packit Service 3749ba
              [enable_doc_pdf=no])
Packit Service 3749ba
Packit Service 3749ba
if test -z "$GTKDOC_MKPDF"; then
Packit Service 3749ba
	enable_doc_pdf=no
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL(ENABLE_GTK_DOC, [test x$enable_doc = xyes])
Packit Service 3749ba
AM_CONDITIONAL(GTK_DOC_BUILD_HTML, [test x$enable_doc_html = xyes])
Packit Service 3749ba
AM_CONDITIONAL(GTK_DOC_BUILD_PDF, [test x$enable_doc_pdf = xyes])
Packit Service 3749ba
AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, [test -n "$LIBTOOL"])
Packit Service 3749ba
AM_CONDITIONAL(GTK_DOC_USE_REBASE, [test -n "$GTKDOC_REBASE"])
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# Compilation and linking options
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([for debug mode])
Packit Service 3749ba
AC_ARG_ENABLE(debug,
Packit Service 3749ba
              AC_HELP_STRING([--enable-debug=no/default/yes],
Packit Service 3749ba
              [Turn on or off debugging]))
Packit Service 3749ba
Packit Service 3749ba
if test "$enable_debug" != "no"; then
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(WITH_DEBUG, 1, [Print debug output])
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(_DEBUG, 1, [In debug mode])
Packit Service 3749ba
	CFLAGS="$CFLAGS -g"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
if test "$enable_debug" = "yes"; then
Packit Service 3749ba
	debug_status="yes (-g, -O0, debug output)"
Packit Service 3749ba
	CFLAGS="$CFLAGS -O0"
Packit Service 3749ba
elif test "$enable_debug" = "no"; then
Packit Service 3749ba
	debug_status="no (no debug output, NDEBUG)"
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(NDEBUG, 1, [Disable glib assertions])
Packit Service 3749ba
else
Packit Service 3749ba
	debug_status="default (-g, debug output)"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_RESULT($debug_status)
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING(for more warnings)
Packit Service 3749ba
if test "$GCC" = "yes"; then
Packit Service 3749ba
	CFLAGS="$CFLAGS \
Packit Service 3749ba
		-Wall -Wstrict-prototypes -Wmissing-declarations \
Packit Service 3749ba
		-Wmissing-prototypes -Wnested-externs -Wpointer-arith \
Packit Service 3749ba
		-Wdeclaration-after-statement -Wformat=2 -Winit-self \
Packit Service 3749ba
		-Waggregate-return -Wno-missing-format-attribute \
Packit Service 3749ba
		-fno-strict-aliasing -fno-common"
Packit Service 3749ba
Packit Service 3749ba
	for option in -Wmissing-include-dirs -Wundef; do
Packit Service 3749ba
		SAVE_CFLAGS="$CFLAGS"
Packit Service 3749ba
		CFLAGS="$CFLAGS $option"
Packit Service 3749ba
		AC_MSG_CHECKING([whether gcc understands $option])
Packit Service 3749ba
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
Packit Service 3749ba
				  [has_option=yes],
Packit Service 3749ba
				  [has_option=no])
Packit Service 3749ba
		AC_MSG_RESULT($has_option)
Packit Service 3749ba
		if test $has_option = no; then
Packit Service 3749ba
			CFLAGS="$SAVE_CFLAGS"
Packit Service 3749ba
		fi
Packit Service 3749ba
	done
Packit Service 3749ba
else
Packit Service 3749ba
	AC_MSG_RESULT(no)
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_ENABLE(strict,
Packit Service 3749ba
              [AS_HELP_STRING([--enable-strict], [Strict code compilation])]
Packit Service 3749ba
             )
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([build strict])
Packit Service 3749ba
Packit Service 3749ba
if test "$enable_strict" = "yes"; then
Packit Service 3749ba
	CFLAGS="$CFLAGS -Werror"
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(WITH_STRICT, 1, [More strict checks])
Packit Service 3749ba
	strict_status="yes (-Werror, fatals)"
Packit Service 3749ba
else
Packit Service 3749ba
	strict_status="no"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_RESULT($strict_status)
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_CHECKING([whether to build with gcov testing])
Packit Service 3749ba
AC_ARG_ENABLE([coverage],
Packit Service 3749ba
		[AS_HELP_STRING([--enable-coverage], [Whether to enable coverage testing ])],
Packit Service 3749ba
		[],
Packit Service 3749ba
		[enable_coverage=no])
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_RESULT([$enable_coverage])
Packit Service 3749ba
Packit Service 3749ba
if test "$enable_coverage" = "yes"; then
Packit Service 3749ba
	if test "$GCC" != "yes"; then
Packit Service 3749ba
		AC_MSG_ERROR(Coverage testing requires GCC)
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	AC_PATH_PROG(GCOV, gcov, no)
Packit Service 3749ba
	if test "$GCOV" = "no" ; then
Packit Service 3749ba
		AC_MSG_ERROR(gcov tool is not available)
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	AC_PATH_PROG(LCOV, lcov, no)
Packit Service 3749ba
	if test "$LCOV" = "no" ; then
Packit Service 3749ba
		AC_MSG_ERROR(lcov tool is not installed)
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	AC_PATH_PROG(GENHTML, genhtml, no)
Packit Service 3749ba
	if test "$GENHTML" = "no" ; then
Packit Service 3749ba
		AC_MSG_ERROR(lcov's genhtml tool is not installed)
Packit Service 3749ba
	fi
Packit Service 3749ba
Packit Service 3749ba
	CFLAGS="$CFLAGS -O0 -g --coverage"
Packit Service 3749ba
	LDFLAGS="$LDFLAGS --coverage"
Packit Service 3749ba
fi
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL([WITH_COVERAGE], [test "$enable_coverage" = "yes"])
Packit Service 3749ba
AC_SUBST(LCOV)
Packit Service 3749ba
AC_SUBST(GCOV)
Packit Service 3749ba
AC_SUBST(GENHTML)
Packit Service 3749ba
Packit Service 3749ba
# ---------------------------------------------------------------------
Packit Service 3749ba
Packit Service 3749ba
P11KIT_LT_RELEASE=$P11KIT_CURRENT:$P11KIT_REVISION:$P11KIT_AGE
Packit Service 3749ba
AC_SUBST(P11KIT_LT_RELEASE)
Packit Service 3749ba
Packit Service 3749ba
echo $PACKAGE_VERSION | tr '.' ' ' | while read major minor unused; do
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(PACKAGE_MAJOR, $major, [Major version of package])
Packit Service 3749ba
	AC_DEFINE_UNQUOTED(PACKAGE_MINOR, $minor, [Minor version of package])
Packit Service 3749ba
	break
Packit Service 3749ba
done
Packit Service 3749ba
Packit Service 3749ba
case "$host" in
Packit Service 3749ba
*-*-darwin*)
Packit Service 3749ba
	# It seems like libtool lies about this see:
Packit Service 3749ba
	# https://bugs.freedesktop.org/show_bug.cgi?id=57714
Packit Service 3749ba
	SHLEXT='.so'
Packit Service 3749ba
	;;
Packit Service 3749ba
*)
Packit Service 3749ba
	eval SHLEXT=$shrext_cmds
Packit Service 3749ba
	;;
Packit Service 3749ba
esac
Packit Service 3749ba
Packit Service 3749ba
AC_DEFINE_UNQUOTED(SHLEXT, ["$SHLEXT"], [File extension for shared libraries])
Packit Service 3749ba
AC_SUBST(SHLEXT)
Packit Service 3749ba
Packit Service 3749ba
AC_DEFINE_UNQUOTED(EXEEXT, ["$EXEEXT"], [File extension for executables])
Packit Service 3749ba
Packit Service 3749ba
privatedir='${libexecdir}/p11-kit'
Packit Service 3749ba
AC_SUBST(privatedir)
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# systemd
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([systemd],
Packit Service 3749ba
            AS_HELP_STRING([--without-systemd],
Packit Service 3749ba
                           [Disable systemd socket activation]))
Packit Service 3749ba
Packit Service 3749ba
AS_IF([test "$with_systemd" != "no"], [
Packit Service 3749ba
	PKG_CHECK_MODULES([LIBSYSTEMD], [libsystemd], [],
Packit Service 3749ba
		[with_systemd=no])
Packit Service 3749ba
Packit Service 3749ba
	PKG_CHECK_VAR([systemduserunitdir], [systemd], [systemduserunitdir], [],
Packit Service 3749ba
		[with_systemd=no])
Packit Service 3749ba
Packit Service 3749ba
	AS_IF([test "$with_systemd" != "no"], [
Packit Service 3749ba
		with_systemd=yes
Packit Service 3749ba
		AC_DEFINE_UNQUOTED(WITH_SYSTEMD, 1, [Build with systemd socket activation])
Packit Service 3749ba
	])
Packit Service 3749ba
])
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL(WITH_SYSTEMD, [test "$with_systemd" = "yes"])
Packit Service 3749ba
Packit Service 3749ba
# --------------------------------------------------------------------
Packit Service 3749ba
# bash completion
Packit Service 3749ba
Packit Service 3749ba
AC_ARG_WITH([bash-completion],
Packit Service 3749ba
            AS_HELP_STRING([--without-bash-completion],
Packit Service 3749ba
                           [Don't install bash completion files]))
Packit Service 3749ba
Packit Service 3749ba
AS_IF([test "$with_bash_completion" != "no"], [
Packit Service 3749ba
	PKG_CHECK_VAR([bashcompdir], [bash-completion], [completionsdir],
Packit Service 3749ba
		[with_bash_completion=yes])
Packit Service 3749ba
	AC_SUBST(bashcompdir)
Packit Service 3749ba
])
Packit Service 3749ba
Packit Service 3749ba
AM_CONDITIONAL(WITH_BASH_COMPLETION, [test "$with_bash_completion" = "yes"])
Packit Service 3749ba
Packit Service 3749ba
Packit Service 3749ba
AC_CONFIG_FILES([Makefile
Packit Service 3749ba
	doc/Makefile
Packit Service 3749ba
	doc/manual/Makefile
Packit Service 3749ba
	po/Makefile.in
Packit Service 3749ba
	p11-kit/p11-kit-1.pc
Packit Service 3749ba
	p11-kit/pkcs11.conf.example
Packit Service 3749ba
	trust/trust-extract-compat
Packit Service 3749ba
	trust/test-init.sh
Packit Service 3749ba
])
Packit Service 3749ba
AC_OUTPUT
Packit Service 3749ba
Packit Service 3749ba
# Format paths arguments which should wrap correctly in the output
Packit Service 3749ba
indent='\n                                     '
Packit Service 3749ba
trust_status=$(echo "$with_trust_paths" | sed -e "s/:/$indent/g")
Packit Service 3749ba
Packit Service 3749ba
AC_MSG_NOTICE([build options:
Packit Service 3749ba
Packit Service 3749ba
    Host:                            $host
Packit Service 3749ba
    Debug build:                     $debug_status
Packit Service 3749ba
    Strict build:                    $strict_status
Packit Service 3749ba
    Build documentation:             $doc_status
Packit Service 3749ba
    System global config:            $p11_system_config_file
Packit Service 3749ba
    System module config directory:  $p11_system_config_modules
Packit Service 3749ba
    Package module config directory: $p11_package_config_modules
Packit Service 3749ba
    User global config:              $p11_user_config_file
Packit Service 3749ba
    User module config directory:    $p11_user_config_modules
Packit Service 3749ba
    Load relative module paths from: $p11_module_path
Packit Service 3749ba
Packit Service 3749ba
    With libtasn1 dependency:        $with_libtasn1
Packit Service 3749ba
    With libffi:                     $with_libffi
Packit Service 3749ba
    With hash implementation:        $with_hash_impl
Packit Service 3749ba
    With systemd:                    $with_systemd
Packit Service 3749ba
Packit Service 3749ba
    Build trust module:              $enable_trust_module
Packit Service 3749ba
    Trust module paths:              $trust_status
Packit Service 3749ba
Packit Service 3749ba
])