build,cpp: Support building C++ bindings as nested package of gpgme
* Makefile.am: Add variables languages, dist_languages, distcheck_languages, release_languages, sign_release_languages, distclean_languages. Add rules for nested language bindings. (distclean-local, dist-all, distcheck-all, release-all, sign-release-all): New rules. (.PHONY): Add all new rules. * autogen-all.sh: New. * configure.ac: Add cpp to available languages if subdir exists. Add cpp to nested languages if enabled to generate corresponding make targets. Call configure script of nested cpp package recursively. * lang/cpp/configure.ac: Check if gpgmepp is built as nested package and set GPGME_CFLAGS and GPGME_LIBS accordingly. -- This re-adds the ability to build the C++ bindings together with gpgme with a single `configure && make` command (if building from git). It also adds make targets for running dist, distcheck, release and sign-release for gpgme and all enabled nested languages with a single make command. GnuPG-bug-id: 7110
This commit is contained in:
parent
f87e23c512
commit
6334960bbe
59
Makefile.am
59
Makefile.am
@ -1,6 +1,6 @@
|
|||||||
# Makefile.am - Top level Makefile for GPGME.
|
# Makefile.am - Top level Makefile for GPGME.
|
||||||
# Copyright (C) 2000 Werner Koch (dd9jn)
|
# Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
# Copyright (C) 2001, 2002, 2004, 2005, 2008, 2009 g10 Code GmbH
|
# Copyright (C) 2001, 2002, 2004, 2005, 2008, 2009, 2024 g10 Code GmbH
|
||||||
#
|
#
|
||||||
# This file is part of GPGME.
|
# This file is part of GPGME.
|
||||||
#
|
#
|
||||||
@ -70,8 +70,6 @@ distcheck-hook:
|
|||||||
esac;\
|
esac;\
|
||||||
done ) | tee $(distdir).swdb
|
done ) | tee $(distdir).swdb
|
||||||
|
|
||||||
.PHONY: gen-ChangeLog release sign-release
|
|
||||||
|
|
||||||
gen_start_date = 2011-12-01T00:00:00
|
gen_start_date = 2011-12-01T00:00:00
|
||||||
gen-ChangeLog:
|
gen-ChangeLog:
|
||||||
if test -d $(top_srcdir)/.git; then \
|
if test -d $(top_srcdir)/.git; then \
|
||||||
@ -142,3 +140,58 @@ sign-release:
|
|||||||
echo ' * All done; for checksums see dist/swdb.snippet' ;\
|
echo ' * All done; for checksums see dist/swdb.snippet' ;\
|
||||||
echo ' */' ;\
|
echo ' */' ;\
|
||||||
)
|
)
|
||||||
|
|
||||||
|
languages = $(NESTED_LANGUAGES)
|
||||||
|
|
||||||
|
dist_languages = $(languages:%=dist-%)
|
||||||
|
$(dist_languages):
|
||||||
|
+(set -e;\
|
||||||
|
lang=$$(echo "$@" | sed 's/.*-//');\
|
||||||
|
cd "lang/$$lang";\
|
||||||
|
$(MAKE) dist;\
|
||||||
|
)
|
||||||
|
|
||||||
|
distcheck_languages = $(languages:%=distcheck-%)
|
||||||
|
$(distcheck_languages):
|
||||||
|
+(set -e;\
|
||||||
|
lang=$$(echo "$@" | sed 's/.*-//');\
|
||||||
|
cd "lang/$$lang";\
|
||||||
|
$(MAKE) distcheck;\
|
||||||
|
)
|
||||||
|
|
||||||
|
release_languages = $(languages:%=release-%)
|
||||||
|
$(release_languages):
|
||||||
|
+(set -e;\
|
||||||
|
lang=$$(echo "$@" | sed 's/.*-//');\
|
||||||
|
cd "lang/$$lang";\
|
||||||
|
$(MAKE) release;\
|
||||||
|
)
|
||||||
|
|
||||||
|
sign_release_languages = $(languages:%=sign-release-%)
|
||||||
|
$(sign_release_languages):
|
||||||
|
+(set -e;\
|
||||||
|
lang=$$(echo "$@" | sed 's/.*-//');\
|
||||||
|
cd "lang/$$lang";\
|
||||||
|
$(MAKE) sign-release;\
|
||||||
|
)
|
||||||
|
|
||||||
|
distclean_languages = $(languages:%=distclean-%)
|
||||||
|
$(distclean_languages):
|
||||||
|
+(set -e;\
|
||||||
|
lang=$$(echo "$@" | sed 's/.*-//');\
|
||||||
|
cd "lang/$$lang";\
|
||||||
|
$(MAKE) distclean;\
|
||||||
|
)
|
||||||
|
distclean-local: $(distclean_languages)
|
||||||
|
|
||||||
|
dist-all: dist $(dist_languages)
|
||||||
|
|
||||||
|
distcheck-all: distcheck $(distcheck_languages)
|
||||||
|
|
||||||
|
release-all: release $(release_languages)
|
||||||
|
|
||||||
|
sign-release-all: sign-release $(sign_release_languages)
|
||||||
|
|
||||||
|
.PHONY: gen-ChangeLog release sign-release dist-all $(dist_languages) \
|
||||||
|
distcheck-all $(distcheck_languages) release-all $release_languages) \
|
||||||
|
sign-release-all $(sign_release_languages) $(distclean_languages)
|
||||||
|
67
autogen-all.sh
Executable file
67
autogen-all.sh
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# autogen-all.sh
|
||||||
|
# Copyright (C) 2024 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 script is a helper to run the autogen.sh script for gpgme and the
|
||||||
|
# nested packages of the C++, Qt, and Python bindings.
|
||||||
|
|
||||||
|
prog=$(basename "$0")
|
||||||
|
|
||||||
|
packages=". lang/cpp"
|
||||||
|
|
||||||
|
fatal () {
|
||||||
|
echo "${prog}:" "$*" >&2
|
||||||
|
DIE=yes
|
||||||
|
}
|
||||||
|
|
||||||
|
info () {
|
||||||
|
if [ -z "${SILENT}" ]; then
|
||||||
|
echo "${prog}:" "$*" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
die_p () {
|
||||||
|
if [ "$DIE" = "yes" ]; then
|
||||||
|
echo "autogen.sh: Stop." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
DIE=no
|
||||||
|
SILENT=
|
||||||
|
tmp=$(dirname "$0")
|
||||||
|
tsdir=$(cd "${tmp}"; pwd)
|
||||||
|
|
||||||
|
am_lf='
|
||||||
|
'
|
||||||
|
|
||||||
|
if test x"$1" = x"--help"; then
|
||||||
|
tmp="$(pwd)"
|
||||||
|
cd "$tsdir" || fatal "error cd-ing to $tsdir"
|
||||||
|
die_p
|
||||||
|
./autogen.sh --help | sed "s/autogen.sh/${prog}/" || fatal "error running ./autogen.sh --help"
|
||||||
|
die_p
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if test x"$1" = x"--silent"; then
|
||||||
|
SILENT=" --silent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for p in $packages; do
|
||||||
|
info Running ./autogen.sh "$@" in $p ...
|
||||||
|
curdir="$(pwd)"
|
||||||
|
cd "$tsdir/$p" || fatal "error cd-ing to $tsdir/$p"
|
||||||
|
die_p
|
||||||
|
./autogen.sh "$@" | sed "s/autogen.sh/${prog}/" || fatal "error running ./autogen.sh $@"
|
||||||
|
die_p
|
||||||
|
cd "$curdir" || fatal "error cd-ing back to $curdir"
|
||||||
|
die_p
|
||||||
|
done
|
23
configure.ac
23
configure.ac
@ -238,6 +238,11 @@ have_macos_system=no
|
|||||||
build_w32_glib=no
|
build_w32_glib=no
|
||||||
available_languages="cl"
|
available_languages="cl"
|
||||||
default_languages="cl"
|
default_languages="cl"
|
||||||
|
for lang in cpp; do
|
||||||
|
if test -d $srcdir/lang/$lang; then
|
||||||
|
available_languages="$available_languages $lang"
|
||||||
|
fi
|
||||||
|
done
|
||||||
case "${host}" in
|
case "${host}" in
|
||||||
x86_64-*mingw32*)
|
x86_64-*mingw32*)
|
||||||
have_w64_system=yes
|
have_w64_system=yes
|
||||||
@ -323,8 +328,7 @@ fi
|
|||||||
# lang/Makefile.am's DIST_SUBDIRS.
|
# lang/Makefile.am's DIST_SUBDIRS.
|
||||||
AC_ARG_ENABLE([languages],
|
AC_ARG_ENABLE([languages],
|
||||||
AS_HELP_STRING([--enable-languages=languages],
|
AS_HELP_STRING([--enable-languages=languages],
|
||||||
[enable only specific language bindings:
|
[enable only specific language bindings]),
|
||||||
cl]),
|
|
||||||
[enabled_languages=`echo $enableval | \
|
[enabled_languages=`echo $enableval | \
|
||||||
tr ',:' ' ' | tr '[A-Z]' '[a-z]'`],
|
tr ',:' ' ' | tr '[A-Z]' '[a-z]'`],
|
||||||
[enabled_languages="maybe"])
|
[enabled_languages="maybe"])
|
||||||
@ -351,6 +355,14 @@ done
|
|||||||
|
|
||||||
AC_SUBST(ENABLED_LANGUAGES, $enabled_languages)
|
AC_SUBST(ENABLED_LANGUAGES, $enabled_languages)
|
||||||
|
|
||||||
|
nested_languages=
|
||||||
|
LIST_MEMBER("cpp", $enabled_languages)
|
||||||
|
if test "$found" = "1"; then
|
||||||
|
nested_languages="$nested_languages cpp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(NESTED_LANGUAGES, $nested_languages)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Provide information about the build.
|
# Provide information about the build.
|
||||||
#
|
#
|
||||||
@ -825,6 +837,13 @@ AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
|
|||||||
AC_CONFIG_FILES([lang/js/Makefile lang/js/src/Makefile
|
AC_CONFIG_FILES([lang/js/Makefile lang/js/src/Makefile
|
||||||
lang/js/BrowserTestExtension/Makefile
|
lang/js/BrowserTestExtension/Makefile
|
||||||
lang/js/DemoExtension/Makefile])
|
lang/js/DemoExtension/Makefile])
|
||||||
|
|
||||||
|
# Call ./configure scripts of nested packages recursively.
|
||||||
|
LIST_MEMBER("cpp", $enabled_languages)
|
||||||
|
if test "$found" = "1"; then
|
||||||
|
AC_CONFIG_SUBDIRS([lang/cpp])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
|
@ -354,8 +354,26 @@ AM_CONDITIONAL(USE_GPGRT_CONFIG, [test -n "$GPGRT_CONFIG" \
|
|||||||
|
|
||||||
# And for gpgme.
|
# And for gpgme.
|
||||||
have_gpgme=no
|
have_gpgme=no
|
||||||
AM_PATH_GPGME("$NEED_GPGME_VERSION",
|
builddir=`pwd`
|
||||||
have_gpgme=yes, have_gpgme=no)
|
# Check if gpgmepp is built as nested package of gpgme
|
||||||
|
if test "${srcdir%/lang/cpp}/lang/cpp" == "$srcdir" -a \
|
||||||
|
"${builddir%/lang/cpp}/lang/cpp" == "$builddir"; then
|
||||||
|
AC_MSG_CHECKING(for GpgME - assuming nested build)
|
||||||
|
gpgme_build_dir=${builddir%/lang/cpp}
|
||||||
|
if test -f "$gpgme_build_dir/src/gpgme.h"; then
|
||||||
|
GPGME_CFLAGS="-I$gpgme_build_dir/src"
|
||||||
|
GPGME_LIBS="$gpgme_build_dir/src/libgpgme.la"
|
||||||
|
have_gpgme=yes
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$have_gpgme" = "no"; then
|
||||||
|
AM_PATH_GPGME("$NEED_GPGME_VERSION",
|
||||||
|
have_gpgme=yes, have_gpgme=no)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Substitution used for gpgmepp.pc
|
# Substitution used for gpgmepp.pc
|
||||||
|
Loading…
Reference in New Issue
Block a user