X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=blobdiff_plain;f=configure.ac;h=c6c6dc869796ea587d2823630a93bf727fc11e1c;hp=744b52a11ef684661b9bed9b17b0f0b9baa614bf;hb=1d48b04cfb3d1de654f3995578e9434a6b7b2fed;hpb=3e60788810f93cfcd7f08e5882aff32ed7b6f831 diff --git a/configure.ac b/configure.ac index 744b52a1..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,8 +28,8 @@ 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, [7]) -m4_define(mym4_version_micro, [0]) +m4_define(mym4_version_minor, [10]) +m4_define(mym4_version_micro, [1]) # Below is m4 magic to extract and compute the revision number, the # decimalized short revision number, a beta version string, and a flag @@ -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 -LIBGPGMEPP_LT_REVISION=1 +# If there is an ABI break in gpgmepp or qgpgme also bump the +# version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in -LIBQGPGME_LT_CURRENT=6 -LIBQGPGME_LT_AGE=0 -LIBQGPGME_LT_REVISION=1 +LIBGPGMEPP_LT_CURRENT=11 +LIBGPGMEPP_LT_AGE=5 +LIBGPGMEPP_LT_REVISION=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,6 +127,9 @@ 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 \ @@ -159,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 @@ -174,9 +185,10 @@ 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="cl cpp python qt" +available_languages="cl cpp python python2 python3 qt" default_languages="cl cpp python qt" case "${host}" in x86_64-*mingw32*) @@ -188,6 +200,9 @@ case "${host}" in *-linux-androideabi) have_android_system=yes ;; + *-apple-darwin*) + have_macos_system=yes + ;; esac case "${host}" in *-mingw32ce*|*-mingw32*) @@ -206,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' @@ -250,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], @@ -266,7 +280,7 @@ if test x$fixed_search_path != x ; then fi -# Note: You need to declare all possible langauges also in +# 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], @@ -322,7 +336,7 @@ 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) @@ -369,8 +383,13 @@ 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) -if test "$found" = "1"; then +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 @@ -382,11 +401,71 @@ if test "$found" = "1"; then enabled_languages=$(echo $enabled_languages | sed 's/python//') fi else - AM_PATH_PYTHON([3.4]) - AX_SWIG_PYTHON - if test -z "$PYTHON_VERSION"; then - if test "$explicit_languages" = "1"; then - AC_MSG_ERROR([[ + # 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. ***]]) @@ -394,6 +473,8 @@ if test "$found" = "1"; then enabled_languages=$(echo $enabled_languages | sed 's/python//') fi fi + + AC_SUBST(PYTHONS, $PYTHONS) fi fi @@ -512,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 @@ -533,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 @@ -550,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 @@ -599,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. @@ -643,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) @@ -682,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. */ @@ -709,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" ]) @@ -787,10 +888,12 @@ 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) @@ -799,9 +902,9 @@ 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/setup.py - lang/python/pyme/version.py + 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 " @@ -812,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 <