X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=blobdiff_plain;f=configure.ac;h=c6c6dc869796ea587d2823630a93bf727fc11e1c;hp=798a396d40f4a286fb7a5c709f134b5291f2f0e9;hb=1d48b04cfb3d1de654f3995578e9434a6b7b2fed;hpb=cd267791e9bd73505a2a1ea90c85df988e153c19
diff --git a/configure.ac b/configure.ac
index 798a396d..c6c6dc86 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@
# Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see .
+# along with this program; if not, see .
# (Process this file with autoconf to produce a configure script.)
AC_PREREQ(2.59)
@@ -28,7 +28,7 @@ min_automake_version="1.14"
# commit and push so that the git magic is able to work. See below
# for the LT versions.
m4_define(mym4_version_major, [1])
-m4_define(mym4_version_minor, [6])
+m4_define(mym4_version_minor, [10])
m4_define(mym4_version_micro, [1])
# Below is m4 magic to extract and compute the revision number, the
@@ -55,32 +55,37 @@ AC_INIT([gpgme],[mym4_full_version],[http://bugs.gnupg.org])
# (Interfaces added: AGE++)
# (Interfaces removed/changed: AGE=0)
#
-LIBGPGME_LT_CURRENT=25
-# Subtract 2 from this value if you want to make the LFS transition an
-# ABI break. [Note to self: Remove this comment with the next regular break.]
-LIBGPGME_LT_AGE=14
+LIBGPGME_LT_CURRENT=30
+LIBGPGME_LT_AGE=19
LIBGPGME_LT_REVISION=0
-LIBGPGMEPP_LT_CURRENT=6
-LIBGPGMEPP_LT_AGE=0
+# If there is an ABI break in gpgmepp or qgpgme also bump the
+# version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
+
+LIBGPGMEPP_LT_CURRENT=11
+LIBGPGMEPP_LT_AGE=5
LIBGPGMEPP_LT_REVISION=0
-LIBQGPGME_LT_CURRENT=6
-LIBQGPGME_LT_AGE=0
+LIBQGPGME_LT_CURRENT=10
+LIBQGPGME_LT_AGE=3
LIBQGPGME_LT_REVISION=0
# If the API is changed in an incompatible way: increment the next counter.
GPGME_CONFIG_API_VERSION=1
##############################################
-NEED_GPG_ERROR_VERSION=1.11
+NEED_GPG_ERROR_VERSION=1.24
NEED_LIBASSUAN_API=2
-NEED_LIBASSUAN_VERSION=2.0.2
+NEED_LIBASSUAN_VERSION=2.4.2
PACKAGE=$PACKAGE_NAME
VERSION=$PACKAGE_VERSION
+VERSION_MAJOR=mym4_version_major
+VERSION_MINOR=mym4_version_minor
+VERSION_MICRO=mym4_version_micro
+
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR(src/gpgme.h.in)
@@ -104,6 +109,7 @@ AH_VERBATIM([_REENTRANT],
#endif])
AC_PROG_CC
+AC_PROG_CPP
AC_PROG_CXX
# Note: A suitable gitlog-to-changelog script can be found in GnuPG master.
@@ -121,12 +127,31 @@ AC_SUBST(LIBQGPGME_LT_REVISION)
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
+AC_SUBST(VERSION_MAJOR)
+AC_SUBST(VERSION_MINOR)
+AC_SUBST(VERSION_MICRO)
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
VERSION_NUMBER=m4_esyscmd(printf "0x%02x%02x%02x" mym4_version_major \
mym4_version_minor mym4_version_micro)
AC_SUBST(VERSION_NUMBER)
+# We need to compile and run a program on the build machine. A
+# comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
+# the AC archive is broken for autoconf 2.57. Given that there is no
+# newer version of that macro, we assume that it is also broken for
+# autoconf 2.61 and thus we use a simple but usually sufficient
+# approach.
+AC_MSG_CHECKING(for cc for build)
+if test "$cross_compiling" = "yes"; then
+ CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
+else
+ CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
+fi
+AC_MSG_RESULT($CC_FOR_BUILD)
+AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
+
+
# Don't default to build static libs.
LT_PREREQ([2.2.6])
LT_INIT([win32-dll disable-static])
@@ -143,6 +168,8 @@ case "${host}" in
have_ld_version_script=yes
;;
*-apple-darwin*)
+ AC_DEFINE(_DARWIN_C_SOURCE, 900000L,
+ Expose all libc features (__DARWIN_C_FULL).)
AC_DEFINE(_XOPEN_SOURCE, 500, Activate POSIX interface on MacOS X)
;;
esac
@@ -158,10 +185,11 @@ have_dosish_system=no
have_android_system=no
have_w32_system=no
have_w64_system=no
+have_macos_system=no
build_w32_glib=no
build_w32_qt=no
-available_languages="cpp cl qt"
-default_languages="cpp cl qt"
+available_languages="cl cpp python python2 python3 qt"
+default_languages="cl cpp python qt"
case "${host}" in
x86_64-*mingw32*)
have_w64_system=yes
@@ -172,6 +200,9 @@ case "${host}" in
*-linux-androideabi)
have_android_system=yes
;;
+ *-apple-darwin*)
+ have_macos_system=yes
+ ;;
esac
case "${host}" in
*-mingw32ce*|*-mingw32*)
@@ -190,11 +221,6 @@ case "${host}" in
;;
*)
- AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
- if test "$have_pthread" = yes; then
- AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
- fi
-
# XXX: Probably use exec-prefix here?
# GPG_DEFAULT='/usr/bin/gpg'
# GPGSM_DEFAULT='/usr/bin/gpgsm'
@@ -234,9 +260,13 @@ if test "$have_android_system" = yes; then
fi
AM_CONDITIONAL(HAVE_ANDROID_SYSTEM, test "$have_android_system" = yes)
-AM_CONDITIONAL(BUILD_W32_GLIB, test "$build_w32_glib" = yes)
+if test "$have_macos_system" = yes; then
+ AC_DEFINE(HAVE_MACOS_SYSTEM,1,
+ [Defined if we build for an MacOS system])
+fi
+AM_CONDITIONAL(HAVE_MACOS_SYSTEM, test "$have_macos_system" = yes)
-AM_CONDITIONAL(HAVE_PTHREAD, test "$have_pthread" = "yes")
+AM_CONDITIONAL(BUILD_W32_GLIB, test "$build_w32_glib" = yes)
AC_ARG_ENABLE([fixed-path],
@@ -249,6 +279,9 @@ if test x$fixed_search_path != x ; then
[Locate binaries only via this PATH])
fi
+
+# Note: You need to declare all possible languages also in
+# lang/Makefile.am's DIST_SUBDIRS.
AC_ARG_ENABLE([languages],
AC_HELP_STRING([--enable-languages=languages],
[enable only specific language bindings]),
@@ -303,19 +336,22 @@ fi
# Check that if qt is enabled cpp also is enabled
LIST_MEMBER("qt", $enabled_languages)
if test "$found" = "1"; then
- # We need to ensure that in the langauge order qt comes after cpp
+ # We need to ensure that in the language order qt comes after cpp
# so we remove qt first and explicitly add it as last list member.
enabled_languages=$(echo $enabled_languages | sed 's/qt//')
LIST_MEMBER("cpp", $enabled_languages)
if test "$found" = "0"; then
- AC_MSG_ERROR([qt binding depends on cpp language binding])
+ AC_MSG_ERROR([[
+***
+*** Qt language binding depends on cpp binding.
+***]])
fi
FIND_QT
if test "$have_qt5_libs" != "yes"; then
if test "$explicit_languages" = "1"; then
AC_MSG_ERROR([[
***
-*** Qt5 (Qt5Core) is required for qt binding.
+*** Qt5 (Qt5Core) is required for Qt binding.
***]])
else
AC_MSG_WARN([[
@@ -331,10 +367,116 @@ if test "$found" = "1"; then
# This is not highlighted becase it's not really important.
then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.])
fi
+ AC_CHECK_PROGS([GRAPHVIZ], [dot])
+ if test -z "$GRAPHVIZ";
+ then AC_MSG_WARN([Graphviz not found - Qt binding doc will not have diagrams.])
+ fi
fi
fi
AM_CONDITIONAL([HAVE_DOXYGEN],
[test -n "$DOXYGEN"])
+if test -n "$GRAPHVIZ"; then
+ HAVE_DOT="YES"
+else
+ HAVE_DOT="NO"
+fi
+AC_SUBST(HAVE_DOT)
+
+# Python bindings.
+LIST_MEMBER("python2", $enabled_languages)
+found_py2=$found
+LIST_MEMBER("python3", $enabled_languages)
+found_py3=$found
+LIST_MEMBER("python", $enabled_languages)
+found_py=$found
+if test "$found_py" = "1" -o "$found_py2" = "1" -o "$found_py3" = "1"; then
+ AX_PKG_SWIG
+ if test -z "$SWIG"; then
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
+***
+*** You need SWIG to build the Python bindings.
+***]])
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/python//')
+ fi
+ else
+ # Reset all the stuff, just to be sure.
+ PYTHONS=
+ PYTHON_VERSIONS=
+ unset PYTHON
+ unset PYTHON_VERSION
+ unset PYTHON_CPPFLAGS
+ unset PYTHON_LDFLAGS
+ unset PYTHON_SITE_PKG
+ unset PYTHON_EXTRA_LIBS
+ unset PYTHON_EXTRA_LDFLAGS
+ unset ac_cv_path_PYTHON
+ unset am_cv_pathless_PYTHON
+ unset am_cv_python_version
+ unset am_cv_python_platform
+ unset am_cv_python_pythondir
+ unset am_cv_python_pyexecdir
+
+ if test "$found_py" = "1" -o "$found_py2" = "1"; then
+ AM_PATH_PYTHON([2.7], [
+ AX_PYTHON_DEVEL
+ if test "$PYTHON_VERSION"; then
+ PYTHONS="$(echo $PYTHONS $PYTHON)"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+ fi
+ ], :)
+ fi
+
+ if test "$found_py" = "1" -o "$found_py3" = "1"; then
+ # Reset everything, so that we can look for another Python.
+ unset PYTHON
+ unset PYTHON_VERSION
+ unset PYTHON_CPPFLAGS
+ unset PYTHON_LDFLAGS
+ unset PYTHON_SITE_PKG
+ unset PYTHON_EXTRA_LIBS
+ unset PYTHON_EXTRA_LDFLAGS
+ unset ac_cv_path_PYTHON
+ unset am_cv_pathless_PYTHON
+ unset am_cv_python_version
+ unset am_cv_python_platform
+ unset am_cv_python_pythondir
+ unset am_cv_python_pyexecdir
+ AM_PATH_PYTHON([3.4], [
+ AX_PYTHON_DEVEL
+ if test "$PYTHON_VERSION"; then
+ PYTHONS="$(echo $PYTHONS $PYTHON)"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+ fi
+ ], :)
+ fi
+
+ # Recover some values lost in the second attempt to find Python.
+ PYTHON="$(echo $PYTHONS | cut -d ' ' -f 1)"
+ PYTHON_VERSION="$(echo $PYTHON_VERSIONS | cut -d ' ' -f 1)"
+
+ # Remove duplicates.
+ PYTHONS="$(echo $PYTHONS | tr '[[:space:]]' '\n' | sort | uniq | tr '\n' ' ' | sed -e 's/ $//')"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS | tr '[[:space:]]' '\n' | sort | uniq | tr '\n' ' ' | sed -e 's/ $//')"
+
+ if test "$PYTHON_VERSIONS"; then
+ enabled_languages_v=$(echo $enabled_languages | sed -Ee "s/python[[23]]?/python ($PYTHON_VERSIONS)/")
+ enabled_languages=$(echo $enabled_languages | sed -Ee "s/python[[23]]?/python/")
+ else
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
+***
+*** Please install the python development packages.
+***]])
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/python//')
+ fi
+ fi
+
+ AC_SUBST(PYTHONS, $PYTHONS)
+ fi
+fi
AC_SUBST(ENABLED_LANGUAGES, $enabled_languages)
@@ -451,6 +593,36 @@ AM_SUBST_NOTMAKE(API__SSIZE_T)
# Checks for compiler features.
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
+ if test "$USE_MAINTAINER_MODE" = "yes"; then
+ CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
+
+ # If -Wno-missing-field-initializers is supported we can enable a
+ # a bunch of really useful warnings.
+ 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 -Wextra -Wbad-function-cast"
+ CFLAGS="$CFLAGS -Wwrite-strings"
+ CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+ CFLAGS="$CFLAGS -Wno-missing-field-initializers"
+ CFLAGS="$CFLAGS -Wno-sign-compare"
+ fi
+ CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wno-shadow"
+
+ AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
+ _gcc_cflags_save=$CFLAGS
+ CFLAGS="-Wpointer-arith"
+ 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 -Wpointer-arith"
+ fi
+ fi
if test "$have_w32_system" = yes; then
CFLAGS="$CFLAGS -mms-bitfields"
fi
@@ -472,11 +644,6 @@ AC_MSG_NOTICE([checking for libraries])
AC_FUNC_FSEEKO
-AC_REPLACE_FUNCS(vasprintf)
-if test "$ac_cv_func_vasprintf" != yes; then
- GNUPG_CHECK_VA_COPY
-fi
-
# Try to find a thread-safe version of ttyname().
gnupg_REPLACE_TTYNAME_R
if test "$ac_cv_func_ttyname_r" != yes; then
@@ -489,7 +656,7 @@ fi
# Try to find a thread-safe version of getenv().
have_thread_safe_getenv=no
jm_GLIBC21
-if test $GLIBC21 = yes; then
+if test $GLIBC21 = yes -o $have_w32_system = yes; then
have_thread_safe_getenv=yes
fi
if test $have_thread_safe_getenv = yes; then
@@ -538,23 +705,8 @@ fi
# Other checks
#
-# Check for funopen
-AC_CHECK_FUNCS(funopen)
-if test $ac_cv_func_funopen != yes; then
- # No funopen but we can implement that in terms of fopencookie.
- AC_CHECK_FUNCS(fopencookie)
- if test $ac_cv_func_fopencookie = yes; then
- AC_REPLACE_FUNCS(funopen)
- else
- AC_MSG_WARN([
-***
-*** No implementation of fopencookie or funopen available
-***])
- fi
-fi
-
# Check for getgid etc
-AC_CHECK_FUNCS(getgid getegid)
+AC_CHECK_FUNCS(getgid getegid closefrom)
# Replacement functions.
@@ -582,18 +734,7 @@ AC_CHECK_MEMBER(struct cmsghdr.cmsg_len,
#include
])
-
-dnl There seems to be a problem with Apple and decriptor passing.
-dnl Until we found a solution we change the default to no.
-dnl See bug 1483.
-case "${host}" in
- *-apple-darwin*)
- use_descriptor_passing=no
- ;;
- *)
- use_descriptor_passing=yes
- ;;
-esac
+use_descriptor_passing=yes
AC_ARG_ENABLE(fd-passing,
AC_HELP_STRING([--disable-fd-passing], [do not use FD passing]),
use_descriptor_passing=$enableval)
@@ -621,7 +762,28 @@ fi
AM_CONDITIONAL(HAVE_UISERVER, test "$uiserver" != "no")
+# Option --disable-linux-getdents
+#
+# By default we use SYS_getdents on Linux to optimize fd closing
+# before an exec. This option allows to switch this optimization off.
+use_linux_getdents=yes
+AC_ARG_ENABLE(linux-getdents,
+ AC_HELP_STRING([--disable-linux-getdents],
+ [do not use SYS_getdents on Linux]),
+ use_linux_getdents=$enableval)
+if test "$use_linux_getdents" = "yes"; then
+ case "${host}" in
+ *-*-linux*)
+ AC_DEFINE(USE_LINUX_GETDENTS,1,
+ [Defined if SYS_getdents can be used on Linux])
+ ;;
+ esac
+fi
+
+
+#
# Add a few constants to help porting to W32
+#
AH_VERBATIM([SEPCONSTANTS],
[
/* Separators as used in $PATH and file name. */
@@ -648,7 +810,7 @@ AH_BOTTOM([
#define GPG_ERR_ENABLE_ERRNO_MACROS 1
#define CRIGHTBLURB "Copyright (C) 2000 Werner Koch\n" \
- "Copyright (C) 2001--2015 g10 Code GmbH\n"
+ "Copyright (C) 2001--2017 g10 Code GmbH\n"
])
@@ -656,10 +818,12 @@ AH_BOTTOM([
GPGME_CONFIG_LIBS="-lgpgme"
GPGME_CONFIG_CFLAGS=""
GPGME_CONFIG_HOST="$host"
+GPGME_CONFIG_AVAIL_LANG="$enabled_languages"
AC_SUBST(GPGME_CONFIG_API_VERSION)
AC_SUBST(GPGME_CONFIG_LIBS)
AC_SUBST(GPGME_CONFIG_CFLAGS)
AC_SUBST(GPGME_CONFIG_HOST)
+AC_SUBST(GPGME_CONFIG_AVAIL_LANG)
# Frob'da Variables
LTLIBOBJS=`echo "$LIB@&t@OBJS" |
@@ -679,7 +843,6 @@ AC_SUBST(emacs_local_vars_begin, [['Local][ ][Variables:']])
AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
AC_SUBST(emacs_local_vars_end, ['End:'])
-
# Last check.
die=no
if test "$have_gpg_error" = "no"; then
@@ -725,15 +888,23 @@ AC_CONFIG_FILES(Makefile src/Makefile
src/gpgme.h)
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
+AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
+AC_CONFIG_FILES(lang/cpp/src/gpgmepp_version.h)
AC_CONFIG_FILES(lang/qt/Makefile lang/qt/src/Makefile)
+AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig-w32.cmake.in)
AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in)
AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake)
AC_CONFIG_FILES(lang/qt/tests/Makefile)
+AC_CONFIG_FILES(lang/qt/src/qgpgme_version.h)
AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])])
AC_CONFIG_FILES(lang/qt/doc/Makefile)
+AC_CONFIG_FILES([lang/python/Makefile
+ lang/python/version.py
+ lang/python/tests/Makefile])
+AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py])
AC_OUTPUT
echo "
@@ -744,9 +915,8 @@ echo "
UI Server: $uiserver
FD Passing: $use_descriptor_passing
- GPGME Pthread: $have_pthread
- Language bindings: $enabled_languages
+ Language bindings: ${enabled_languages_v:-$enabled_languages}
"
if test "x${gpg_config_script_warn}" != x; then
cat <