Permalink
Fetching contributors…
Cannot retrieve contributors at this time
769 lines (655 sloc) 22.5 KB
# -*- Autoconf -*-
# $Id$
AC_PREREQ([2.61])
AC_INIT([rpkitools], [1.0])
# AC_REVISION is a great idea in theory, but the revision will always
# be wrong unless we do two checkins, so skip it for now. Someday.
dnl AC_REVISION([$Revision$])
AC_CONFIG_SRCDIR([rp/rcynic/rcynic.c])
AC_CONFIG_AUX_DIR([buildtools])
# I'm not sure we should really be using the $host_* variables as we
# are, some of the stuff we're doing with them looks more like
# $target_* to me now, but on the theory that we should not fix things
# that aren't broken, stick with $host_* for now.
AC_CANONICAL_HOST
dnl AC_CANONICAL_TARGET
# Remember whether CFLAGS or LDFLAGS were set explictly. This has to
# come early in the script, before we mess it up testing things.
if test "x${CFLAGS+set}" = "x" && test "x${LDFLAGS+set}" = "x"
then
CFLAGS_or_LDFLAGS_were_set=no
else
CFLAGS_or_LDFLAGS_were_set=yes
fi
# Put the user option stuff up front.
AC_ARG_WITH([system_openssl], [AS_HELP_STRING([--with-system-openssl], [Link against system copy of OpenSSL])], [], [with_system_openssl=auto])
AC_ARG_ENABLE([openssl_asm], [AS_HELP_STRING([--disable-openssl-asm], [Don't let OpenSSL build assembler code])], [], [enable_openssl_asm=auto])
AC_ARG_ENABLE([ca_tools], [AS_HELP_STRING([--disable-ca-tools], [Don't build any of the CA tools])], [], [enable_ca_tools=yes])
AC_ARG_ENABLE([rp_tools], [AS_HELP_STRING([--disable-rp-tools], [Don't build any of the relying party tools])], [], [enable_rp_tools=yes])
AC_ARG_ENABLE([target_installation], [AS_HELP_STRING([--disable-target-installation], [Don't perform final target installation])], [], [enable_target_installation=yes])
AC_ARG_ENABLE([wsgi_daemon_mode], [AS_HELP_STRING([--enable-wsgi-daemon-mode=user[[:group]]], [Run the web portal as a separate process])], [], [enable_wsgi_daemon_mode=no])
AC_ARG_ENABLE([python_install_layout], [AS_HELP_STRING([--enable-python-install-layout=layout], [Specify Python --install-layout])], [], [enable_python_install_layout=auto])
AC_ARG_ENABLE([wsgi_python_egg_cache], [AS_HELP_STRING([--enable-wsgi-python-egg-cache=dir[[:user]]], [Set up PYTHON_EGG_CACHE in wsgi wrapper])], [], [enable_wsgi_python_egg_cache=auto])
AC_ARG_ENABLE([runtime_dependencies], [AS_HELP_STRING([--disable-runtime-dependencies], [Don't enforce runtime dependencies])], [], [enable_runtime_dependencies=yes])
AC_ARG_VAR([RCYNIC_DIR], [Where to put output files from rcynic and rpki-rtr])
AC_ARG_VAR([APACHE_VERSION], [Version of Apache httpd, mostly used on FreeBSD where it determines some of the directory names])
# Obsolete options. If you know of a better way to handle this, tell me.
AC_ARG_ENABLE([python], [AS_HELP_STRING([--disable-python], [(Obsolete, do not use)])], [AC_MSG_ERROR([--disable-python is obsolete. Please see the --disable-ca-tools option])], [])
AC_ARG_ENABLE([django], [AS_HELP_STRING([--disable-django], [(Obsolete, do not use)])], [AC_MSG_ERROR([--disable-django is obsolete. Please see the --disable-ca-tools option])], [])
AC_ARG_ENABLE([rpki_rtr], [AS_HELP_STRING([--disable-rpki-rtr], [(Obsolete, do not use)])], [AC_MSG_ERROR([--disable-rpki-rtr is obsolete. Please see the --disable-rp-tools option])], [])
AC_ARG_ENABLE([rcynic_jail], [AS_HELP_STRING([--enable-rcynic-jail], [(Obsolete, do not use)])], [AC_MSG_ERROR([--enable-rcynic-jail is obsolete.])], [])
AC_PROG_CC
AC_PROG_INSTALL
AC_CHECK_SIZEOF([long])
AC_MSG_CHECKING([whether compiler and linker support -Wl,-Bsymbolic])
old_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main (int argc, char *argv[]) { return 0; }]])],
[linker_supports_Bsymbolic=yes],
[linker_supports_Bsymbolic=no])
AC_MSG_RESULT([$linker_supports_Bsymbolic])
LDFLAGS="$old_LDFLAGS"
unset old_LDFLAGS
if test $linker_supports_Bsymbolic = yes
then
POW_LDFLAGS='-Wl,-Bsymbolic'
else
POW_LDFLAGS=''
fi
AC_SUBST(POW_LDFLAGS)
AC_MSG_CHECKING([whether compiler and linker support -Wl,-z,noexecstack])
old_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main (int argc, char *argv[]) { return 0; }]])],
[linker_supports_znoexecstack=yes],
[linker_supports_znoexecstack=no])
AC_MSG_RESULT([$linker_supports_znoexecstack])
if test $linker_supports_znoexecstack = no
then
LDFLAGS="$old_LDFLAGS"
fi
unset old_LDFLAGS
AC_PROG_GREP
AC_PATH_PROG([PYTHON], [python])
AC_PATH_PROG([XSLTPROC], [xsltproc])
AC_PATH_PROG([AWK], [awk])
AC_PATH_PROG([SORT], [sort])
AC_PATH_PROG([RRDTOOL], [rrdtool])
AC_PATH_PROG([TRANG], [trang], [\${abs_top_srcdir}/buildtools/trang-not-found])
AC_PATH_PROG([RSYNC], [rsync])
AC_PATH_PROG([SUDO], [sudo])
# See whether we need to check for dependencies that we only need at
# runtime. We do this by default when compiling from source to avoid
# surprises after installation, but this just adds pain when building
# binary packages within a platform framework which already handles
# all the dependencies for us, so we need a way to turn it off.
case $enable_runtime_dependencies in
yes|no)
;;
*)
AC_MSG_ERROR([Unrecognized value for --enable-runtime-dependencies: $enable_runtime_dependencies])
;;
esac
# Figure out whether we want RP tools, CA tools, or both
AC_MSG_CHECKING([whether user wants the RP tools])
case $enable_rp_tools in
yes|no)
build_rp_tools=$enable_rp_tools
;;
*)
AC_MSG_ERROR([Unrecognized value for --enable-rp-tools: $enable_rp_tools])
;;
esac
AC_MSG_RESULT([$build_rp_tools])
AC_MSG_CHECKING([whether user wants the CA tools])
case $enable_ca_tools in
yes|no)
build_ca_tools=$enable_ca_tools
;;
*)
AC_MSG_ERROR([Unrecognized value for --enable-ca-tools: $enable_ca_tools])
;;
esac
AC_MSG_RESULT([$build_ca_tools])
if test $build_rp_tools = no && test $build_ca_tools = no
then
AC_MSG_ERROR([Building with neither RP tools nor CA tools makes no sense])
fi
# Figure out whether we need to build our own OpenSSL library or can
# use the system libraries. We're looking for two recent features:
# CMS and RFC 3779 support. We also have to check whether the user
# has an opinion on all this. In the "auto" case (no
# --with-system-openssl option specified in any form), we may need to
# check a platform-specific location (eg, /usr/local on FreeBSD).
#
# At this point all of the C code is in the RP tools package, so we can
# skip all this if we're just building the CA tools.
if test $build_rp_tools = no
then
build_openssl=no
else
old_CFLAGS="$CFLAGS"
old_LDFLAGS="$LDFLAGS"
case $with_system_openssl in
yes|auto)
if test $CFLAGS_or_LDFLAGS_were_set = no
then
case $host_os in
freebsd*)
CFLAGS="-I/usr/local/include $CFLAGS"
LDFLAGS="-L/usr/local/lib $LDFLAGS"
;;
esac
fi
;;
no|/usr)
:
;;
*)
CFLAGS="-I$with_system_openssl/include $CFLAGS"
LDFLAGS="-L$with_system_openssl/lib $LDFLAGS"
esac
case $with_system_openssl in
no)
have_usable_openssl=no
;;
*)
AC_CHECK_LIB([crypto], [v3_addr_validate_path],
[system_openssl_has_rfc3779=yes],
[system_openssl_has_rfc3779=no])
AC_CHECK_LIB([crypto], [CMS_verify],
[system_openssl_has_cms=yes],
[system_openssl_has_cms=no])
AC_MSG_CHECKING([whether system OpenSSL library is usable])
if test $system_openssl_has_rfc3779 = yes && test $system_openssl_has_cms = yes
then
have_usable_openssl=yes
else
have_usable_openssl=no
fi
AC_MSG_RESULT([$have_usable_openssl])
esac
AC_MSG_CHECKING([whether we need to build a private copy of OpenSSL])
case $with_system_openssl in
yes)
build_openssl=no
if test $have_usable_openssl = no
then
AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support, try --with-system-openssl=/path/to/openssl])
fi
;;
no)
build_openssl=yes
;;
auto)
if test $have_usable_openssl = no
then
build_openssl=yes
else
build_openssl=no
fi
;;
*)
build_openssl=no
if test $have_usable_openssl = no
then
AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support in $with_system_openssl])
fi
esac
AC_MSG_RESULT([$build_openssl])
build_openssl_asm=undefined
if test $build_openssl = yes
then
CFLAGS="$old_CFLAGS"
LDFLAGS="$old_LDFLAGS"
AC_MSG_CHECKING([whether to enable assembly code in OpenSSL])
case $enable_openssl_asm in
yes|no)
build_openssl_asm=$enable_openssl_asm
;;
auto)
case $host in
x86_64-*-linux*)
build_openssl_asm=no
;;
*)
build_openssl_asm=yes
;;
esac
;;
*)
AC_MSG_ERROR([Unrecognized value for --enable-openssl-asm: $enable_openssl_asm])
;;
esac
AC_MSG_RESULT([$enable_openssl_asm])
fi
fi
# RCYNIC_DIR is a "precious" argument variable to this script (see
# autoconf doc), which means that autoconf is careful with whatever
# value (if any) was passed in, and that it's already been declared
# for variable substitution. We still have to set a default value for
# it, though, and we might as well handle DESTDIR while we're at it.
if test "X$RCYNIC_DIR" = "X"
then
RCYNIC_DIR='/var/rcynic'
fi
# APACHE_VERSION is another "precious" argument to this script. It
# mostly matters on FreeBSD, where most things involving Apache encode
# the Apache version number into their filenames.
#
# If we can't figure out the version number, we assume 2.4 and hope
# for the best; at some point we may need to do better than this.
#
# apachectl sometimes whines about ulimits, so we discard its stderr.
# If you're reading this because this test is misbehaving, well,
# try not discarding stderr.
AC_MSG_CHECKING([Apache version])
if test "X$APACHE_VERSION" = "X"
then
for apachectl in /usr/local/sbin/apachectl /usr/sbin/apachectl
do
if test -x $apachectl
then
APACHE_VERSION=`$apachectl -v 2>/dev/null | sed -n 's=^Server version: Apache/\([[0-9]]*\)\.\([[0-9]]*\)\..*$=\1\2=p'`
break
fi
done
fi
if test "X$APACHE_VERSION" = "X"
then
APACHE_VERSION="24"
msg='not found, defaulting to 2.4'
else
msg=`echo $APACHE_VERSION | sed 's=.=&.='`
fi
AC_MSG_RESULT([$msg])
# Perhaps there should be a way to set these, but for now just
# wire them in here so at least they're consistent in all Makefiles.
AC_SUBST(RPKI_USER, [rpki])
AC_SUBST(RPKI_GROUP, [rpki])
RCYNIC_CONF_DATA="${RCYNIC_DIR}/data"
AC_SUBST(RCYNIC_CONF_DATA)
# Check whether to do "final target installation". This means actions
# that can only be done when installing a package, as opposed to when
# building a package.
AC_MSG_CHECKING([whether to do final target installation on "make install"])
case $enable_target_installation in
yes|no)
;;
*)
AC_MSG_ERROR([Unrecognized value for --enable-target-installation: $enable_target_installation])
;;
esac
AC_MSG_RESULT([$enable_target_installation])
# Some bits of post-installation setup are complicated enough that
# it's simplest to have different rule sets for different platforms.
case $host_os in
darwin*)
RCYNIC_MAKE_RULES='rp/rcynic/rules.darwin.mk'
RTR_ORIGIN_MAKE_RULES='rp/rpki-rtr/rules.darwin.mk'
CA_MAKE_RULES='ca/rules.darwin.mk'
;;
freebsd*)
RCYNIC_MAKE_RULES='rp/rcynic/rules.freebsd.mk'
RTR_ORIGIN_MAKE_RULES='rp/rpki-rtr/rules.freebsd.mk'
CA_MAKE_RULES='ca/rules.freebsd.mk'
;;
linux*)
RCYNIC_MAKE_RULES='rp/rcynic/rules.linux.mk'
RTR_ORIGIN_MAKE_RULES='rp/rpki-rtr/rules.linux.mk'
CA_MAKE_RULES='ca/rules.linux.mk'
;;
*)
RCYNIC_MAKE_RULES='rp/rcynic/rules.unknown.mk'
RTR_ORIGIN_MAKE_RULES='rp/rpki-rtr/rules.unknown.mk'
CA_MAKE_RULES='ca/rules.unknown.mk'
;;
esac
AC_SUBST_FILE(RCYNIC_MAKE_RULES)
AC_SUBST_FILE(RTR_ORIGIN_MAKE_RULES)
AC_SUBST_FILE(CA_MAKE_RULES)
# Where to put HTML files is similarly platform dependent, we have to know.
# rcynic-cron will skip generating HTML files if it has no place to put them.
AC_MSG_CHECKING([where rcynic-html output should go])
case $host_os in
freebsd*)
RCYNIC_HTML_DIR="/usr/local/www/apache${APACHE_VERSION}/data/rcynic"
;;
linux*)
RCYNIC_HTML_DIR='/var/www/html/rcynic'
;;
*)
RCYNIC_HTML_DIR=''
;;
esac
AC_MSG_RESULT([$RCYNIC_HTML_DIR])
AC_SUBST(RCYNIC_HTML_DIR)
# Sort out which things to install, depending on whether
# we're doing final target installation.
#
# As things have evolved, this a bit repetitive. Simplify someday, maybe.
RCYNIC_INSTALL_TARGETS='install-always'
RTR_ORIGIN_INSTALL_TARGETS='install-always'
CA_INSTALL_TARGETS='install-always'
CFG_INSTALL_TARGETS='install-always'
if test $enable_target_installation = yes
then
RCYNIC_INSTALL_TARGETS="$RCYNIC_INSTALL_TARGETS install-postconf"
RTR_ORIGIN_INSTALL_TARGETS="$RTR_ORIGIN_INSTALL_TARGETS install-postconf"
CA_INSTALL_TARGETS="$CA_INSTALL_TARGETS install-postconf"
CFG_INSTALL_TARGETS="$CFG_INSTALL_TARGETS install-postconf"
fi
AC_SUBST(RCYNIC_INSTALL_TARGETS)
AC_SUBST(RTR_ORIGIN_INSTALL_TARGETS)
AC_SUBST(CA_INSTALL_TARGETS)
AC_SUBST(CFG_INSTALL_TARGETS)
# Now a bunch of checks to figure out what we can do with Python. If
# we don't have Python at all, none of the rest of this matters. If
# we do have Python, we need to check for required packages and
# versions.
if test "x$PYTHON" = "x"
then
AC_MSG_ERROR([I can't find a Python binary at all, this isn't going to work. Perhaps you need to set PATH?])
fi
AC_MSG_CHECKING([for Python version 2.7 or higher])
have_acceptable_python=`$PYTHON -c 'import sys; print "yes" if sys.version_info[[0]] == 2 and sys.version_info[[1]] >= 7 else "no"'`
AC_MSG_RESULT([$have_acceptable_python])
AC_MSG_CHECKING([distutils to find out where Python.h should be])
python_h=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc() + "/Python.h"'`
AC_MSG_RESULT([$python_h])
AC_CHECK_HEADER([$python_h], [have_python_h=yes], [have_python_h=no])
AC_MSG_CHECKING([for lxml.etree])
if $PYTHON -c 'import lxml.etree' 2>/dev/null; then have_lxml=yes; else have_lxml=no; fi
AC_MSG_RESULT([$have_lxml])
AC_MSG_CHECKING([for Tornado])
if $PYTHON -c 'import tornado' 2>/dev/null; then have_tornado=yes; else have_tornado=no; fi
AC_MSG_RESULT([$have_tornado])
if test $have_tornado = yes
then
AC_MSG_CHECKING([for Tornado 4.2 or higher])
have_acceptable_tornado=`$PYTHON -c "import tornado; print 'no' if tornado.version_info < (4, 2) else 'yes'"`
AC_MSG_RESULT([$have_acceptable_tornado])
else
have_acceptable_tornado=no
fi
AC_MSG_CHECKING([for Django])
if $PYTHON -c 'import django' 2>/dev/null; then have_django=yes; else have_django=no; fi
AC_MSG_RESULT([$have_django])
if test $have_django = yes
then
AC_MSG_CHECKING([for Django 1.8 or higher])
have_acceptable_django=`$PYTHON -c "import django; print 'no' if django.VERSION < (1, 8) else 'yes'"`
AC_MSG_RESULT([$have_acceptable_django])
else
have_acceptable_django=no
fi
AC_MSG_CHECKING([for PyYAML])
if $PYTHON -c 'import yaml' 2>/dev/null; then have_pyyaml=yes; else have_pyyaml=no; fi
AC_MSG_RESULT([$have_pyyaml])
AC_MSG_CHECKING([for vobject])
if $PYTHON -c 'import vobject' 2>/dev/null; then have_vobject=yes; else have_vobject=no; fi
AC_MSG_RESULT([$have_vobject])
AC_MSG_CHECKING([for argparse])
if $PYTHON -c 'import argparse' 2>/dev/null; then have_argparse=yes; else have_argparse=no; fi
AC_MSG_RESULT([$have_argparse])
# Warnings and dependency errors. Exit on fatal errors deferred until
# the very end of this, so we can warn the user about all known
# problems in a single pass. Errors that prevent build or basic
# installation are always fatal; errors that prevent proper operation
# at runtime or during post-installation setup can be converted to
# warnings by --disable-runtime-dependencies.
build_ok=yes
runtime_ok=yes
if test $have_acceptable_python = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI code requires Python version 2.x, for x = 7 or higher.])
fi
if test $build_rp_tools = yes
then
if test $have_python_h = no
then
build_ok=no
AC_MSG_WARN([I can't find Python.h. Python sources are required to build the rpki.POW module.])
fi
if test "x$RRDTOOL" = "x"
then
runtime_ok=no
AC_MSG_WARN([rcynic-html requires rrdtool.])
fi
if test "X$RSYNC" = "X"
then
runtime_ok=no
AC_MSG_WARN([The RPKI relying party tools require rsync.])
fi
fi
if test $have_lxml = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI tools require the Python LXML package.])
fi
if test $have_acceptable_django = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI tools require Django 1.8 or higher.])
fi
if test $have_argparse = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI tools require the Python argparse module.])
fi
if test $have_acceptable_tornado = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI tools require Tornado 4.2 or higher.])
fi
if test $build_ca_tools = yes
then
if test $have_vobject = no
then
runtime_ok=no
AC_MSG_WARN([The RPKI CA GUI requires the Python vobject module.])
fi
if test $have_pyyaml = no
then
AC_MSG_WARN([PyYAML missing, so "make test" will not work properly.])
fi
if test "x$XSLTPROC" = "x"
then
AC_MSG_WARN([xsltproc missing, so "make test" will not work properly.])
fi
fi
if test $build_ok = no || test $runtime_ok = no
then
if test $build_rp_tools = yes
then
AC_MSG_WARN([If you do not wish to install the RPKI RP tools, please specify --disable-rp-tools as an argument to this configure script.])
fi
if test $build_ca_tools = yes
then
AC_MSG_WARN([If you do not wish to install the RPKI CA tools, please specify --disable-ca-tools as an argument to this configure script.])
fi
if test $build_ok = no || test $enable_runtime_dependencies = yes
then
AC_MSG_ERROR([Please correct the problems above then re-run this configuration script.])
else
AC_MSG_WARN([Runtime dependency enforcement disabled, proceeding (at your own risk)])
fi
fi
# Figure out whether we are on a Debian-derived system where we need
# to tell setup.py about Debian installation layout.
if test $build_ca_tools = yes
then
AC_MSG_CHECKING([whether we need to tell distutils to use a particular installation layout])
looks_like_debian=no
if test -x /usr/bin/lsb_release
then
case `/usr/bin/lsb_release -is` in
Debian|Ubuntu)
looks_like_debian=yes
;;
esac
fi
if test $looks_like_debian = yes
then
install_layout="deb"
else
install_layout="unix"
fi
case $enable_python_install_layout in
yes|no)
use_install_layout=$enable_python_install_layout
;;
auto)
use_install_layout=no
;;
*)
use_install_layout=yes
install_layout="$enable_python_install_layout"
;;
esac
if test $use_install_layout = yes
then
SETUP_PY_INSTALL_LAYOUT="--install-layout=$install_layout"
else
SETUP_PY_INSTALL_LAYOUT=''
fi
AC_MSG_RESULT([$use_install_layout $SETUP_PY_INSTALL_LAYOUT])
AC_SUBST(SETUP_PY_INSTALL_LAYOUT)
fi
# Figure out whether we're going to want a PYTHON_EGG_CACHE directory.
# This is mostly just a pass through to rpkigui-apache-confgen and rpki.wsgi
# via rpki.autoconf.
AC_MSG_CHECKING([whether we need rpki.wgi to use a Python egg cache])
save_IFS="$IFS"
IFS=':' read WSGI_PYTHON_EGG_CACHE_DIR WSGI_PYTHON_EGG_CACHE_USER <<_EOF
$enable_wsgi_python_egg_cache
_EOF
IFS="$save_IFS"
if test "X$WSGI_PYTHON_EGG_CACHE_DIR" = "Xauto"
then
case $host_os in
freebsd*) WSGI_PYTHON_EGG_CACHE_DIR=yes;;
*) WSGI_PYTHON_EGG_CACHE_DIR=no;;
esac
fi
case $WSGI_PYTHON_EGG_CACHE_DIR in
yes)
WSGI_PYTHON_EGG_CACHE_DIR='${datarootdir}/rpki/python-eggs'
;;
no)
WSGI_PYTHON_EGG_CACHE_DIR=''
;;
esac
if test "X$WSGI_PYTHON_EGG_CACHE_DIR" != "X" &&
test "X$WSGI_PYTHON_EGG_CACHE_USER" = "X"
then
case $host_os in
freebsd*) WSGI_PYTHON_EGG_CACHE_USER="www";;
linux*) WSGI_PYTHON_EGG_CACHE_USER="www-data";;
esac
fi
AC_SUBST(WSGI_PYTHON_EGG_CACHE_DIR)
AC_SUBST(WSGI_PYTHON_EGG_CACHE_USER)
if test "X$WSGI_PYTHON_EGG_CACHE_DIR" = "X"
then
AC_MSG_RESULT([no])
elif test "X$WSGI_PYTHON_EGG_CACHE_USER" != "X"
then
AC_MSG_RESULT([$WSGI_PYTHON_EGG_CACHE_DIR (user $WSGI_PYTHON_EGG_CACHE_USER)])
else
AC_MSG_RESULT([$WSGI_PYTHON_EGG_CACHE_DIR])
fi
# Tell the Makefiles and setup.py which parts of this package we've decided to build.
if test $build_openssl = yes; then OPENSSL_TARGET=openssl; else OPENSSL_TARGET=noop; fi
if test $build_rp_tools = yes; then RP_TARGET=rp; else RP_TARGET=noop; fi
if test $build_ca_tools = yes; then CA_TARGET=ca; else CA_TARGET=noop; fi
AC_SUBST(OPENSSL_TARGET)
AC_SUBST(RP_TARGET)
AC_SUBST(CA_TARGET)
AC_CONFIG_FILES([Makefile])
# OpenSSL has its own build system that bears no relationship to
# anything but itself, and our use of it is a bit weird, so this is a
# BFMI (Brute Force and Massive Ignorance) job.
if test $build_openssl = yes
then
AC_CONFIG_FILES([openssl/Makefile
openssl/tests/Makefile])
AC_MSG_CHECKING([what configuration target to use when building OpenSSL])
case $host in
i*86-apple-darwin*)
if test "$ac_cv_sizeof_long" = 8
then
OPENSSL_CONFIG_COMMAND='./Configure darwin64-x86_64-cc'
fi
;;
*)
if test $build_openssl_asm = yes
then
OPENSSL_CONFIG_COMMAND="MACHINE=$host_cpu ./config"
else
OPENSSL_CONFIG_COMMAND="MACHINE=$host_cpu ./config no-asm"
fi
;;
esac
AC_SUBST(OPENSSL_CONFIG_COMMAND)
AC_MSG_RESULT([$OPENSSL_CONFIG_COMMAND])
AC_MSG_CHECKING([what glob to use when renaming OpenSSL shared libraries])
case $host in
*-apple-darwin*)
OPENSSL_SO_GLOB='*.dylib'
;;
*)
OPENSSL_SO_GLOB='*.so*'
;;
esac
AC_SUBST(OPENSSL_SO_GLOB)
AC_MSG_RESULT([$OPENSSL_SO_GLOB])
# NB: We put our OpenSSL directory at the *front* of the
# search list to preempt conflicts with system copies.
CFLAGS="-I\${abs_top_srcdir}/openssl/openssl/include $CFLAGS"
LIBS="\${abs_top_builddir}/openssl/openssl/libcrypto.a $LIBS"
else
LIBS="$LIBS -lcrypto"
fi
if test $build_rp_tools = yes
then
AC_CONFIG_FILES([rp/Makefile
rp/config/Makefile
rp/rcynic/Makefile
rp/utils/Makefile
rp/rpki-rtr/Makefile])
fi
if test $build_ca_tools = yes
then
AC_CONFIG_FILES([ca/Makefile
ca/tests/Makefile])
fi
if test $build_ca_tools = yes
then
case $enable_wsgi_daemon_mode in
no)
;;
yes)
AC_MSG_ERROR([You must specify the user to run the wsgi process as with --enable-wsgi-daemon-mode=USER])
;;
*)
AC_MSG_CHECKING([how to run mod_wsgi daemon mode])
save_IFS="$IFS"
IFS=':'
read user group <<_EOF
$enable_wsgi_daemon_mode
_EOF
IFS="$save_IFS"
AC_SUBST(WSGI_DAEMON_PROCESS, "WSGIDaemonProcess rpkigui user=$user ${group:+group=}${group} display-name=%{GROUP}")
AC_SUBST(WSGI_PROCESS_GROUP, "WSGIProcessGroup rpkigui")
AC_MSG_RESULT([with user "$user" and group "${group:-default}"])
;;
esac
fi
# Now that we're finally done with all the conditional changes to
# CFLAGS, add a search directive for our own header directory. If we
# ever get to the point of having our own library directory, we'd add
# it here too, but for the moment our shared C code is all in .h files.
CFLAGS="$CFLAGS -I\${abs_top_srcdir}/h"
AC_OUTPUT