aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2023-08-17 05:03:09 +0000
committerNIIBE Yutaka <[email protected]>2023-08-17 05:03:09 +0000
commitdacbd51c3f8ae6dafe56b3d4b4d15c8d62254230 (patch)
treed03640f87382c55ec877dedd8a9755436febadcc
parentqt: Clean up after failure or cancel of sign/encrypt archive operation (diff)
downloadgpgme-dacbd51c3f8ae6dafe56b3d4b4d15c8d62254230.tar.gz
gpgme-dacbd51c3f8ae6dafe56b3d4b4d15c8d62254230.zip
build: New configure option --with-libtool-modification.
* Makefile.am (EXTRA_DIST): Add build-aux/libtool-patch.sed. * build-aux/libtool-patch.sed: New. * configure.ac (--with-libtool-modification): New. * build-aux/ltmain.sh: Revert our own local modification. -- Fixes-commit: e622e36f1f32641c66b28a0de95c75ae35f6ca05 GnuPG-bug-id: 6619 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--Makefile.am1
-rw-r--r--build-aux/libtool-patch.sed68
-rw-r--r--build-aux/ltmain.sh13
-rw-r--r--configure.ac38
4 files changed, 107 insertions, 13 deletions
diff --git a/Makefile.am b/Makefile.am
index 18484022..71046b2f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,6 +36,7 @@ DISTCHECK_CONFIGURE_FLAGS =
EXTRA_DIST = autogen.sh autogen.rc gpgme.spec.in \
ChangeLog-2011 m4/ChangeLog-2011 \
+ build-aux/libtool-patch.sed \
conf/whatisthis VERSION LICENSES
# This artificial line is to put a dependency to conf/config.h for 'all'
diff --git a/build-aux/libtool-patch.sed b/build-aux/libtool-patch.sed
new file mode 100644
index 00000000..ac5a3bad
--- /dev/null
+++ b/build-aux/libtool-patch.sed
@@ -0,0 +1,68 @@
+#
+# This is a sed script to patch the generated libtool,
+# which works well against both of libtool 2.4.2 and 2.4.7.
+#
+# You may use this work under the terms of a Creative Commons CC0 1.0
+# License/Waiver.
+#
+# CC0 Public Domain Dedication
+# https://creativecommons.org/publicdomain/zero/1.0/
+
+#
+# This sed script applys two hunks of the patch:
+#
+# Part1: after the comment "# bleh windows"
+# Part2: after the comment "#extension on DOS 8.3..."
+#
+# Only when those two parts are patched correctly, it exits with 0 or
+# else, it exits with 1
+#
+
+# Find the part 1, by the comment
+/^[ \t]*# bleh windows$/b part1_start
+# Not found the part1, raise an error
+$ q1
+b
+
+:part1_start
+n
+# The first line in the part 1 must be the begining of the case statement.
+/^[ \t]*case \$host in$/! q1
+n
+# Insert the entry for x86_64-*mingw32*, for modified versuffix.
+i\
+ x86_64-*mingw32*)
+i\
+ func_arith $current - $age
+i\
+ major=$func_arith_result
+i\
+ versuffix="6-$major"
+i\
+ ;;
+:part1_0
+# Find the end of the case statement
+/^[ \t]*esac$/b find_part2
+# Not found the end of the case statement, raise an error
+$ q1
+n
+b part1_0
+
+:find_part2
+/^[ \t]*# extension on DOS 8.3 file.*systems.$/b part2_process
+# Not found the part2, raise an error
+$ q1
+n
+b find_part2
+
+:part2_process
+$ q1
+s/^[ \t]*\(versuffix=\)\(.*\)\(-$major\)\(.*\)$/\t case \$host in\n\t x86_64-*mingw32*)\n\t \1\26\3\4\n\t ;;\n\t *)\n\t \1\2\3\4\n\t ;;\n\t esac/
+t part2_done
+n
+b part2_process
+
+:part2_done
+$ q0
+n
+b part2_done
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
index c3bcdc06..77963a93 100644
--- a/build-aux/ltmain.sh
+++ b/build-aux/ltmain.sh
@@ -6766,11 +6766,6 @@ func_mode_link ()
elif test -n "$soname_spec"; then
# bleh windows
case $host in
- x86_64-*mingw32*)
- func_arith $current - $age
- major=$func_arith_result
- versuffix="6-$major"
- ;;
*cygwin* | mingw* | *cegcc*)
func_arith $current - $age
major=$func_arith_result
@@ -7504,14 +7499,6 @@ func_mode_link ()
func_arith $current - $age
major=$func_arith_result
versuffix="-$major"
- case $host in
- x86_64-*mingw32*)
- versuffix="6-$major"
- ;;
- *)
- versuffix="-$major"
- ;;
- esac
;;
*)
diff --git a/configure.ac b/configure.ac
index d7396a27..7ddb1b4f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -206,6 +206,44 @@ esac
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
+#
+# Specify how we support our local modification of libtool for Windows
+# 64-bit. Options are:
+#
+# (1) apply: when appying patch fails, it results failure of entire build
+# (2) never: never apply the patch (no try)
+# (3) try: use patched if it goes well, use original if fails
+#
+AC_ARG_WITH([libtool-modification],
+ AS_HELP_STRING([--with-libtool-modification=apply|never|try],
+ [how to handle libtool modification (default=apply)]),
+ build_libtool_modification=$withval,
+ build_libtool_modification=apply)
+
+#
+# Apply a patch (locally maintained one of ours) to libtool
+#
+case $host in
+ x86_64-*mingw32*)
+AC_CONFIG_COMMANDS([libtool-patch],[[
+ if test "$build_selection" = never; then
+ echo "patch not applied"
+ elif (mv -f libtool libtool.orig; \
+ sed -f $srcdir/build-aux/libtool-patch.sed libtool.orig >libtool); then
+ echo "applied successfully"
+ elif test "$build_selection" = try; then
+ mv -f libtool.orig libtool
+ echo "patch failed, thus, using original"
+ else
+ echo "patch failed"
+ as_fn_exit 1
+ fi
+]],[build_selection=$build_libtool_modification])
+ ;;
+ *)
+ ;;
+esac
+
GPG_DEFAULT=no
GPGSM_DEFAULT=no
GPGCONF_DEFAULT=no