Blame configure.ac

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