diff --git a/.gitignore b/.gitignore index 45458e6..689023c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,30 +1,31 @@ Makefile.in aclocal.m4 autom4te.cache/ configure config.h.in config.h config.log config.status doc/gpa.info* doc/stamp-vti doc/version.texi po/gpa.pot po/POTFILES stamp-h1 Makefile .deps/ +/VERSION # Files created by make when not using a VPATH build *.o po/en@boldquot.insert-header po/en@boldquot.po po/en@quot.insert-header po/en@quot.po po/stamp-po po/remove-potcdate.sed src/gpa src/dndtest src/gpa-marshal.c src/gpa-marshal.h /gpadefs.h diff --git a/Makefile.am b/Makefile.am index 5aa9ade..38eaa31 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,71 +1,69 @@ # Makefile.am - Top makefile for GPA. # Copyright (C) 2000, 2001 Werner Koch # Copyright (C) 2002, 2003, 2004 Miguel Coca # Copyright (C) 2005-2013 g10 Code GmbH # # This file is part of GPA. # # GPA is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 3 of the License, or (at your # option) any later version. # # GPA is distributed in the hope that it will be useful but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public # License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . ACLOCAL_AMFLAGS = -I m4 SUBDIRS = m4 src po pixmaps doc EXTRA_DIST = \ autogen.sh autogen.rc TODO to-utf8 gpa.spec \ - gpa.desktop gpa.png gpadefs.h.in \ + gpa.desktop gpa.png gpadefs.h.in VERSION \ po/ChangeLog-2011 pixmaps/ChangeLog-2011 ChangeLog-2011 \ m4/ChangeLog-2011 src/ChangeLog-2011 st-fonts/ChangeLog-2011 DISTCLEANFILES = gpadefs.h desktopdir = $(datadir)/applications/ desktop_DATA = gpa.desktop icondir = $(datadir)/pixmaps icon_DATA = gpa.png pkgdata_DATA = gpa.png edit = sed \ -e 's|@datadir[@]|$(pkgdatadir)|g' \ -e 's|@prefix[@]|$(prefix)|g' # FIXME: Let configure do this. gpadefs.h: Makefile rm -f $@ $@.tmp $(edit) '$(srcdir)/$@.in' >$@.tmp mv $@.tmp $@ gpadefs.h: $(srcdir)/gpadefs.h.in all: gpadefs.h -# Create a VERSION file which we need for the Prereq: patch file trick. dist-hook: gen-ChangeLog - @set -e; echo "$(VERSION)" > $(distdir)/VERSION gen_start_date = 2011-12-12T00:00:00 .PHONY: gen-ChangeLog gen-ChangeLog: if test -d $(top_srcdir)/.git; then \ (cd $(top_srcdir) && \ ./build-aux/gitlog-to-changelog \ --append-dot --tear-off \ --amend=build-aux/git-log-fix \ --since=$(gen_start_date) ) > $(distdir)/cl-t; \ cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\ rm -f $(distdir)/ChangeLog; \ mv $(distdir)/cl-t $(distdir)/ChangeLog; \ fi diff --git a/autogen.rc b/autogen.rc index df2ab16..b4d2b82 100644 --- a/autogen.rc +++ b/autogen.rc @@ -1,14 +1,12 @@ # autogen.sh configuration for GPA -*- sh -*- configure_opts=" --with-zlib=@SYSROOT@ - --with-gpg-error-prefix=@SYSROOT@ --with-gpgme-prefix=@SYSROOT@ - --with-libassuan-prefix=@SYSROOT@ --with-libiconv-prefix=@SYSROOT@ SYSROOT=\"@SYSROOT@\" PKG_CONFIG=\"@SYSROOT@/bin/pkg-config\" PKG_CONFIG_LIBDIR=\"@SYSROOT@/lib/pkgconfig\" " final_info="./configure --enable-maintainer-mode && make" diff --git a/autogen.sh b/autogen.sh index 471193c..9b36158 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,393 +1,513 @@ #! /bin/sh # autogen.sh -# Copyright (C) 2003, 2014 g10 Code GmbH +# Copyright (C) 2003, 2014, 2017, 2018 g10 Code GmbH # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # This is a generic script to create the configure script and handle cross # build environments. It requires the presence of a autogen.rc file to # configure it for the respective package. It is maintained as part of # GnuPG and source copied by other packages. # -# Version: 2014-01-10 +# Version: 2018-07-10 configure_ac="configure.ac" cvtver () { awk 'NR==1 {split($NF,A,".");X=1000000*A[1]+1000*A[2]+A[3];print X;exit 0}' } check_version () { if [ $(( `("$1" --version || echo "0") | cvtver` >= $2 )) = 1 ]; then return 0 fi echo "**Error**: "\`$1\'" not installed or too old." >&2 echo ' Version '$3' or newer is required.' >&2 [ -n "$4" ] && echo ' Note that this is part of '\`$4\''.' >&2 DIE="yes" return 1 } fatal () { echo "autogen.sh:" "$*" >&2 DIE=yes } info () { if [ -z "${SILENT}" ]; then - echo "autogen.sh:" "$*" + echo "autogen.sh:" "$*" >&2 fi } die_p () { if [ "$DIE" = "yes" ]; then echo "autogen.sh: Stop." >&2 exit 1 fi } replace_sysroot () { configure_opts=$(echo $configure_opts | sed "s#@SYSROOT@#${w32root}#g") extraoptions=$(echo $extraoptions | sed "s#@SYSROOT@#${w32root}#g") } # Allow to override the default tool names AUTOCONF=${AUTOCONF_PREFIX}${AUTOCONF:-autoconf}${AUTOCONF_SUFFIX} AUTOHEADER=${AUTOCONF_PREFIX}${AUTOHEADER:-autoheader}${AUTOCONF_SUFFIX} AUTOMAKE=${AUTOMAKE_PREFIX}${AUTOMAKE:-automake}${AUTOMAKE_SUFFIX} ACLOCAL=${AUTOMAKE_PREFIX}${ACLOCAL:-aclocal}${AUTOMAKE_SUFFIX} GETTEXT=${GETTEXT_PREFIX}${GETTEXT:-gettext}${GETTEXT_SUFFIX} MSGMERGE=${GETTEXT_PREFIX}${MSGMERGE:-msgmerge}${GETTEXT_SUFFIX} DIE=no FORCE= SILENT= +PRINT_HOST=no +PRINT_BUILD=no tmp=$(dirname "$0") tsdir=$(cd "${tmp}"; pwd) if [ -n "${AUTOGEN_SH_SILENT}" ]; then SILENT=" --silent" fi if test x"$1" = x"--help"; then - echo "usage: ./autogen.sh [--silent] [--force] [--build-TYPE] [ARGS]" + echo "usage: ./autogen.sh [OPTIONS] [ARGS]" + echo " Options:" + echo " --silent Silent operation" + echo " --force Pass --force to autoconf" + echo " --find-version Helper for configure.ac" + echo " --git-build Run all commands to build from a Git" + echo " --print-host Print only the host triplet" + echo " --print-build Print only the build platform triplet" + echo " --build-TYPE Configure to cross build for TYPE" + echo "" + echo " ARGS are passed to configure in --build-TYPE mode." + echo " Configuration for this script is expected in autogen.rc" exit 0 fi if test x"$1" = x"--silent"; then SILENT=" --silent" shift fi if test x"$1" = x"--force"; then FORCE=" --force" shift fi +if test x"$1" = x"--print-host"; then + PRINT_HOST=yes + shift +fi +if test x"$1" = x"--print-build"; then + PRINT_BUILD=yes + shift +fi # Reject unsafe characters in $HOME, $tsdir and cwd. We consider spaces # as unsafe because it is too easy to get scripts wrong in this regard. am_lf=' ' case `pwd` in *[\;\\\"\#\$\&\'\`$am_lf\ \ ]*) fatal "unsafe working directory name" ;; esac case $tsdir in *[\;\\\"\#\$\&\'\`$am_lf\ \ ]*) fatal "unsafe source directory: \`$tsdir'" ;; esac case $HOME in *[\;\\\"\#\$\&\'\`$am_lf\ \ ]*) fatal "unsafe home directory: \`$HOME'" ;; esac die_p # List of variables sourced from autogen.rc. The strings '@SYSROOT@' in # these variables are replaced by the actual system root. configure_opts= extraoptions= # List of optional variables sourced from autogen.rc and ~/.gnupg-autogen.rc w32_toolprefixes= w32_extraoptions= w32ce_toolprefixes= w32ce_extraoptions= w64_toolprefixes= w64_extraoptions= amd64_toolprefixes= # End list of optional variables sourced from ~/.gnupg-autogen.rc # What follows are variables which are sourced but default to # environment variables or lacking them hardcoded values. #w32root= #w32ce_root= #w64root= #amd64root= # Convenience option to use certain configure options for some hosts. myhost="" myhostsub="" case "$1" in + --find-version) + myhost="find-version" + SILENT=" --silent" + shift + ;; + --git-build) + myhost="git-build" + shift + ;; --build-w32) myhost="w32" shift ;; --build-w32ce) myhost="w32" myhostsub="ce" shift ;; --build-w64) myhost="w32" myhostsub="64" shift ;; --build-amd64) myhost="amd64" shift ;; --build*) fatal "**Error**: invalid build option $1" shift ;; *) ;; esac die_p +# **** GIT BUILD **** +# This is a helper to build from git. +if [ "$myhost" = "git-build" ]; then + tmp="$(pwd)" + cd "$tsdir" || fatal "error cd-ing to $tsdir" + ./autogen.sh || fatal "error running ./autogen.sh" + cd "$tmp" || fatal "error cd-ing back to $tmp" + die_p + "$tsdir"/configure || fatal "error running $tsdir/configure" + die_p + make || fatal "error running make" + die_p + make check || fatal "error running male check" + die_p + exit 0 +fi +# **** end GIT BUILD **** + + # Source our configuration if [ -f "${tsdir}/autogen.rc" ]; then . "${tsdir}/autogen.rc" fi # Source optional site specific configuration if [ -f "$HOME/.gnupg-autogen.rc" ]; then info "sourcing extra definitions from $HOME/.gnupg-autogen.rc" . "$HOME/.gnupg-autogen.rc" fi + +# **** FIND VERSION **** +# This is a helper for the configure.ac M4 magic +# Called +# ./autogen.sh --find-version PACKAGE MAJOR MINOR [MICRO] +# returns a complete version string with automatic beta numbering. +if [ "$myhost" = "find-version" ]; then + package="$1" + major="$2" + minor="$3" + micro="$4" + + if [ -z "$package" -o -z "$major" -o -z "$minor" ]; then + echo "usage: ./autogen.sh --find-version PACKAGE MAJOR MINOR [MICRO]" >&2 + exit 1 + fi + + if [ -z "$micro" ]; then + matchstr1="$package-$major.[0-9]*" + matchstr2="$package-$major-base" + vers="$major.$minor" + else + matchstr1="$package-$major.$minor.[0-9]*" + matchstr2="$package-$major.$minor-base" + vers="$major.$minor.$micro" + fi + + beta=no + if [ -e .git ]; then + ingit=yes + tmp=$(git describe --match "${matchstr1}" --long 2>/dev/null) + tmp=$(echo "$tmp" | sed s/^"$package"//) + if [ -n "$tmp" ]; then + tmp=$(echo "$tmp" | sed s/^"$package"// \ + | awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}') + else + tmp=$(git describe --match "${matchstr2}" --long 2>/dev/null \ + | awk -F- '$4!=0{print"-beta"$4}') + fi + [ -n "$tmp" ] && beta=yes + rev=$(git rev-parse --short HEAD | tr -d '\n\r') + rvd=$((0x$(echo ${rev} | dd bs=1 count=4 2>/dev/null))) + else + ingit=no + beta=yes + tmp="-unknown" + rev="0000000" + rvd="0" + fi + + echo "$package-$vers$tmp:$beta:$ingit:$vers$tmp:$vers:$tmp:$rev:$rvd:" + exit 0 +fi +# **** end FIND VERSION **** + + +if [ ! -f "$tsdir/build-aux/config.guess" ]; then + fatal "$tsdir/build-aux/config.guess not found" + exit 1 +fi +build=`$tsdir/build-aux/config.guess` +if [ $PRINT_BUILD = yes ]; then + echo "$build" + exit 0 +fi + + + # ****************** # W32 build script # ****************** if [ "$myhost" = "w32" ]; then - if [ ! -f "$tsdir/build-aux/config.guess" ]; then - fatal "$tsdir/build-aux/config.guess not found" - exit 1 - fi - build=`$tsdir/build-aux/config.guess` - case $myhostsub in ce) w32root="$w32ce_root" [ -z "$w32root" ] && w32root="$HOME/w32ce_root" toolprefixes="$w32ce_toolprefixes arm-mingw32ce" extraoptions="$extraoptions $w32ce_extraoptions" ;; 64) w32root="$w64root" [ -z "$w32root" ] && w32root="$HOME/w64root" toolprefixes="$w64_toolprefixes x86_64-w64-mingw32" extraoptions="$extraoptions $w64_extraoptions" ;; *) [ -z "$w32root" ] && w32root="$HOME/w32root" toolprefixes="$w32_toolprefixes i686-w64-mingw32 i586-mingw32msvc" toolprefixes="$toolprefixes i386-mingw32msvc mingw32" extraoptions="$extraoptions $w32_extraoptions" ;; esac info "Using $w32root as standard install directory" replace_sysroot # Locate the cross compiler crossbindir= for host in $toolprefixes; do if ${host}-gcc --version >/dev/null 2>&1 ; then crossbindir=/usr/${host}/bin conf_CC="CC=${host}-gcc" break; fi done if [ -z "$crossbindir" ]; then fatal "cross compiler kit not installed" if [ -z "$myhostsub" ]; then info "Under Debian GNU/Linux, you may install it using" info " apt-get install mingw32 mingw32-runtime mingw32-binutils" fi die_p fi + if [ $PRINT_HOST = yes ]; then + echo "$host" + exit 0 + fi if [ -f "$tsdir/config.log" ]; then if ! head $tsdir/config.log | grep "$host" >/dev/null; then fatal "Please run a 'make distclean' first" die_p fi fi $tsdir/configure --enable-maintainer-mode ${SILENT} \ --prefix=${w32root} \ - --host=${host} --build=${build} \ + --host=${host} --build=${build} SYSROOT=${w32root} \ + PKG_CONFIG_LIBDIR=${w32root}/lib/pkgconfig \ ${configure_opts} ${extraoptions} "$@" rc=$? exit $rc fi # ***** end W32 build script ******* # ***** AMD64 cross build script ******* # Used to cross-compile for AMD64 (for testing) if [ "$myhost" = "amd64" ]; then - shift - if [ ! -f $tsdir/build-aux/config.guess ]; then - echo "$tsdir/build-aux/config.guess not found" >&2 - exit 1 - fi - build=`$tsdir/build-aux/config.guess` - [ -z "$amd64root" ] && amd64root="$HOME/amd64root" info "Using $amd64root as standard install directory" replace_sysroot toolprefixes="$amd64_toolprefixes x86_64-linux-gnu amd64-linux-gnu" # Locate the cross compiler crossbindir= for host in $toolprefixes ; do if ${host}-gcc --version >/dev/null 2>&1 ; then crossbindir=/usr/${host}/bin conf_CC="CC=${host}-gcc" break; fi done if [ -z "$crossbindir" ]; then echo "Cross compiler kit not installed" >&2 echo "Stop." >&2 exit 1 fi + if [ $PRINT_HOST = yes ]; then + echo "$host" + exit 0 + fi if [ -f "$tsdir/config.log" ]; then if ! head $tsdir/config.log | grep "$host" >/dev/null; then echo "Please run a 'make distclean' first" >&2 exit 1 fi fi $tsdir/configure --enable-maintainer-mode ${SILENT} \ --prefix=${amd64root} \ --host=${host} --build=${build} \ ${configure_opts} ${extraoptions} "$@" rc=$? exit $rc fi # ***** end AMD64 cross build script ******* # Grep the required versions from configure.ac autoconf_vers=`sed -n '/^AC_PREREQ(/ { s/^.*(\(.*\))/\1/p q }' ${configure_ac}` autoconf_vers_num=`echo "$autoconf_vers" | cvtver` automake_vers=`sed -n '/^min_automake_version=/ { s/^.*="\(.*\)"/\1/p q }' ${configure_ac}` automake_vers_num=`echo "$automake_vers" | cvtver` if [ -d "${tsdir}/po" ]; then gettext_vers=`sed -n '/^AM_GNU_GETTEXT_VERSION(/ { s/^.*\[\(.*\)])/\1/p q }' ${configure_ac}` gettext_vers_num=`echo "$gettext_vers" | cvtver` else gettext_vers="n/a" fi if [ -z "$autoconf_vers" -o -z "$automake_vers" -o -z "$gettext_vers" ] then echo "**Error**: version information not found in "\`${configure_ac}\'"." >&2 exit 1 fi if check_version $AUTOCONF $autoconf_vers_num $autoconf_vers ; then check_version $AUTOHEADER $autoconf_vers_num $autoconf_vers autoconf fi if check_version $AUTOMAKE $automake_vers_num $automake_vers; then check_version $ACLOCAL $automake_vers_num $autoconf_vers automake fi if [ "$gettext_vers" != "n/a" ]; then if check_version $GETTEXT $gettext_vers_num $gettext_vers; then check_version $MSGMERGE $gettext_vers_num $gettext_vers gettext fi fi if [ "$DIE" = "yes" ]; then cat </dev/null 2>/dev/null; then + [ -z "${SILENT}" ] && CP="$CP -v" + fi if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then [ -z "${SILENT}" ] && cat <. # # (Process this file with autoconf to produce a configure script.) AC_PREREQ([2.61]) min_automake_version="1.10" -# The version number goes here. -# # To build a release you need to create a tag with the version number -# (git tag -s gpa-1.n.m) and run "./autogen.sh --force". Please -# bump the version number immediately *after* the release and do -# another commit and push so that the git magic is able to work. -m4_define(mym4_version_major, [0]) -m4_define(mym4_version_minor, [11]) -m4_define(mym4_version_micro, [0]) +# (git tag -s pinentry-n.m.k) and run "./autogen.sh --force". Please +# bump the version number immediately after the release and do another +# commit and push so that the git magic is able to work. +m4_define([mym4_package],[gpa]) +m4_define([mym4_major], [0]) +m4_define([mym4_minor], [11]) +m4_define([mym4_micro], [0]) # Below is m4 magic to extract and compute the git revision number, # the decimalized short revision number, a beta version string and a -# flag indicating a development version (mym4_isgit). Note that the +# flag indicating a development version (mym4_isbeta). Note that the # m4 processing is done by autoconf and not during the configure run. -m4_define(mym4_version, - [mym4_version_major.mym4_version_minor.mym4_version_micro]) -m4_define([mym4_revision], - m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r'])) -m4_define([mym4_revision_dec], - m4_esyscmd_s([echo $((0x$(echo ]mym4_revision[|head -c 4)))])) -m4_define([mym4_betastring], - m4_esyscmd_s([git describe --match 'gpa-[0-9].*[0-9]' --long|\ - awk -F- '$3!=0{print"-beta"$3}'])) -m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes])) -m4_define([mym4_full_version],[mym4_version[]mym4_betastring]) - -AC_INIT([gpa],[mym4_full_version],[https://bugs.gnupg.org]) - +m4_define([mym4_verslist], m4_split(m4_esyscmd([./autogen.sh --find-version] \ + mym4_package mym4_major mym4_minor mym4_micro),[:])) +m4_define([mym4_isbeta], m4_argn(2, mym4_verslist)) +m4_define([mym4_version], m4_argn(4, mym4_verslist)) +m4_define([mym4_revision], m4_argn(7, mym4_verslist)) +m4_define([mym4_revision_dec], m4_argn(8, mym4_verslist)) +m4_esyscmd([echo ]mym4_version[>VERSION]) + +AC_INIT([mym4_package],[mym4_version],[https://bugs.gnupg.org]) NEED_GPG_ERROR_VERSION=1.27 NEED_LIBASSUAN_API=2 NEED_LIBASSUAN_VERSION=2.4.2 NEED_GPGME_API=1 NEED_GPGME_VERSION=1.9.0 AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR(src/gpa.c) AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip]) PACKAGE=$PACKAGE_NAME VERSION=$PACKAGE_VERSION AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package]) AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT", [address for reporting bugs]) have_gpg_error=no have_gpgme=no have_libassuan=no # # Provide information about the build. # BUILD_REVISION="mym4_revision" AC_SUBST(BUILD_REVISION) AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION", [GIT commit id revision used to build this package]) changequote(,)dnl BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'` changequote([,])dnl BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec" AC_SUBST(BUILD_FILEVERSION) BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date` AC_SUBST(BUILD_TIMESTAMP) AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP", [The time this package was configured for a build]) AC_USE_SYSTEM_EXTENSIONS AH_BOTTOM([ /* We don't want the old assuan codes anymore. */ #define _ASSUAN_ONLY_GPG_ERRORS 1 #include "gpadefs.h" ]) AM_MAINTAINER_MODE AM_SILENT_RULES dnl Check for libraries AC_CHECK_LIB(m, sin) CHECK_ZLIB AC_CHECK_FUNCS([strsep stpcpy]) development_version=no # Allow users to append something to the version string (other than -cvs) # without flagging it as development version. The user version parts is # considered everything after a dash. if test "$development_version" != yes; then changequote(,)dnl tmp_pat='[a-zA-Z]' changequote([,])dnl if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null || echo "$VERSION" | grep -- "-cvs$" >/dev/null; then development_version=yes fi fi if test "$development_version" = yes; then AC_DEFINE(IS_DEVELOPMENT_VERSION,1, [Defined if this is not a regular release]) fi # Define HAVE_W32_SYSTEM as an alternative to the other macros which # might led the naive reader assume that W32 is actually a win. Also # needed later to enable certain gcc options. have_w32_system=no case "${host}" in *-mingw32*) have_w32_system=yes ;; esac if test "$have_w32_system" = yes; then AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system]) fi AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes) dnl dnl Checks for programs dnl AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_PROG_CC AC_SEARCH_LIBS([strerror],[cposix]) AC_HEADER_STDC AC_PROG_RANLIB AC_CHECK_TOOL(WINDRES, windres, :) # # Options to disable features # card_manager=yes AC_MSG_CHECKING([whether to build the card manager]) AC_ARG_ENABLE(card-manager, AS_HELP_STRING([--disable-card-manager], [build without the card manager]), card_manager=$enableval) AC_MSG_RESULT($card_manager) if test "$card_manager" = yes ; then AC_DEFINE(ENABLE_CARD_MANAGER, 1, [Include the card manager in the build]) fi AM_CONDITIONAL(ENABLE_CARD_MANAGER, test "$card_manager" = yes) keyserver_support=yes AC_MSG_CHECKING([whether to include keyserver support]) AC_ARG_ENABLE(keyserver-support, AS_HELP_STRING([--disable-keyserver-support], [build without keyserver support]), keyserver_support=$enableval) AC_MSG_RESULT($keyserver_support) if test "$keyserver_support" = yes ; then AC_DEFINE(ENABLE_KEYSERVER_SUPPORT, 1, [Include keyserver support in the build]) fi AM_CONDITIONAL(ENABLE_KEYSERVER_SUPPORT, test "$keyserver_support" = yes) # # Find the keyserver plugins. Assume that gpgkeys_ldap is always available # if test "$keyserver_support" = yes ; then AC_PATH_PROGS(GPGKEYS_LDAP, gpg2keys_ldap gpgkeys_ldap, [${libexecdir}/gnupg/gpg2keys_ldap], [$PATH:/usr/libexec/gnupg:/usr/lib/gnupg2:/usr/lib/gnupg]) KEYSERVER_HELPERS_DIR=`dirname $GPGKEYS_LDAP` if test -z "$KEYSERVER_HELPERS_DIR"; then AC_MSG_ERROR([[ *** *** Keyserver helpers not found. They should be contained in the GnuPG package. *** ]]) fi AC_DEFINE_UNQUOTED(KEYSERVER_HELPERS_DIR, "$KEYSERVER_HELPERS_DIR", [Path to keyserver helper tools]) fi dnl dnl Checks for compiler features dnl dnl dnl Checks for libraries dnl NETLIBS= if test "$have_w32_system" = yes; then NETLIBS="${NETLIBS} -lws2_32" fi AC_SUBST(NETLIBS) AM_PO_SUBDIRS AM_GNU_GETTEXT_VERSION([0.18.1]) AM_GNU_GETTEXT([external],[need-ngettext]) dnl Where is the GTK+ toolkit AM_PATH_GTK_2_0(2.10.0,, AC_MSG_ERROR(Cannot find GTK+ 2.0)) # # The GnuPG shared error codes library. # AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION", have_gpg_error=yes,have_gpg_error=no) AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, 12, [The default error source for GPA.]) # # Libassuan is the IPC library used for the server mode # AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION", have_libassuan=yes,have_libassuan=no) # We need this for GPGME AC_SYS_LARGEFILE # # Depending on the OS we need to test for different versions of gpgme. # _AM_PATH_GPGME_CONFIG if test "$have_w32_system" = yes; then AM_PATH_GPGME_GLIB("$NEED_GPGME_API:$NEED_GPGME_VERSION", have_gpgme=yes,have_gpgme=no) GPGME_LIBS="$GPGME_GLIB_LIBS" GPGME_CFLAGS="$GPGME_GLIB_CFLAGS" AC_SUBST(GPGME_CFLAGS) AC_SUBST(GPGME_LIBS) else AM_PATH_GPGME("$NEED_GPGME_API:$NEED_GPGME_VERSION", have_gpgme=yes,have_gpgme=no) fi _save_libs=$LIBS _save_cflags=$CFLAGS LIBS="$LIBS $GPGME_LIBS" CFLAGS="$CFLAGS $GPGME_CFLAGS" AC_CHECK_FUNCS([gpgme_data_identify]) LIBS=$_save_libs CFLAGS="$_save_cflags" dnl The tests below are not anymore used because we now depend on a dnl gpgme which has all these features. However, I keep the code here dnl for future work. dnl dnl _save_libs=$LIBS dnl _save_cflags=$CFLAGS dnl LIBS="$LIBS $GPGME_LIBS" dnl CFLAGS="$CFLAGS $GPGME_CFLAGS" dnl AC_CHECK_FUNCS([gpgme_op_assuan_transact]) dnl AC_CHECK_FUNCS([gpgme_io_write]) dnl # Fixme: We should write a test based on gpgme_subkey_t dnl # We might even want to put such a test into gpgme.m4. dnl AC_CHECK_MEMBERS([struct _gpgme_subkey.card_number],,,[#include ]) dnl LIBS=$_save_libs dnl CFLAGS="$_save_cflags" dnl # We build the card manager only if we have a decent libgpgme. */ dnl if test "x$ac_cv_func_gpgme_op_assuan_transact" = "xyes"; then dnl AC_DEFINE(BUILD_CARD_MANAGER, 1, dnl [Defined if the card manager shall be build.]) dnl fi dnl AM_CONDITIONAL(BUILD_CARD_MANAGER, dnl test "x$ac_cv_func_gpgme_op_assuan_transact" = "xyes") # # Checks for header files. # AC_MSG_NOTICE([checking for header files]) AC_CHECK_HEADERS([locale.h]) # # Checks for typedefs and structures # AC_CHECK_TYPES([byte, ushort, ulong, u16, u32]) # # Check for library functions # # See whether libc supports the Linux inotify interface case "${host}" in *-*-linux*) AC_CHECK_FUNCS([inotify_init]) ;; esac # # Set extra compiler flags # AC_MSG_NOTICE([checking for cc features]) if test "$GCC" = yes; then if test "$USE_MAINTAINER_MODE" = "yes"; then # # Enable all kinds of warnings. # CFLAGS="$CFLAGS -O3 -Wall -Wcast-align -Wshadow -Wstrict-prototypes" CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security" AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers]) _gcc_cflags_save=$CFLAGS CFLAGS="-Wno-missing-field-initializers" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no) AC_MSG_RESULT($_gcc_wopt) CFLAGS=$_gcc_cflags_save; if test x"$_gcc_wopt" = xyes ; then CFLAGS="$CFLAGS -W -Wno-sign-compare -Wno-missing-field-initializers" fi AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement]) _gcc_cflags_save=$CFLAGS CFLAGS="-Wdeclaration-after-statement" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no) AC_MSG_RESULT($_gcc_wopt) CFLAGS=$_gcc_cflags_save; if test x"$_gcc_wopt" = xyes ; then CFLAGS="$CFLAGS -Wdeclaration-after-statement" fi # We should keep -Wstrict-prototypes here. However, it causes # too many warnings in gtkitemfactory.h:51 (see comment over # there). This might be solved with GTK 3. AC_MSG_CHECKING([if gcc supports -Wno-strict-prototypes]) _gcc_cflags_save=$CFLAGS CFLAGS="-Wno-strict-prototypes" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no) AC_MSG_RESULT($_gcc_wopt) CFLAGS=$_gcc_cflags_save; if test x"$_gcc_wopt" = xyes ; then CFLAGS="$CFLAGS -Wno-strict-prototypes" fi else CFLAGS="$CFLAGS -Wall" fi AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign]) _gcc_cflags_save=$CFLAGS CFLAGS="-Wno-pointer-sign" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no) AC_MSG_RESULT($_gcc_wopt) CFLAGS=$_gcc_cflags_save; if test x"$_gcc_wopt" = xyes ; then CFLAGS="$CFLAGS -Wno-pointer-sign" fi AC_MSG_CHECKING([if gcc supports -Wno-unused-parameter]) _gcc_cflags_save=$CFLAGS CFLAGS="-Wno-unused-parameter" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no) AC_MSG_RESULT($_gcc_wopt) CFLAGS=$_gcc_cflags_save; if test x"$_gcc_wopt" = xyes ; then CFLAGS="$CFLAGS -Wno-unused-parameter" fi # We need to use ms-bitfields. if test "$have_w32_system" = yes; then CFLAGS="$CFLAGS -mms-bitfields" fi fi # # Define name strings AC_DEFINE_UNQUOTED(GPA_NAME, "GPA", [The name of this program]) AC_DEFINE_UNQUOTED(GPA_LONG_NAME, "GNU Privacy Assistant", [The spelled out name of this program]) # # Print errors here so that they are visible all # together and the user can acquire them all together. # die=no if test "$have_gpg_error" = "no"; then die=yes AC_MSG_NOTICE([[ *** *** You need libgpg-error to build this program. ** This library is for example available at *** ftp://ftp.gnupg.org/gcrypt/libgpg-error *** (at least version $NEED_GPG_ERROR_VERSION is required.) ***]]) fi if test "$have_gpgme" = "no"; then die=yes AC_MSG_NOTICE([[ *** *** You need gpgme to build this program. ** This library is for example available at *** ftp://ftp.gnupg.org/gcrypt/gpgme/ *** (at least version $NEED_GPGME_VERSION is required.) ***]]) fi if test "$have_libassuan" = "no"; then die=yes AC_MSG_NOTICE([[ *** *** You need libassuan to build this program. *** This library is for example available at *** ftp://ftp.gnupg.org/gcrypt/libassuan/ *** (at least version $NEED_LIBASSUAN_VERSION is required). ***]]) fi if test "$die" = "yes"; then AC_MSG_ERROR([[ *** *** Required libraries not found. Please consult the above messages *** and install them before running configure again. ***]]) fi AC_CONFIG_FILES([ m4/Makefile Makefile po/Makefile.in src/Makefile src/versioninfo.rc pixmaps/Makefile doc/Makefile ]) AC_OUTPUT echo " GPA v${VERSION} has been configured as follows: Revision: mym4_revision (mym4_revision_dec) Platform: $host "