build,qt: Allow building QGpgME for Qt 6
* configure.ac: Look for Qt 5 and/or Qt 6. Require C++17 if Qt 6 binding is built. Build cmake files QGpgmeConfig* for Qt 5 and QGpgmeQt6Config* for Qt 6. (available_languages): Add "qt5" and "qt6". (WANT_QT5, WANT_QT6): New conditionals. * lang/qt/src/Makefile.am: Keep building libqgpgme for Qt 5. Build libqgpgmeqt6 for Qt 6. * lang/qt/tests/Makefile.am: Build tests for Qt 5 or Qt 6. * lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in, lang/qt/src/QGpgmeQt6Config.cmake.in.in, lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in, m4/qt6.m4: New. -- This makes it possible to build QGpgME optionally for Qt 6.4.0 or later. By default or if the language "qt" is enabled, then QGpgME is built either for Qt 5 (if found) or Qt 6. A build for Qt 5 or Qt 6 can be requested by explicitly enabling the language "qt5" or "qt6". Building QGpgME for Qt 5 and Qt 6 simultaneously is not supported.
This commit is contained in:
parent
8e908029ff
commit
8d019bbb8d
189
configure.ac
189
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
|
||||
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([[
|
||||
***
|
||||
*** 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
|
||||
if test "$explicit_languages" = "1"; then
|
||||
AC_MSG_ERROR([[
|
||||
***
|
||||
*** 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
|
||||
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
|
||||
|
||||
# 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([[
|
||||
***
|
||||
*** The Qt bindings depend on the C++ binding.
|
||||
***]])
|
||||
fi
|
||||
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([[
|
||||
***
|
||||
*** A compiler with c++17 support is required for the Qt 6 binding.
|
||||
***]])
|
||||
else
|
||||
want_qt6="no"
|
||||
AC_MSG_WARN([[
|
||||
***
|
||||
*** No c++17 support detected. Qt 6 binding will be disabled.
|
||||
***]])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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.
|
||||
*** A compiler with c++11 support is required for the C++ binding.
|
||||
***]])
|
||||
else
|
||||
enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
|
||||
enabled_languages=$(echo $enabled_languages | sed 's/qt//')
|
||||
want_qt5="no"
|
||||
AC_MSG_WARN([[
|
||||
***
|
||||
*** No c++11 support detected. C++ and Qt bindings will be disabled.
|
||||
*** No c++11 support detected. C++ and Qt 5 bindings will be disabled.
|
||||
***]])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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_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)
|
||||
|
||||
# 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//')
|
||||
LIST_MEMBER("cpp", $enabled_languages)
|
||||
if test "$found" = "0"; then
|
||||
AC_MSG_ERROR([[
|
||||
***
|
||||
*** Qt language binding depends on cpp binding.
|
||||
***]])
|
||||
fi
|
||||
FIND_QT5
|
||||
if test "$have_qt5_libs" != "yes"; then
|
||||
if test "$explicit_languages" = "1"; then
|
||||
AC_MSG_ERROR([[
|
||||
***
|
||||
*** Qt5 (Qt5Core) is required for Qt binding.
|
||||
***]])
|
||||
else
|
||||
AC_MSG_WARN([[
|
||||
***
|
||||
*** Qt5 (Qt5Core) not found Qt Binding will be disabled.
|
||||
***]])
|
||||
fi
|
||||
else
|
||||
enabled_languages=`echo $enabled_languages qt`
|
||||
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";
|
||||
if test -z "$DOXYGEN"; then
|
||||
# This is not highlighted because it's not really important.
|
||||
then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.])
|
||||
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
|
||||
|
||||
# Check if compiler supports visibility attribute (if qt is enabled)
|
||||
LIST_MEMBER("qt", $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"
|
||||
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)
|
||||
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:
|
||||
|
||||
|
@ -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@
|
||||
libqgpgme_la_LDFLAGS = -no-undefined -version-info \
|
||||
@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,12 +311,27 @@ 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 \
|
||||
@ -304,6 +343,20 @@ 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 $@
|
||||
|
105
lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in
Normal file
105
lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in
Normal file
@ -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)
|
101
lang/qt/src/QGpgmeQt6Config.cmake.in.in
Normal file
101
lang/qt/src/QGpgmeQt6Config.cmake.in.in
Normal file
@ -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)
|
31
lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in
Normal file
31
lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in
Normal file
@ -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()
|
@ -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
|
||||
|
||||
|
82
m4/qt6.m4
Normal file
82
m4/qt6.m4
Normal file
@ -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
|
||||
])
|
Loading…
Reference in New Issue
Block a user