diff options
Diffstat (limited to '')
| -rw-r--r-- | configure.ac | 193 | ||||
| -rw-r--r-- | lang/qt/src/Makefile.am | 75 | ||||
| -rw-r--r-- | lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in | 105 | ||||
| -rw-r--r-- | lang/qt/src/QGpgmeQt6Config.cmake.in.in | 101 | ||||
| -rw-r--r-- | lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in | 31 | ||||
| -rw-r--r-- | lang/qt/tests/Makefile.am | 13 | ||||
| -rw-r--r-- | m4/qt6.m4 | 82 | 
7 files changed, 541 insertions, 59 deletions
| diff --git a/configure.ac b/configure.ac index 8fcf14f6..cee1781d 100644 --- a/configure.ac +++ b/configure.ac @@ -218,7 +218,7 @@ 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 qt qt5 qt6"  default_languages="cl cpp python qt"  case "${host}" in      x86_64-*mingw32*) @@ -305,7 +305,9 @@ fi  #       lang/Makefile.am's DIST_SUBDIRS.  AC_ARG_ENABLE([languages],                AS_HELP_STRING([--enable-languages=languages], -                             [enable only specific language bindings]), +                             [enable only specific language bindings: +                              cl cpp python qt qt5 qt6 (qt selects qt5 or qt6, +                              and qt5 and qt6 exclude each other)]),                               [enabled_languages=`echo $enableval | \                               tr ',:' '  ' | tr '[A-Z]' '[a-z]' | \                               sed 's/c++/cpp/'`], @@ -331,84 +333,160 @@ for language in $enabled_languages; do      fi  done -# Enable C++ 11 if cpp language is requested -LIST_MEMBER("cpp", $enabled_languages) +# Check whether Qt5 and/or Qt6 are enabled explicitly +want_qt5="no"; +LIST_MEMBER("qt5", $enabled_languages)  if test "$found" = "1"; then -    AX_CXX_COMPILE_STDCXX(11, noext, optional) -    if test "$HAVE_CXX11" != "1"; then -        if test "$explicit_languages" = "1"; then -            AC_MSG_ERROR([[ +    want_qt5="yes"; +    # Remove qt5; further down qt will be added +    enabled_languages=$(echo $enabled_languages | sed 's/qt5//') +fi +want_qt6="no"; +LIST_MEMBER("qt6", $enabled_languages) +if test "$found" = "1"; then +    want_qt6="yes"; +    # Remove qt6; further down qt will be added +    enabled_languages=$(echo $enabled_languages | sed 's/qt6//') +fi +if test "$want_qt5" = "yes" -a "$want_qt6" = "yes"; then +    AC_MSG_ERROR([[  *** -*** A compiler with c++11 support is required for the c++ binding. +*** The bindings for Qt5 and Qt6 cannot be built simultaneously.  ***]]) +fi + +# Ensure that pkg-config is available for all calls of FIND_QT5/FIND_QT6 +PKG_PROG_PKG_CONFIG + +# If the generic qt is enabled, then check for Qt5 or Qt6 (in this order) +LIST_MEMBER("qt", $enabled_languages) +if test "$found" = "1"; then +    # Remove the generic qt (qt5 and qt6 have already been removed) +    enabled_languages=$(echo $enabled_languages | sed 's/qt//') +    FIND_QT5 +    if test "$have_qt5_libs" = "yes"; then +        want_qt5="yes"; +    else +        FIND_QT6 +        if test "$have_qt6_libs" = "yes"; then +            want_qt6="yes";          else -            enabled_languages=$(echo $enabled_languages | sed 's/cpp//') -            enabled_languages=$(echo $enabled_languages | sed 's/qt//') -            AC_MSG_WARN([[ +            if test "$explicit_languages" = "1"; then +                AC_MSG_ERROR([[  *** -*** No c++11 support detected. C++ and Qt bindings will be disabled. +*** Qt5 (Qt5Core) or Qt6 (Qt6Core) is required for the Qt binding.  ***]]) +            else +                AC_MSG_WARN([[ +*** +*** Qt5 (Qt5Core) and Qt6 (Qt6Core) not found. Qt Binding will be disabled. +***]]) +            fi          fi      fi -fi - -# Check whether compiler supports visibility attribute (if cpp language is enabled) -LIST_MEMBER("cpp", $enabled_languages) -if test "$found" = "1"; then -    AX_GCC_FUNC_ATTRIBUTE(visibility) -    if test "$ax_cv_have_func_attribute_visibility" = "yes"; then -        GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden" +elif test "$want_qt5" = "yes"; then +    FIND_QT5 +    if test "$have_qt5_libs" != "yes"; then +        AC_MSG_ERROR([[ +*** +*** Qt5 (Qt5Core) is required for the Qt 5 binding. +***]]) +    fi +elif test "$want_qt6" = "yes"; then +    FIND_QT6 +    if test "$have_qt6_libs" != "yes"; then +        AC_MSG_ERROR([[ +*** +*** Qt6 (Qt6Core) is required for the Qt 6 binding. +***]])      fi  fi -AC_SUBST(GPGME_CPP_CFLAGS) -# 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 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//') +# Check that cpp is enabled if qt5 or qt6 is enabled +if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then      LIST_MEMBER("cpp", $enabled_languages)      if test "$found" = "0"; then          AC_MSG_ERROR([[  *** -*** Qt language binding depends on cpp binding. +*** The Qt bindings depend on the C++ binding.  ***]])      fi -    FIND_QT5 -    if test "$have_qt5_libs" != "yes"; then +fi + +# Enable C++ 17 if qt6 is requested +if test "$want_qt6" = "yes"; then +    AX_CXX_COMPILE_STDCXX(17, noext, optional) +    if test "$HAVE_CXX17" != "1"; then          if test "$explicit_languages" = "1"; then -        AC_MSG_ERROR([[ +            AC_MSG_ERROR([[  *** -*** Qt5 (Qt5Core) is required for Qt binding. +*** A compiler with c++17 support is required for the Qt 6 binding.  ***]])          else -           AC_MSG_WARN([[ +            want_qt6="no" +            AC_MSG_WARN([[  *** -*** Qt5 (Qt5Core) not found Qt Binding will be disabled. +*** No c++17 support detected. Qt 6 binding will be disabled.  ***]])          fi -    else -        enabled_languages=`echo $enabled_languages qt` +    fi +fi -        AC_CHECK_PROGS([DOXYGEN], [doxygen]) -        if test -z "$DOXYGEN"; -            # This is not highlighted because 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.]) +# Enable C++ 11 if cpp is requested (unless C++ 17 was already enabled) +LIST_MEMBER("cpp", $enabled_languages) +if test "$found" = "1" -a "$HAVE_CXX17" != "1"; then +    AX_CXX_COMPILE_STDCXX(11, noext, optional) +    if test "$HAVE_CXX11" != "1"; then +        if test "$explicit_languages" = "1"; then +            AC_MSG_ERROR([[ +*** +*** A compiler with c++11 support is required for the C++ binding. +***]]) +        else +            enabled_languages=$(echo $enabled_languages | sed 's/cpp//') +            want_qt5="no" +            AC_MSG_WARN([[ +*** +*** No c++11 support detected. C++ and Qt 5 bindings will be disabled. +***]])          fi      fi  fi -# Check if compiler supports visibility attribute (if qt is enabled) -LIST_MEMBER("qt", $enabled_languages) +# Now append qt to the list of language bindings +if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then +    enabled_languages=$(echo $enabled_languages qt) +fi + +# Check whether compiler supports visibility attribute (if cpp language is enabled) +LIST_MEMBER("cpp", $enabled_languages)  if test "$found" = "1"; then      AX_GCC_FUNC_ATTRIBUTE(visibility)      if test "$ax_cv_have_func_attribute_visibility" = "yes"; then -        GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fvisibility=hidden" +        GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden" +        if test "$want_qt5" = "yes"; then +            GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fvisibility=hidden" +        fi +        if test "$want_qt6" = "yes"; then +            GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -fvisibility=hidden" +        fi +    fi +fi +AC_SUBST(GPGME_CPP_CFLAGS) + +AM_CONDITIONAL(WANT_QT5, test "$want_qt5" = yes) +AM_CONDITIONAL(WANT_QT6, test "$want_qt6" = yes) + +# Check for tools for building the Qt binding docs +if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then +    AC_CHECK_PROGS([DOXYGEN], [doxygen]) +    if test -z "$DOXYGEN"; then +        # This is not highlighted because it's not really important. +        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 @@ -967,9 +1045,16 @@ 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) +if test "$want_qt5" = "yes"; then +    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) +fi +if test "$want_qt6" = "yes"; then +    AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6Config-w32.cmake.in) +    AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6Config.cmake.in) +    AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6ConfigVersion.cmake) +fi  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]) @@ -987,6 +1072,12 @@ AC_CONFIG_FILES([lang/python/Makefile  AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py])  AC_OUTPUT +if test "$want_qt5" = "yes"; then +    enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 5)/") +elif test "$want_qt6" = "yes"; then +    enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 6)/") +fi +  echo "          GPGME v${VERSION} has been configured as follows: diff --git a/lang/qt/src/Makefile.am b/lang/qt/src/Makefile.am index aa03cc72..9ad826e9 100644 --- a/lang/qt/src/Makefile.am +++ b/lang/qt/src/Makefile.am @@ -18,10 +18,18 @@  # along with this program; if not, write to the Free Software  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  # 02111-1307, USA + +if WANT_QT5  lib_LTLIBRARIES = libqgpgme.la +endif +if WANT_QT6 +lib_LTLIBRARIES = libqgpgmeqt6.la +endif +  EXTRA_DIST = QGpgmeConfig.cmake.in.in QGpgmeConfigVersion.cmake.in \               qgpgme_debug.h qgpgme_version.h.in \ -             QGpgmeConfig-w32.cmake.in.in +             QGpgmeConfig-w32.cmake.in.in QGpgmeQt6Config.cmake.in.in \ +             QGpgmeQt6Config-w32.cmake.in.in QGpgmeQt6ConfigVersion.cmake.in  qgpgme_sources = \      dataprovider.cpp \ @@ -258,17 +266,32 @@ camelcaseincludedir = $(includedir)/QGpgME  camelcaseinclude_HEADERS = $(camelcase_headers)  nodist_qgpgmeinclude_HEADERS = qgpgme_version.h -libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers) - +if WANT_QT5  AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \                @GPGME_QT5_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \                -DBUILDING_QGPGME -Wsuggest-override \                -Wzero-as-null-pointer-constant +libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers) +  libqgpgme_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \ -                       @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT5_LIBS@ +                      @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT5_LIBS@  libqgpgme_la_LDFLAGS = -no-undefined -version-info \ -    @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@ +                       @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@ +endif +if WANT_QT6 +AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \ +              @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \ +              -DBUILDING_QGPGME -Wsuggest-override \ +              -Wzero-as-null-pointer-constant + +libqgpgmeqt6_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers) + +libqgpgmeqt6_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \ +                         @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT6_LIBS@ +libqgpgmeqt6_la_LDFLAGS = -no-undefined -version-info \ +                          @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@ +endif  if HAVE_MACOS_SYSTEM  libsuffix=.dylib @@ -276,6 +299,7 @@ else  libsuffix=.so  endif +if WANT_QT5  if HAVE_W32_SYSTEM  QGpgmeConfig.cmake: QGpgmeConfig-w32.cmake.in  	sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \ @@ -287,23 +311,52 @@ QGpgmeConfig.cmake: QGpgmeConfig.cmake.in  	sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \  	sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@  endif +endif +if WANT_QT6 +if HAVE_W32_SYSTEM +QGpgmeQt6Config.cmake: QGpgmeQt6Config-w32.cmake.in +	sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \ +	sed -e 's|[@]resolved_libdir@|$(libdir)|g' | \ +	sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@ +else +QGpgmeQt6Config.cmake: QGpgmeQt6Config.cmake.in +	sed -e 's|[@]resolved_libdir@|$(libdir)|g' < "$<" | \ +	sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \ +	sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@ +endif +endif  $(camelcase_headers): Makefile.am  	echo -n "#include \"qgpgme/" > "$@"  	echo -n "$@" | tr '[:upper:]' '[:lower:]' >> "$@"  	echo ".h\"" >> "$@" +if WANT_QT5  install-cmake-files: QGpgmeConfig.cmake QGpgmeConfigVersion.cmake  	-$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgme  	$(INSTALL) -m 644 QGpgmeConfig.cmake \ -        $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake +	$(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake  	$(INSTALL) -m 644 QGpgmeConfigVersion.cmake \ -        $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake +	$(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake  uninstall-cmake-files:  	-rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake  	-rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake  	-rmdir $(DESTDIR)$(libdir)/cmake/QGpgme/ +endif +if WANT_QT6 +install-cmake-files: QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake +	-$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgmeQt6 +	$(INSTALL) -m 644 QGpgmeQt6Config.cmake \ +	$(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake +	$(INSTALL) -m 644 QGpgmeQt6ConfigVersion.cmake \ +	$(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake + +uninstall-cmake-files: +	-rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake +	-rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake +	-rmdir $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/ +endif  install-data-local: install-cmake-files @@ -313,9 +366,15 @@ BUILT_SOURCES = $(qgpgme_moc_sources) $(camelcase_headers)  CLEANFILES = $(qgpgme_moc_sources) $(camelcase_headers) QGpgmeConfig.cmake \               qgpgme_version.h QGpgmeConfig.cmake.in \ -             QGpgmeConfigVersion.cmake +             QGpgmeConfigVersion.cmake QGpgmeQt6Config.cmake.in \ +             QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake +if WANT_QT5  nodist_libqgpgme_la_SOURCES = $(qgpgme_moc_sources) +endif +if WANT_QT6 +nodist_libqgpgmeqt6_la_SOURCES = $(qgpgme_moc_sources) +endif  .h.moc:  	$(MOC) `test -f '$<' || echo '$(srcdir)/'`$< -o $@ diff --git a/lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in b/lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in new file mode 100644 index 00000000..6cb8af40 --- /dev/null +++ b/lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in @@ -0,0 +1,105 @@ +# CMake Config file for QGpgME for Qt 6 +# Copyright (C) 2016 Intevation GmbH +# +# This file is part of GPGME. +# +# QGpgME 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 2 of the License, or +# (at your option) any later version. +# +# QGpgME 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 Lesser General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA + +# based on a generated file from cmake. +# Generated by CMake 3.0.2 + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) +   message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget QGpgmeQt6) +  list(APPEND _expectedTargets ${_expectedTarget}) +  if(NOT TARGET ${_expectedTarget}) +    list(APPEND _targetsNotDefined ${_expectedTarget}) +  endif() +  if(TARGET ${_expectedTarget}) +    list(APPEND _targetsDefined ${_expectedTarget}) +  endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") +  set(CMAKE_IMPORT_FILE_VERSION) +  cmake_policy(POP) +  return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") +  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + +# Create imported target QGpgmeQt6 +add_library(QGpgmeQt6 SHARED IMPORTED) + +set_target_properties(QGpgmeQt6 PROPERTIES +  IMPORTED_IMPLIB_RELEASE "@resolved_libdir@/libqgpgmeqt6.dll.a" +  INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/qgpgme;@resolved_includedir@" +  INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt6::Core" +  IMPORTED_LOCATION "@resolved_libdir@/libqgpgmeqt6-7.dll" +) + +list(APPEND _IMPORT_CHECK_TARGETS QGpgmeQt6 ) +list(APPEND _IMPORT_CHECK_FILES_FOR_QGpgmeQt6 "@resolved_libdir@/libqgpgmeqt6.dll.a" "@resolved_bindir@/libqgpgmeqt6-7.dll" ) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) +  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) +  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) +    if(NOT EXISTS "${file}" ) +      message(FATAL_ERROR "The imported target \"${target}\" references the file +   \"${file}\" +but this file does not exist.  Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained +   \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") +    endif() +  endforeach() +  unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) + +# Gpgmepp is a requirement for QGpgME +find_package(Gpgmepp CONFIG REQUIRED) diff --git a/lang/qt/src/QGpgmeQt6Config.cmake.in.in b/lang/qt/src/QGpgmeQt6Config.cmake.in.in new file mode 100644 index 00000000..b539922f --- /dev/null +++ b/lang/qt/src/QGpgmeQt6Config.cmake.in.in @@ -0,0 +1,101 @@ +# CMake Config file for QGpgME for Qt 6 +# Copyright (C) 2016 Intevation GmbH +# +# This file is part of GPGME. +# +# QGpgME 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 2 of the License, or +# (at your option) any later version. +# +# QGpgME 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 Lesser General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA + +# based on a generated file from cmake. +# Generated by CMake 3.0.2 + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) +   message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget QGpgmeQt6) +  list(APPEND _expectedTargets ${_expectedTarget}) +  if(NOT TARGET ${_expectedTarget}) +    list(APPEND _targetsNotDefined ${_expectedTarget}) +  endif() +  if(TARGET ${_expectedTarget}) +    list(APPEND _targetsDefined ${_expectedTarget}) +  endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") +  set(CMAKE_IMPORT_FILE_VERSION) +  cmake_policy(POP) +  return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") +  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + +# Create imported target QGpgmeQt6 +add_library(QGpgmeQt6 SHARED IMPORTED) + +set_target_properties(QGpgmeQt6 PROPERTIES +  INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/qgpgme;@resolved_includedir@" +  INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt6::Core" +  IMPORTED_LOCATION "@resolved_libdir@/libqgpgmeqt6@libsuffix@" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) +  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) +  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) +    if(NOT EXISTS "${file}" ) +      message(FATAL_ERROR "The imported target \"${target}\" references the file +   \"${file}\" +but this file does not exist.  Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained +   \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") +    endif() +  endforeach() +  unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) + +# Gpgmepp is a requirement for QGpgME +find_package(Gpgmepp CONFIG REQUIRED) diff --git a/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in b/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in new file mode 100644 index 00000000..eaa60dc8 --- /dev/null +++ b/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in @@ -0,0 +1,31 @@ +# CMake Version file for QGpgME for Qt 6 +# Copyright (C) 2016 Intevation GmbH +# +# This file is part of GPGME. +# +# QGpgME 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 2 of the License, or +# (at your option) any later version. +# +# QGpgME 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 Lesser General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA + +# based on a generated file from cmake. +set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_MICRO@") + +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) +  set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() +  set(PACKAGE_VERSION_COMPATIBLE TRUE) +  if("${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}") +    set(PACKAGE_VERSION_EXACT TRUE) +  endif() +endif() diff --git a/lang/qt/tests/Makefile.am b/lang/qt/tests/Makefile.am index a1d1b82f..564a9ff7 100644 --- a/lang/qt/tests/Makefile.am +++ b/lang/qt/tests/Makefile.am @@ -44,6 +44,7 @@ moc_files = \  AM_LDFLAGS = -no-install +if WANT_QT5  LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \          ../../../src/libgpgme.la @GPGME_QT5_LIBS@ @GPG_ERROR_LIBS@ \          @GPGME_QT5TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++ @@ -53,6 +54,18 @@ AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \                @LIBASSUAN_CFLAGS@ @GPGME_QT5TEST_CFLAGS@ -DBUILDING_QGPGME \                -I$(top_srcdir)/lang/qt/src \                -DTOP_SRCDIR="$(top_srcdir)" +endif +if WANT_QT6 +LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgmeqt6.la \ +        ../../../src/libgpgme.la @GPGME_QT6_LIBS@ @GPG_ERROR_LIBS@ \ +        @GPGME_QT6TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++ + +AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \ +              @GPG_ERROR_CFLAGS@ @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ \ +              @LIBASSUAN_CFLAGS@ @GPGME_QT6TEST_CFLAGS@ -DBUILDING_QGPGME \ +              -I$(top_srcdir)/lang/qt/src \ +              -DTOP_SRCDIR="$(top_srcdir)" +endif  support_src = t-support.h t-support.cpp diff --git a/m4/qt6.m4 b/m4/qt6.m4 new file mode 100644 index 00000000..6e864fb1 --- /dev/null +++ b/m4/qt6.m4 @@ -0,0 +1,82 @@ +dnl qt6.m4 +dnl Copyright (C) 2016 Intevation GmbH +dnl +dnl This file is part of gpgme and is provided under the same license as gpgme + +dnl Autoconf macro to find Qt6 +dnl +dnl sets GPGME_QT6_LIBS and GPGME_QT6_CFLAGS +dnl +dnl if QT6 was found have_qt6_libs is set to yes + +AC_DEFUN([FIND_QT6], +[ +  have_qt6_libs="no"; + +  PKG_CHECK_MODULES(GPGME_QT6, +                    Qt6Core >= 6.4.0, +                    [have_qt6_libs="yes"], +                    [have_qt6_libs="no"]) + +  PKG_CHECK_MODULES(GPGME_QT6TEST, +                    Qt6Test >= 6.4.0, +                    [have_qt6test_libs="yes"], +                    [have_qt6test_libs="no"]) + +  if ! test "$have_w32_system" = yes; then +    if "$PKG_CONFIG" --variable qt_config Qt6Core | grep -q "reduce_relocations"; then +      GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -fpic" +    fi +  fi +  if test "$have_qt6_libs" = "yes"; then +    # Qt6 moved moc to libexec +    qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0') +    AC_PATH_TOOL(MOC, moc, [], [$qt6libexecdir]) +    AC_MSG_CHECKING([moc version]) +    mocversion=`$MOC -v 2>&1` +    mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` +    if test x"$mocversiongrep" != x"$mocversion"; then +      AC_MSG_RESULT([no]) +      # moc was not the qt6 one, try with moc-qt6 +      AC_CHECK_TOOL(MOC2, moc-qt6) +      mocversion=`$MOC2 -v 2>&1` +      mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"` +      if test x"$mocversiongrep" != x"$mocversion"; then +        AC_CHECK_TOOL(QTCHOOSER, qtchooser) +        qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2` +        mocversion=`$qt6tooldir/moc -v 2>&1` +        mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` +        if test x"$mocversiongrep" != x"$mocversion"; then +          # no valid moc found +          have_qt6_libs="no"; +        else +          MOC=$qt6tooldir/moc +        fi +      else +        MOC=$MOC2 +      fi +    fi +    AC_MSG_RESULT([$mocversion]) +    dnl Check that a binary can actually be build with this qt. +    dnl pkg-config may be set up in a way that it looks also for libraries +    dnl of the build system and not only for the host system. In that case +    dnl we check here that we can actually compile / link a qt application +    dnl for host. +    OLDCPPFLAGS=$CPPFLAGS +    CPPFLAGS=$GPGME_QT6_CFLAGS +    OLDLIBS=$LIBS +    LIBS=$GPGME_QT6_LIBS +    AC_LANG_PUSH(C++) +    AC_MSG_CHECKING([whether a simple qt program can be built]) +    AC_LINK_IFELSE([AC_LANG_SOURCE([ +    #include <QCoreApplication> +    int main (int argc, char **argv) { +    QCoreApplication app(argc, argv); +    app.exec(); +    }])], [have_qt6_libs='yes'], [have_qt6_libs='no']) +    AC_MSG_RESULT([$have_qt6_libs]) +    AC_LANG_POP() +    CPPFLAGS=$OLDCPPFLAGS +    LIBS=$OLDLIBS +  fi +]) | 
