xca/configure.ac
Christian Hohnstaedt 93a536656b Close #213: configure.ac: add description to AC_DEFINE_UNQUOTED
Some distributions use the autoheader command to generate and
overwrite the local.h file.

In contrast to autoconf, autoheader insists on the "description"
argument in AC_DEFINE_UNQUOTED(), so add it.
2020-08-11 07:46:10 +02:00

284 lines
9.0 KiB
Plaintext

AC_INIT([X Certificate and Key management],
m4_esyscmd([tr -d '\n' < VERSION]),
[christian@hohnstaedt.de],
[xca],
[http://xca.hohnstaedt.de])
ITERATION="$(cd "$srcdir" && git describe 2>/dev/null | sed -n 's/.*-\(@<:@0-9@:>@*\)-g.*/.\1/p')"
AC_SUBST([ITERATION])
AC_DEFINE_UNQUOTED([VERSION_ITERATION], ["${ITERATION}"], [Development iteration])
AC_MSG_NOTICE([ ***************************************************])
AC_MSG_NOTICE([ * ${PACKAGE_NAME} ${PACKAGE_VERSION}${ITERATION}])
AC_MSG_NOTICE([ ***************************************************])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_CXX
AC_LANG(C++)
AC_CHECK_TOOL(STRIP, [strip], [:])
AC_CHECK_TOOL(WINDRES, [windres], [:])
VERSIONHASH="$(echo "${PACKAGE_VERSION}${ITERATION}" | shasum | cut -b -12)"
AC_SUBST([VERSIONHASH])
if test -d "$INSTALL_DIR"; then
AC_MSG_NOTICE([Using INSTALL_DIR $INSTALL_DIR])
test -d "${INSTALL_DIR}/include" && CXXFLAGS="${CXXFLAGS} -I${INSTALL_DIR}/include"
test -d "${INSTALL_DIR}/lib" && LIBS="${LIBS} -L${INSTALL_DIR}/lib"
fi
case "$(${CXX} -dumpmachine)" in
*apple-darwin*)
HOST=DARWIN
CXXFLAGS="${CXXFLAGS} -pipe -gdwarf-2"
LIBS="${LIBS} -framework IOKit -framework CoreFoundation"
for d in $(find /usr/local/Cellar -name 'pkgconfig' -type d); do
PKG_CONFIG_PATH="${d}:${PKG_CONFIG_PATH}"
done
export DYLD_LIBRARY_PATH
;;
*mingw*)
HOST=WINDOWS
SUFFIX=".exe"
PKG_CONFIG="$(which pkg-config) --define-prefix"
PKG_CONFIG_LIBDIR=""
CXXFLAGS="${CXXFLAGS} -mthreads -mwindows -mnop-fun-dllimport -Wno-strict-aliasing"
LIBS="${LIBS} -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -static-libgcc"
;;
*linux*)
HOST=LINUX
;;
*)
HOST=UNIX
;;
esac
AC_MSG_NOTICE([Compiling for host: $HOST])
AC_SUBST([HOST])
AC_SUBST([MACDEPLOYQT])
AC_SUBST([SUFFIX])
AC_SUBST([INSTALL_DIR])
export PKG_CONFIG_PATH
export LD_LIBRARY_PATH
if test "$srcdir" != "."; then
exist=""
for f in Local.mak local.h commithash.h; do
test ! -r "$srcdir"/"$f" || exist="$exist $f"
done
if test -n "$exist"; then
AC_ERROR([The source directory (${srcdir}) contains the file(s):$exist.
They must be removed before building here.])
fi
fi
# Detect the OpenSSL libraries and header
#########################################
AC_ARG_WITH([openssl],
AS_HELP_STRING([--with-openssl], [Select the OpenSSL installation directory]),
[ if test -d "$withval"; then
_OPENSSLDIR="$withval"
else
AC_MSG_WARN([OpenSSL directory '$withval' does not exist or is not a directory])
fi
], [_OPENSSLDIR="$OPENSSLDIR"])
if test -n "${_OPENSSLDIR}" && test -d "${_OPENSSLDIR}"; then
_OPENSSLDIR=`cd ${_OPENSSLDIR} && pwd`
PKG_CONFIG_PATH="${_OPENSSLDIR}/lib/pkgconfig:${PKG_CONFIG_PATH}"
LD_LIBRARY_PATH="${_OPENSSLDIR}/lib:${LD_LIBRARY_PATH}"
DYLD_LIBRARY_PATH="${_OPENSSLDIR}/lib:${DYLD_LIBRARY_PATH}"
fi
PKG_CHECK_MODULES([OpenSSL],
[libcrypto >= 0.9.8], [ ],
[
OpenSSL_LIBS=" -lcrypto ";
AC_MSG_WARN([OpenSSL pkg-config failed, using fallback defaults (${OpenSSL_LIBS})]);
]
)
OPENSSL_LIBS="$OpenSSL_LIBS"
OPENSSL_CFLAGS="$OpenSSL_CFLAGS"
# Detect the Qt libraries and header
####################################
AC_ARG_WITH([qt],
AS_HELP_STRING([--with-qt], [Select the Qt installation directory]),
[ if test -d "$withval"; then
_QTDIR="$withval"
else
AC_MSG_WARN([Qt directory '$withval' does not exist or is not a directory])
fi
], [_QTDIR="${QTDIR}"])
if test -n "${_QTDIR}" && test -d "${_QTDIR}"; then
_QTDIR=`cd ${_QTDIR} && pwd`
PKG_CONFIG_PATH="${_QTDIR}/lib/pkgconfig:${PKG_CONFIG_PATH}"
LD_LIBRARY_PATH="${_QTDIR}/lib:${LD_LIBRARY_PATH}"
DYLD_LIBRARY_PATH="${_QTDIR}/lib:${DYLD_LIBRARY_PATH}"
fi
AC_ARG_WITH([qt-version],
AS_HELP_STRING([--with-qt-version], [Select the Qt version]),
[WANT_QT_VERSION="$withval"],
[WANT_QT_VERSION=detect])
if test "${WANT_QT_VERSION}" = detect -o "${WANT_QT_VERSION}" = 5; then
PKG_CHECK_MODULES(Qt5, [Qt5Core >= 5.0 Qt5Widgets >= 5.0 Qt5Sql >= 5.0], [
_QT_HOST_BINS="`pkg-config --variable=host_bins Qt5Core`"
QT_MOC="${_QT_HOST_BINS}/moc"
QT_UIC="${_QT_HOST_BINS}/uic"
if test "$HOST" = "DARWIN"; then
FRAMEDIR=`pkg-config --variable=libdir Qt5Core`
Qt5_CFLAGS="$Qt5_CFLAGS -std=c++11 -F${FRAMEDIR} -I${FRAMEDIR}/QtCore.framework/Headers -I${FRAMEDIR}/QtGui.framework/Headers -I${FRAMEDIR}/QtWdgets.framework/Headers -I${FRAMEDIR}/QtSql.framework/Headers"
Qt5_LDFLAGS=" -Xlinker -rpath -Xlinker ${FRAMEDIR}"
fi
WANT_QT_VERSION=5
QT_VERSION=5
QT_CFLAGS="${Qt5_CFLAGS} -fPIC"
QT_LIBS="${Qt5_LIBS}${Qt5_LDFLAGS}"
],[ : ])
fi
if test "${WANT_QT_VERSION}" = detect -o "${WANT_QT_VERSION}" = 4; then
PKG_CHECK_MODULES(Qt4, [QtCore >= 4.7 QtCore < 5.0 QtGui >= 4.7 QtGui < 5.0 QtSql >= 4.7 QtSql < 5.0], [
QT_MOC="`pkg-config --variable=moc_location QtCore`"
QT_UIC="`pkg-config --variable=uic_location QtCore`"
if test -n "${QT_MOC}"; then
_QT_HOST_BINS="`dirname ${QT_MOC}`"
fi
if test "$HOST" = "DARWIN"; then
FRAMEDIR=`pkg-config --variable=libdir QtCore`
Qt4_CFLAGS="$Qt4_CFLAGS -F${FRAMEDIR} -I${FRAMEDIR}/QtCore.framework/Headers -I${FRAMEDIR}/QtGui.framework/Headers -I${FRAMEDIR}/QtSql.framework/Headers"
Qt4_LDFLAGS=" -Xlinker -rpath -Xlinker ${FRAMEDIR}"
fi
WANT_QT_VERSION=4
QT_VERSION=4
QT_CFLAGS="${Qt4_CFLAGS}"
QT_LIBS="${Qt4_LIBS}${Qt4_LDFLAGS}"
],[ : ])
fi
if test -z "${QT_VERSION}"; then
if test -z "$DARWIN"; then
QT_LIBS=" -lQtCore -lQtGui "
else
_QT_HOST_BINS="${_QTDIR}/bin"
QT_MOC="${_QT_HOST_BINS}/moc"
QT_UIC="${_QT_HOST_BINS}/uic"
FRAMEDIR=${_QTDIR}/lib
QT_LIBS=" -framework QtGui -framework QtCore -framework QtWidgets -framework QtSql -Xlinker -rpath -Xlinker ${FRAMEDIR}"
QT_CFLAGS="-std=c++11 -F${FRAMEDIR} -I${FRAMEDIR}/QtCore.framework/Headers -I${FRAMEDIR}/QtGui.framework/Headers -I${FRAMEDIR}/QtCore.framework/Headers -I${FRAMEDIR}/QtWidgets.framework/Headers -I${FRAMEDIR}/QtSql.framework/Headers"
fi
AC_MSG_WARN([Qt pkg-config failed, using fallback defaults (${QT_LIBS})]);
fi
QT_DIR="$_QTDIR"
# Delete trailing d (Debug) from Qt libs (@<:@ == [) (@:>@ == ])
QT_LIBS="$(echo " $QT_LIBS " | sed 's/-lQt\(@<:@^ @:>@*\)d\s/-lQt\1 /g')"
AC_SUBST([QT_CFLAGS])
AC_SUBST([QT_LIBS])
AC_SUBST([QT_DIR])
# Setup MOC UIC RCC LRELEASE LCONVERT with absolute PATH
if test ! -x "${QT_MOC}"; then
QT_MOC="`which moc-qt${QT_VERSION} || which moc`"
fi
if test ! -x "${QT_UIC}"; then
QT_UIC="`which uic-qt${QT_VERSION} || which uic`"
fi
QT_BIN_PATH="${_QT_HOST_BINS}:$PATH"
AC_PATH_PROG([QT_LRELEASEQT], [lrelease-qt${QT_VERSION}], , [$QT_BIN_PATH])
if test "x${QT_LRELEASEQT}" = "x"; then
AC_PATH_PROG([QT_LRELEASE], [lrelease], [lrelease], [$QT_BIN_PATH])
else
QT_LRELEASE="$QT_LRELEASEQT"
fi
AC_PATH_PROG([QT_LCONVERTQT], [lconvert-qt${QT_VERSION}], , [$QT_BIN_PATH])
if test "x${QT_LCONVERTQT}" = "x"; then
AC_PATH_PROG([QT_LCONVERT], [lconvert], [lconvert], [$QT_BIN_PATH])
else
QT_LCONVERT="$QT_LCONVERTQT"
fi
AC_PATH_PROG([QT_RCCQT], [rcc-qt${QT_VERSION}], , [$QT_BIN_PATH])
if test "x${QT_RCCQT}" = "x"; then
AC_PATH_PROG([QT_RCC], [rcc], [rcc], [$QT_BIN_PATH])
else
QT_RCC="$QT_RCCQT"
fi
if test "$HOST" = "DARWIN"; then
AC_PATH_PROG([MACDEPLOYQT], [macdeployqt], [macdeployqt], [$QT_BIN_PATH])
fi
AC_SUBST([QT_MOC])
AC_SUBST([QT_UIC])
AC_SUBST([QT_LRELEASE])
AC_SUBST([QT_LCONVERT])
AC_SUBST([QT_RCC])
# The dyn_loader library libltdl
##################################
AC_CHECK_LIB(ltdl, lt_dlopen, , [
echo "ERROR: Library 'ltdl' with symbol 'lt_dlopen' not found."
echo " Try installing the package 'libltdl-dev' or 'libtool'"
exit 1
])
AC_CHECK_HEADER(ltdl.h, , [
echo "ERROR: Header 'ltdl.h' not found."
echo " Try installing the package 'libltdl-dev' or 'libtool'"
exit 1
])
# Finally collect the compiler flags
#####################################
CXXFLAGS="${CXXFLAGS} ${OPENSSL_CFLAGS} ${QT_CFLAGS}"
LIBS="${LIBS} ${OPENSSL_LIBS} ${QT_LIBS} -lstdc++"
# Just give it a try .....
##########################
XCA_COMPILE_TEST()
AX_CHECK_GNU_MAKE()
# linuxdoc application detection
##################################
AC_ARG_ENABLE([doc],
AS_HELP_STRING([--disable-doc], [Disable documentation installation]),
,
[enable_doc=yes])
test "${enable_doc}" = "yes" && ENABLE_DOC= || ENABLE_DOC='\#'
AC_SUBST([ENABLE_DOC])
if test "${enable_doc}"; then
AC_CHECK_PROGS([DOCTOOL], [linuxdoc sgml2html], [":"])
AC_SUBST([DOCTOOL])
case "$DOCTOOL" in
linuxdoc) DOCTOOL="linuxdoc -B html -H \$(TOPDIR)/doc/html.header";;
sgml2html) DOCTOOL="sgml2html -s 1 -H \$(TOPDIR)/doc/html.header";;
:)
if test "${srcdir}" != "."; then
mkdir -p doc
cp ${srcdir}/doc/xca-doc.tgz doc/
fi
AC_MSG_WARN(['linuxdoc' or 'sgml2html' not found, using pre-compiled documentation])
;;
esac
fi
# Setup done. Write local.h and Local.mak
############################################
AC_CONFIG_HEADERS(local.h)
AC_CONFIG_LINKS(Makefile:Makefile)
AC_CONFIG_FILES([Local.mak misc/Info.plist misc/variables.wxi])
AC_OUTPUT