From c2d8e8a08acc55d8731242f88379b01fbcc09a06 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 20 May 2025 14:49:51 +0100 Subject: [PATCH] Run filesystem check before and after conversion Further fix required for ext2/3/4 guests related: RHEL-91931 --- ...required-to-make-AM_GNU_GETTEXT-work.patch | 3434 +++++++++++++++++ ...ck-n-flag-when-checking-ext2-3-4-fil.patch | 60 + ...RHEL-Fixes-for-libguestfs-winsupport.patch | 4 +- ...correct-qemu-binary-for-o-qemu-mode-.patch | 2 +- ...-the-qemu-boot-oo-qemu-boot-option-R.patch | 2 +- ...-supported-sound-cards-to-match-RHEL.patch | 2 +- ...sk-force-VNC-as-display-RHBZ-1372671.patch | 2 +- ...-for-supported-v2v-hypervisors-guest.patch | 2 +- ...h => 0009-RHEL-Remove-input-from-Xen.patch | 2 +- ...e.patch => 0010-RHEL-Remove-o-glance.patch | 2 +- ...=> 0011-RHEL-tests-Remove-btrfs-test.patch | 2 +- ...0012-RHEL-Remove-block-driver-option.patch | 2 +- ...virt-o-ovirt-upload-and-o-vdsm-modes.patch | 2 +- ...-about-virt-v2v-in-place-not-being-s.patch | 2 +- virt-v2v.spec | 34 +- 15 files changed, 3525 insertions(+), 29 deletions(-) create mode 100644 0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch create mode 100644 0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch rename 0001-RHEL-Fixes-for-libguestfs-winsupport.patch => 0003-RHEL-Fixes-for-libguestfs-winsupport.patch (98%) rename 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch => 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch (94%) rename 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch => 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch (97%) rename 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch => 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch (92%) rename 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch => 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch (93%) rename 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch => 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch (97%) rename 0007-RHEL-Remove-input-from-Xen.patch => 0009-RHEL-Remove-input-from-Xen.patch (99%) rename 0008-RHEL-Remove-o-glance.patch => 0010-RHEL-Remove-o-glance.patch (99%) rename 0009-RHEL-tests-Remove-btrfs-test.patch => 0011-RHEL-tests-Remove-btrfs-test.patch (90%) rename 0010-RHEL-Remove-block-driver-option.patch => 0012-RHEL-Remove-block-driver-option.patch (98%) rename 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch => 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch (99%) rename 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch => 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch (96%) diff --git a/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch b/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch new file mode 100644 index 0000000..774ce4c --- /dev/null +++ b/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch @@ -0,0 +1,3434 @@ +From 925440094eceb48720929663ba9883d7884bdd4c Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 19 May 2025 15:53:29 +0100 +Subject: [PATCH] m4: Add junk required to make 'AM_GNU_GETTEXT' work + +Run gettextize, revert most of its changes, but add the m4/* files +that might be required. + +This is a short term fix. A better / longer-term fix is described by +Dan here: + +https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/2AZNWQQ6CBRFZCAADVYQHU5UN5J2JT2F/ + +Cherry picked from +libguestfs commit b9f75ca5b8d091c91187720cd52210117718c693 +--- + build-aux/config.rpath | 93 ++++- + m4/build-to-host.m4 | 274 ++++++++++++++ + m4/gettext.m4 | 393 ++++++++++++++++++++ + m4/host-cpu-c-abi.m4 | 532 +++++++++++++++++++++++++++ + m4/iconv.m4 | 324 ++++++++++++++++ + m4/intlmacosx.m4 | 71 ++++ + m4/lib-ld.m4 | 170 +++++++++ + m4/lib-link.m4 | 815 +++++++++++++++++++++++++++++++++++++++++ + m4/lib-prefix.m4 | 334 +++++++++++++++++ + m4/nls.m4 | 33 ++ + m4/po.m4 | 157 ++++++++ + m4/progtest.m4 | 93 +++++ + 12 files changed, 3276 insertions(+), 13 deletions(-) + create mode 100644 m4/build-to-host.m4 + create mode 100644 m4/gettext.m4 + create mode 100644 m4/host-cpu-c-abi.m4 + create mode 100644 m4/iconv.m4 + create mode 100644 m4/intlmacosx.m4 + create mode 100644 m4/lib-ld.m4 + create mode 100644 m4/lib-link.m4 + create mode 100644 m4/lib-prefix.m4 + create mode 100644 m4/nls.m4 + create mode 100644 m4/po.m4 + create mode 100644 m4/progtest.m4 + +diff --git a/build-aux/config.rpath b/build-aux/config.rpath +index 29aae976..e42a98cb 100755 +--- a/build-aux/config.rpath ++++ b/build-aux/config.rpath +@@ -1,23 +1,15 @@ + #!/usr/bin/sh + # Output a system dependent set of variables, describing how to set the +-# run time search path of shared libraries in an executable. ++# run time search path of shared libraries in a binary (executable or ++# shared library). + # +-# Copyright 1996-2019 Free Software Foundation, Inc. ++# Copyright 1996-2025 Free Software Foundation, Inc. + # Taken from GNU libtool, 2001 + # Originally by Gordon Matzigkeit , 1996 + # + # This file is free software; the Free Software Foundation gives + # unlimited permission to copy and/or distribute it, with or without + # modifications, as long as this notice is preserved. +-# +-# The first argument passed to this file is the canonical host specification, +-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +-# or +-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +-# should be set by the caller. +-# +-# The set of defined variables is at the end of this script. + + # Known limitations: + # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +@@ -25,6 +17,81 @@ + # known workaround is to choose shorter directory names for the build + # directory and/or the installation directory. + ++# func_usage ++# outputs to stdout the --help usage message. ++func_usage () ++{ ++ echo "\ ++Usage: config.rpath [OPTION] HOST ++ ++Prints shell variable assignments that describe how to hardcode a directory ++for the lookup of shared libraries into a binary (executable or shared library). ++ ++The first argument passed to this file is the canonical host specification, ++ CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM ++or ++ CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM ++ ++The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld ++should be set by the caller. ++ ++The set of defined variables is at the end of this script. ++ ++Options: ++ --help print this help and exit ++ --version print version information and exit ++ ++Send patches and bug reports to ." ++} ++ ++# func_version ++# outputs to stdout the --version message. ++func_version () ++{ ++ echo "config.rpath (GNU gnulib, module havelib)" ++ echo "Copyright (C) 2025 Free Software Foundation, Inc. ++License: All-Permissive. ++This is free software: you are free to change and redistribute it. ++There is NO WARRANTY, to the extent permitted by law." ++ echo ++ printf 'Written by %s.\n' "Bruno Haible" ++} ++ ++# func_fatal_error message ++# outputs to stderr a fatal error message, and terminates the program. ++func_fatal_error () ++{ ++ echo "config.rpath: *** $1" 1>&2 ++ echo "config.rpath: *** Stop." 1>&2 ++ exit 1 ++} ++ ++# Command-line option processing. ++while test $# -gt 0; do ++ case "$1" in ++ --help | --hel | --he | --h ) ++ func_usage ++ exit 0 ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v ) ++ func_version ++ exit 0 ;; ++ -- ) # Stop option processing ++ shift; break ;; ++ -* ) ++ func_fatal_error "unrecognized option: $1" ++ ;; ++ * ) ++ break ;; ++ esac ++done ++ ++if test $# -gt 1; then ++ func_fatal_error "too many arguments" ++fi ++if test $# -lt 1; then ++ func_fatal_error "too few arguments" ++fi ++ + # All known linkers require a '.a' archive for static linking (except MSVC, + # which needs '.lib'). + libext=a +@@ -371,7 +438,7 @@ else + hardcode_direct=yes + hardcode_minus_L=yes + ;; +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; +@@ -547,7 +614,7 @@ case "$host_os" in + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + library_names_spec='$libname$shrext' + ;; + gnu*) +diff --git a/m4/build-to-host.m4 b/m4/build-to-host.m4 +new file mode 100644 +index 00000000..01bff8f3 +--- /dev/null ++++ b/m4/build-to-host.m4 +@@ -0,0 +1,274 @@ ++# build-to-host.m4 ++# serial 5 ++dnl Copyright (C) 2023-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++ ++dnl Written by Bruno Haible. ++ ++dnl When the build environment ($build_os) is different from the target runtime ++dnl environment ($host_os), file names may need to be converted from the build ++dnl environment syntax to the target runtime environment syntax. This is ++dnl because the Makefiles are executed (mostly) by build environment tools and ++dnl therefore expect file names in build environment syntax, whereas the runtime ++dnl expects file names in target runtime environment syntax. ++dnl ++dnl For example, if $build_os = cygwin and $host_os = mingw32, filenames need ++dnl be converted from Cygwin syntax to native Windows syntax: ++dnl /cygdrive/c/foo/bar -> C:\foo\bar ++dnl /usr/local/share -> C:\cygwin64\usr\local\share ++dnl ++dnl gl_BUILD_TO_HOST([somedir]) ++dnl This macro takes as input an AC_SUBSTed variable 'somedir', which must ++dnl already have its final value assigned, and produces two additional ++dnl AC_SUBSTed variables 'somedir_c' and 'somedir_c_make', that designate the ++dnl same file name value, just in different syntax: ++dnl - somedir_c is the file name in target runtime environment syntax, ++dnl as a C string (starting and ending with a double-quote, ++dnl and with escaped backslashes and double-quotes in ++dnl between). ++dnl - somedir_c_make is the same thing, escaped for use in a Makefile. ++ ++AC_DEFUN([gl_BUILD_TO_HOST], ++[ ++ AC_REQUIRE([AC_CANONICAL_BUILD]) ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([gl_BUILD_TO_HOST_INIT]) ++ ++ dnl Define somedir_c. ++ gl_final_[$1]="$[$1]" ++ dnl Translate it from build syntax to host syntax. ++ case "$build_os" in ++ cygwin*) ++ case "$host_os" in ++ mingw* | windows*) ++ gl_final_[$1]=`cygpath -w "$gl_final_[$1]"` ;; ++ esac ++ ;; ++ esac ++ dnl Convert it to C string syntax. ++ [$1]_c=`printf '%s\n' "$gl_final_[$1]" | sed -e "$gl_sed_double_backslashes" -e "$gl_sed_escape_doublequotes" | tr -d "$gl_tr_cr"` ++ [$1]_c='"'"$[$1]_c"'"' ++ AC_SUBST([$1_c]) ++ ++ dnl Define somedir_c_make. ++ [$1]_c_make=`printf '%s\n' "$[$1]_c" | sed -e "$gl_sed_escape_for_make_1" -e "$gl_sed_escape_for_make_2" | tr -d "$gl_tr_cr"` ++ dnl Use the substituted somedir variable, when possible, so that the user ++ dnl may adjust somedir a posteriori when there are no special characters. ++ if test "$[$1]_c_make" = '\"'"${gl_final_[$1]}"'\"'; then ++ [$1]_c_make='\"$([$1])\"' ++ fi ++ AC_SUBST([$1_c_make]) ++]) ++ ++dnl Some initializations for gl_BUILD_TO_HOST. ++AC_DEFUN([gl_BUILD_TO_HOST_INIT], ++[ ++ gl_sed_double_backslashes='s/\\/\\\\/g' ++ gl_sed_escape_doublequotes='s/"/\\"/g' ++changequote(,)dnl ++ gl_sed_escape_for_make_1="s,\\([ \"&'();<>\\\\\`|]\\),\\\\\\1,g" ++changequote([,])dnl ++ gl_sed_escape_for_make_2='s,\$,\\$$,g' ++ dnl Find out how to remove carriage returns from output. Solaris /usr/ucb/tr ++ dnl does not understand '\r'. ++ case `echo r | tr -d '\r'` in ++ '') gl_tr_cr='\015' ;; ++ *) gl_tr_cr='\r' ;; ++ esac ++]) ++ ++ ++dnl The following macros are convenience invocations of gl_BUILD_TO_HOST ++dnl for some of the variables that are defined by Autoconf. ++dnl To do so for _all_ the possible variables, use the module 'configmake'. ++ ++dnl Defines bindir_c and bindir_c_make. ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_BINDIR], ++[ ++ dnl Find the final value of bindir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_exec_prefix="${exec_prefix}" ++ gl_saved_bindir="${bindir}" ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ exec_prefix='${prefix}' ++ fi ++ eval exec_prefix="$exec_prefix" ++ eval bindir="$bindir" ++ gl_BUILD_TO_HOST([bindir]) ++ bindir="${gl_saved_bindir}" ++ exec_prefix="${gl_saved_exec_prefix}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines datadir_c and datadir_c_make, ++dnl where datadir = $(datarootdir) ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_DATADIR], ++[ ++ dnl Find the final value of datadir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_datarootdir="${datarootdir}" ++ gl_saved_datadir="${datadir}" ++ dnl Unfortunately, prefix gets only finally determined at the end of ++ dnl configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ eval datarootdir="$datarootdir" ++ eval datadir="$datadir" ++ gl_BUILD_TO_HOST([datadir]) ++ datadir="${gl_saved_datadir}" ++ datarootdir="${gl_saved_datarootdir}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines libdir_c and libdir_c_make. ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBDIR], ++[ ++ dnl Find the final value of libdir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_exec_prefix="${exec_prefix}" ++ gl_saved_libdir="${libdir}" ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ exec_prefix='${prefix}' ++ fi ++ eval exec_prefix="$exec_prefix" ++ eval libdir="$libdir" ++ gl_BUILD_TO_HOST([libdir]) ++ libdir="${gl_saved_libdir}" ++ exec_prefix="${gl_saved_exec_prefix}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines libexecdir_c and libexecdir_c_make. ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBEXECDIR], ++[ ++ dnl Find the final value of libexecdir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_exec_prefix="${exec_prefix}" ++ gl_saved_libexecdir="${libexecdir}" ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ exec_prefix='${prefix}' ++ fi ++ eval exec_prefix="$exec_prefix" ++ eval libexecdir="$libexecdir" ++ gl_BUILD_TO_HOST([libexecdir]) ++ libexecdir="${gl_saved_libexecdir}" ++ exec_prefix="${gl_saved_exec_prefix}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines localedir_c and localedir_c_make. ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LOCALEDIR], ++[ ++ dnl Find the final value of localedir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_datarootdir="${datarootdir}" ++ gl_saved_localedir="${localedir}" ++ dnl Unfortunately, prefix gets only finally determined at the end of ++ dnl configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ eval datarootdir="$datarootdir" ++ eval localedir="$localedir" ++ gl_BUILD_TO_HOST([localedir]) ++ localedir="${gl_saved_localedir}" ++ datarootdir="${gl_saved_datarootdir}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines pkgdatadir_c and pkgdatadir_c_make, ++dnl where pkgdatadir = $(datadir)/$(PACKAGE) ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGDATADIR], ++[ ++ dnl Find the final value of pkgdatadir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_datarootdir="${datarootdir}" ++ gl_saved_datadir="${datadir}" ++ gl_saved_pkgdatadir="${pkgdatadir}" ++ dnl Unfortunately, prefix gets only finally determined at the end of ++ dnl configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ eval datarootdir="$datarootdir" ++ eval datadir="$datadir" ++ eval pkgdatadir="$pkgdatadir" ++ gl_BUILD_TO_HOST([pkgdatadir]) ++ pkgdatadir="${gl_saved_pkgdatadir}" ++ datadir="${gl_saved_datadir}" ++ datarootdir="${gl_saved_datarootdir}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines pkglibdir_c and pkglibdir_c_make, ++dnl where pkglibdir = $(libdir)/$(PACKAGE) ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBDIR], ++[ ++ dnl Find the final value of pkglibdir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_exec_prefix="${exec_prefix}" ++ gl_saved_libdir="${libdir}" ++ gl_saved_pkglibdir="${pkglibdir}" ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ exec_prefix='${prefix}' ++ fi ++ eval exec_prefix="$exec_prefix" ++ eval libdir="$libdir" ++ eval pkglibdir="$pkglibdir" ++ gl_BUILD_TO_HOST([pkglibdir]) ++ pkglibdir="${gl_saved_pkglibdir}" ++ libdir="${gl_saved_libdir}" ++ exec_prefix="${gl_saved_exec_prefix}" ++ prefix="${gl_saved_prefix}" ++]) ++ ++dnl Defines pkglibexecdir_c and pkglibexecdir_c_make, ++dnl where pkglibexecdir = $(libexecdir)/$(PACKAGE) ++AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBEXECDIR], ++[ ++ dnl Find the final value of pkglibexecdir. ++ gl_saved_prefix="${prefix}" ++ gl_saved_exec_prefix="${exec_prefix}" ++ gl_saved_libexecdir="${libexecdir}" ++ gl_saved_pkglibexecdir="${pkglibexecdir}" ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ prefix="$ac_default_prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ exec_prefix='${prefix}' ++ fi ++ eval exec_prefix="$exec_prefix" ++ eval libexecdir="$libexecdir" ++ eval pkglibexecdir="$pkglibexecdir" ++ gl_BUILD_TO_HOST([pkglibexecdir]) ++ pkglibexecdir="${gl_saved_pkglibexecdir}" ++ libexecdir="${gl_saved_libexecdir}" ++ exec_prefix="${gl_saved_exec_prefix}" ++ prefix="${gl_saved_prefix}" ++]) +diff --git a/m4/gettext.m4 b/m4/gettext.m4 +new file mode 100644 +index 00000000..7de17f99 +--- /dev/null ++++ b/m4/gettext.m4 +@@ -0,0 +1,393 @@ ++# gettext.m4 ++# serial 81 (gettext-0.24) ++dnl Copyright (C) 1995-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++dnl ++dnl This file can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Lesser General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Lesser General Public License, and the rest of the GNU ++dnl gettext package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2024. ++ ++dnl Macro to add for using GNU gettext. ++ ++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). ++dnl INTLSYMBOL must be one of 'external', 'use-libtool', 'here'. ++dnl INTLSYMBOL should be 'external' for packages other than GNU gettext. ++dnl It should be 'use-libtool' for the packages 'gettext-runtime' and ++dnl 'gettext-tools'. ++dnl It should be 'here' for the package 'gettext-runtime/intl'. ++dnl If INTLSYMBOL is 'here', then a libtool library ++dnl $(top_builddir)/libintl.la will be created (shared and/or static, ++dnl depending on --{enable,disable}-{shared,static} and on the presence of ++dnl AM-DISABLE-SHARED). ++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext ++dnl implementations (in libc or libintl) without the ngettext() function ++dnl will be ignored. If NEEDSYMBOL is specified and is ++dnl 'need-formatstring-macros', then GNU gettext implementations that don't ++dnl support the ISO C 99 formatstring macros will be ignored. ++dnl INTLDIR is used to find the intl libraries. If empty, ++dnl the value '$(top_builddir)/intl/' is used. ++dnl ++dnl The result of the configuration is one of three cases: ++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled ++dnl and used. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 2) GNU gettext has been found in the system's C library. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 3) No internationalization, always use English msgid. ++dnl Catalog format: none ++dnl Catalog extension: none ++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. ++dnl The use of .gmo is historical (it was needed to avoid overwriting the ++dnl GNU format catalogs when building on a platform with an X/Open gettext), ++dnl but we keep it in order not to force irrelevant filename changes on the ++dnl maintainers. ++dnl ++AC_DEFUN([AM_GNU_GETTEXT], ++[ ++ dnl Argument checking. ++ m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], , [m4_if([$1], [here], , ++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ++])])])])]) ++ m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old], ++ [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. ++])]) ++ m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], , ++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ++])])])]) ++ define([gt_building_libintl_in_same_build_tree], ++ m4_if([$1], [use-libtool], [yes], [m4_if([$1], [here], [yes], [no])])) ++ gt_NEEDS_INIT ++ AM_GNU_GETTEXT_NEED([$2]) ++ ++ AC_REQUIRE([AM_PO_SUBDIRS])dnl ++ ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ dnl Ideally we would do this search only after the ++ dnl if test "$USE_NLS" = "yes"; then ++ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then ++ dnl tests. But if configure.ac invokes AM_ICONV after AM_GNU_GETTEXT ++ dnl the configure script would need to contain the same shell code ++ dnl again, outside any 'if'. There are two solutions: ++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. ++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. ++ dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. ++ m4_if(gt_building_libintl_in_same_build_tree, yes, , [ ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ++ ]) ++ ++ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. ++ gt_INTL_MACOSX ++ ++ dnl Set USE_NLS. ++ AC_REQUIRE([AM_NLS]) ++ ++ m4_if(gt_building_libintl_in_same_build_tree, yes, [ ++ USE_INCLUDED_LIBINTL=no ++ ]) ++ LIBINTL= ++ LTLIBINTL= ++ POSUB= ++ ++ dnl Add a version number to the cache macros. ++ case " $gt_needs " in ++ *" need-formatstring-macros "*) gt_api_version=3 ;; ++ *" need-ngettext "*) gt_api_version=2 ;; ++ *) gt_api_version=1 ;; ++ esac ++ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" ++ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" ++ ++ dnl If we use NLS figure out what method ++ if test "$USE_NLS" = "yes"; then ++ gt_use_preinstalled_gnugettext=no ++ m4_if(gt_building_libintl_in_same_build_tree, yes, [ ++ AC_MSG_CHECKING([whether included gettext is requested]) ++ AC_ARG_WITH([included-gettext], ++ [ --with-included-gettext use the GNU gettext library included here], ++ nls_cv_force_use_gnu_gettext=$withval, ++ nls_cv_force_use_gnu_gettext=no) ++ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) ++ ++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" ++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ++ ]) ++ dnl User does not insist on using GNU NLS library. Figure out what ++ dnl to use. If GNU gettext is available we use this. Else we have ++ dnl to fall back to GNU NLS library. ++ ++ if test $gt_api_version -ge 3; then ++ gt_revision_test_code=' ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++changequote(,)dnl ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++changequote([,])dnl ++' ++ else ++ gt_revision_test_code= ++ fi ++ if test $gt_api_version -ge 2; then ++ gt_expression_test_code=' + * ngettext ("", "", 0)' ++ else ++ gt_expression_test_code= ++ fi ++ ++ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], ++ [AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++extern int _nl_msg_cat_cntr; ++extern int *_nl_domain_bindings; ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) ++#else ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 ++#endif ++$gt_revision_test_code ++ ]], ++ [[ ++bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ++ ]])], ++ [eval "$gt_func_gnugettext_libc=yes"], ++ [eval "$gt_func_gnugettext_libc=no"])]) ++ ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ m4_if(gt_building_libintl_in_same_build_tree, yes, , [ ++ AM_ICONV_LINK ++ ]) ++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL ++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) ++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL ++ dnl even if libiconv doesn't exist. ++ AC_LIB_LINKFLAGS_BODY([intl]) ++ AC_CACHE_CHECK([for GNU gettext in libintl], ++ [$gt_func_gnugettext_libintl], ++ [gt_saved_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $INCINTL" ++ gt_saved_LIBS="$LIBS" ++ LIBS="$LIBS $LIBINTL" ++ dnl Now see whether libintl exists and does not depend on libiconv. ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *); ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) ++#else ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 ++#endif ++$gt_revision_test_code ++ ]], ++ [[ ++bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ++ ]])], ++ [eval "$gt_func_gnugettext_libintl=yes"], ++ [eval "$gt_func_gnugettext_libintl=no"]) ++ dnl Now see whether libintl exists and depends on libiconv or other ++ dnl OS dependent libraries, specifically on macOS and AIX. ++ gt_LIBINTL_EXTRA="$INTL_MACOSX_LIBS" ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ case "$host_os" in ++ aix*) gt_LIBINTL_EXTRA="-lpthread" ;; ++ esac ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } \ ++ && { test -n "$LIBICONV" || test -n "$gt_LIBINTL_EXTRA"; }; then ++ LIBS="$LIBS $LIBICONV $gt_LIBINTL_EXTRA" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *); ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) ++#else ++#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 ++#endif ++$gt_revision_test_code ++ ]], ++ [[ ++bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ++ ]])], ++ [LIBINTL="$LIBINTL $LIBICONV $gt_LIBINTL_EXTRA" ++ LTLIBINTL="$LTLIBINTL $LTLIBICONV $gt_LIBINTL_EXTRA" ++ eval "$gt_func_gnugettext_libintl=yes" ++ ]) ++ fi ++ CPPFLAGS="$gt_saved_CPPFLAGS" ++ LIBS="$gt_saved_LIBS"]) ++ fi ++ ++ dnl If an already present or preinstalled GNU gettext() is found, ++ dnl use it. But if this macro is used in GNU gettext, and GNU ++ dnl gettext is already preinstalled in libintl, we update this ++ dnl libintl. (Cf. the install rule in intl/Makefile.in.) ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ ++ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ ++ && test "$PACKAGE" != gettext-runtime \ ++ && test "$PACKAGE" != gettext-tools \ ++ && test "$PACKAGE" != libintl; }; then ++ gt_use_preinstalled_gnugettext=yes ++ else ++ dnl Reset the values set by searching for libintl. ++ LIBINTL= ++ LTLIBINTL= ++ INCINTL= ++ fi ++ ++ m4_if(gt_building_libintl_in_same_build_tree, yes, [ ++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then ++ dnl GNU gettext is not found in the C library. ++ dnl Fall back on included GNU gettext library. ++ nls_cv_use_gnu_gettext=yes ++ fi ++ fi ++ ++ if test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions used to generate GNU NLS library. ++ USE_INCLUDED_LIBINTL=yes ++ LIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" ++ LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" ++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` ++ fi ++ ++ CATOBJEXT= ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions to use GNU gettext tools. ++ CATOBJEXT=.gmo ++ fi ++ ]) ++ ++ if test -n "$INTL_MACOSX_LIBS"; then ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Some extra flags are needed during linking. ++ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" ++ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" ++ fi ++ fi ++ ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ AC_DEFINE([ENABLE_NLS], [1], ++ [Define to 1 if translation of program messages to the user's native language ++ is requested.]) ++ else ++ USE_NLS=no ++ fi ++ fi ++ ++ AC_MSG_CHECKING([whether to use NLS]) ++ AC_MSG_RESULT([$USE_NLS]) ++ if test "$USE_NLS" = "yes"; then ++ AC_MSG_CHECKING([where the gettext function comes from]) ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then ++ gt_source="external libintl" ++ else ++ gt_source="libc" ++ fi ++ else ++ gt_source="included intl directory" ++ fi ++ AC_MSG_RESULT([$gt_source]) ++ fi ++ ++ if test "$USE_NLS" = "yes"; then ++ ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then ++ AC_MSG_CHECKING([how to link with libintl]) ++ AC_MSG_RESULT([$LIBINTL]) ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) ++ fi ++ ++ dnl For backward compatibility. Some packages may be using this. ++ AC_DEFINE([HAVE_GETTEXT], [1], ++ [Define if the GNU gettext() function is already present or preinstalled.]) ++ AC_DEFINE([HAVE_DCGETTEXT], [1], ++ [Define if the GNU dcgettext() function is already present or preinstalled.]) ++ fi ++ ++ dnl We need to process the po/ directory. ++ POSUB=po ++ fi ++ ++ m4_if(gt_building_libintl_in_same_build_tree, yes, [ ++ dnl Make all variables we use known to autoconf. ++ AC_SUBST([USE_INCLUDED_LIBINTL]) ++ AC_SUBST([CATOBJEXT]) ++ ]) ++ ++ m4_if(gt_building_libintl_in_same_build_tree, yes, [], [ ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INTLLIBS="$LIBINTL" ++ AC_SUBST([INTLLIBS]) ++ ]) ++ ++ dnl Make all documented variables known to autoconf. ++ AC_SUBST([LIBINTL]) ++ AC_SUBST([LTLIBINTL]) ++ AC_SUBST([POSUB]) ++ ++ dnl Define localedir_c and localedir_c_make. ++ gl_BUILD_TO_HOST_LOCALEDIR ++]) ++ ++ ++dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. ++m4_define([gt_NEEDS_INIT], ++[ ++ m4_divert_text([DEFAULTS], [gt_needs=]) ++ m4_define([gt_NEEDS_INIT], []) ++]) ++ ++ ++dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) ++AC_DEFUN([AM_GNU_GETTEXT_NEED], ++[ ++ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ++]) ++ ++ ++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) ++AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) ++ ++ ++dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) ++AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) +diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 +new file mode 100644 +index 00000000..6ca7721a +--- /dev/null ++++ b/m4/host-cpu-c-abi.m4 +@@ -0,0 +1,532 @@ ++# host-cpu-c-abi.m4 ++# serial 20 ++dnl Copyright (C) 2002-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++ ++dnl From Bruno Haible and Sam Steingold. ++ ++dnl Sets the HOST_CPU variable to the canonical name of the CPU. ++dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its ++dnl C language ABI (application binary interface). ++dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in ++dnl config.h. ++dnl ++dnl This canonical name can be used to select a particular assembly language ++dnl source file that will interoperate with C code on the given host. ++dnl ++dnl For example: ++dnl * 'i386' and 'sparc' are different canonical names, because code for i386 ++dnl will not run on SPARC CPUs and vice versa. They have different ++dnl instruction sets. ++dnl * 'sparc' and 'sparc64' are different canonical names, because code for ++dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code ++dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit ++dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit ++dnl mode, but not both. ++dnl * 'mips' and 'mipsn32' are different canonical names, because they use ++dnl different argument passing and return conventions for C functions, and ++dnl although the instruction set of 'mips' is a large subset of the ++dnl instruction set of 'mipsn32'. ++dnl * 'mipsn32' and 'mips64' are different canonical names, because they use ++dnl different sizes for the C types like 'int' and 'void *', and although ++dnl the instruction sets of 'mipsn32' and 'mips64' are the same. ++dnl * The same canonical name is used for different endiannesses. You can ++dnl determine the endianness through preprocessor symbols: ++dnl - 'arm': test __ARMEL__. ++dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. ++dnl - 'powerpc64': test __BIG_ENDIAN__ vs. __LITTLE_ENDIAN__. ++dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 ++dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because ++dnl - Instructions that do not exist on all of these CPUs (cmpxchg, ++dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your ++dnl assembly language source files use such instructions, you will ++dnl need to make the distinction. ++dnl - Speed of execution of the common instruction set is reasonable across ++dnl the entire family of CPUs. If you have assembly language source files ++dnl that are optimized for particular CPU types (like GNU gmp has), you ++dnl will need to make the distinction. ++dnl See . ++AC_DEFUN([gl_HOST_CPU_C_ABI], ++[ ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([gl_C_ASM]) ++ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], ++ [case "$host_cpu" in ++ ++changequote(,)dnl ++ i[34567]86 ) ++changequote([,])dnl ++ gl_cv_host_cpu_c_abi=i386 ++ ;; ++ ++ x86_64 ) ++ # On x86_64 systems, the C compiler may be generating code in one of ++ # these ABIs: ++ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. ++ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 ++ # with native Windows (mingw, MSVC). ++ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. ++ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if (defined __x86_64__ || defined __amd64__ \ ++ || defined _M_X64 || defined _M_AMD64) ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __ILP32__ || defined _ILP32 ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=x86_64-x32], ++ [gl_cv_host_cpu_c_abi=x86_64])], ++ [gl_cv_host_cpu_c_abi=i386]) ++ ;; ++ ++changequote(,)dnl ++ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) ++changequote([,])dnl ++ gl_cv_host_cpu_c_abi=alpha ++ ;; ++ ++ arm* | aarch64 ) ++ # Assume arm with EABI. ++ # On arm64 systems, the C compiler may be generating code in one of ++ # these ABIs: ++ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. ++ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. ++ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#ifdef __aarch64__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __ILP32__ || defined _ILP32 ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=arm64-ilp32], ++ [gl_cv_host_cpu_c_abi=arm64])], ++ [# Don't distinguish little-endian and big-endian arm, since they ++ # don't require different machine code for simple operations and ++ # since the user can distinguish them through the preprocessor ++ # defines __ARMEL__ vs. __ARMEB__. ++ # But distinguish arm which passes floating-point arguments and ++ # return values in integer registers (r0, r1, ...) - this is ++ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which ++ # passes them in float registers (s0, s1, ...) and double registers ++ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer ++ # sets the preprocessor defines __ARM_PCS (for the first case) and ++ # __ARM_PCS_VFP (for the second case), but older GCC does not. ++ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c ++ # Look for a reference to the register d0 in the .s file. ++ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 ++ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then ++ gl_cv_host_cpu_c_abi=armhf ++ else ++ gl_cv_host_cpu_c_abi=arm ++ fi ++ rm -fr conftest* ++ ]) ++ ;; ++ ++ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) ++ # On hppa, the C compiler may be generating 32-bit code or 64-bit ++ # code. In the latter case, it defines _LP64 and __LP64__. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#ifdef __LP64__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=hppa64], ++ [gl_cv_host_cpu_c_abi=hppa]) ++ ;; ++ ++ ia64* ) ++ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or ++ # 32-bit code. In the latter case, it defines _ILP32. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#ifdef _ILP32 ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=ia64-ilp32], ++ [gl_cv_host_cpu_c_abi=ia64]) ++ ;; ++ ++ mips* ) ++ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this ++ # at 32. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=mips64], ++ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but ++ # may later get defined by ), and _MIPS_SIM == _ABIN32. ++ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but ++ # may later get defined by ), and _MIPS_SIM == _ABIO32. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if (_MIPS_SIM == _ABIN32) ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=mipsn32], ++ [gl_cv_host_cpu_c_abi=mips])]) ++ ;; ++ ++ powerpc* ) ++ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. ++ # No need to distinguish them here; the caller may distinguish ++ # them based on the OS. ++ # On powerpc64 systems, the C compiler may still be generating ++ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may ++ # be generating 64-bit code. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __powerpc64__ || defined __LP64__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [# On powerpc64, there are two ABIs on Linux: The AIX compatible ++ # one and the ELFv2 one. The latter defines _CALL_ELF=2. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined _CALL_ELF && _CALL_ELF == 2 ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=powerpc64-elfv2], ++ [gl_cv_host_cpu_c_abi=powerpc64]) ++ ], ++ [gl_cv_host_cpu_c_abi=powerpc]) ++ ;; ++ ++ rs6000 ) ++ gl_cv_host_cpu_c_abi=powerpc ++ ;; ++ ++ riscv32 | riscv64 ) ++ # There are 2 architectures (with variants): rv32* and rv64*. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if __riscv_xlen == 64 ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [cpu=riscv64], ++ [cpu=riscv32]) ++ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. ++ # Size of 'long' and 'void *': ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __LP64__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [main_abi=lp64], ++ [main_abi=ilp32]) ++ # Float ABIs: ++ # __riscv_float_abi_double: ++ # 'float' and 'double' are passed in floating-point registers. ++ # __riscv_float_abi_single: ++ # 'float' are passed in floating-point registers. ++ # __riscv_float_abi_soft: ++ # No values are passed in floating-point registers. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __riscv_float_abi_double ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [float_abi=d], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __riscv_float_abi_single ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [float_abi=f], ++ [float_abi='']) ++ ]) ++ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" ++ ;; ++ ++ s390* ) ++ # On s390x, the C compiler may be generating 64-bit (= s390x) code ++ # or 31-bit (= s390) code. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __LP64__ || defined __s390x__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=s390x], ++ [gl_cv_host_cpu_c_abi=s390]) ++ ;; ++ ++ sparc | sparc64 ) ++ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the ++ # C compiler still generates 32-bit code. ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE( ++ [[#if defined __sparcv9 || defined __arch64__ ++ int ok; ++ #else ++ error fail ++ #endif ++ ]])], ++ [gl_cv_host_cpu_c_abi=sparc64], ++ [gl_cv_host_cpu_c_abi=sparc]) ++ ;; ++ ++ *) ++ gl_cv_host_cpu_c_abi="$host_cpu" ++ ;; ++ esac ++ ]) ++ ++ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. ++ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` ++ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" ++ AC_SUBST([HOST_CPU]) ++ AC_SUBST([HOST_CPU_C_ABI]) ++ ++ # This was ++ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) ++ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) ++ # earlier, but KAI C++ 3.2d doesn't like this. ++ sed -e 's/-/_/g' >> confdefs.h <. ++dnl Don't make changes that are incompatible with that documentation! ++ ++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], ++[ ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_LIB_LINKFLAGS_BODY([iconv]) ++]) ++ ++AC_DEFUN([AM_ICONV_LINK], ++[ ++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and ++ dnl those with the standalone portable GNU libiconv installed). ++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles ++ ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ++ ++ dnl Add $INCICONV to CPPFLAGS before performing the following checks, ++ dnl because if the user has installed libiconv and not disabled its use ++ dnl via --without-libiconv-prefix, he wants to use it. The first ++ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. ++ gl_saved_CPPFLAGS="$CPPFLAGS" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) ++ ++ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ ++ am_cv_func_iconv="no, consider installing GNU libiconv" ++ am_cv_lib_iconv=no ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#include ++ ]], ++ [[iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);]])], ++ [am_cv_func_iconv=yes]) ++ if test "$am_cv_func_iconv" != yes; then ++ gl_saved_LIBS="$LIBS" ++ LIBS="$LIBS $LIBICONV" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#include ++ ]], ++ [[iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);]])], ++ [am_cv_lib_iconv=yes] ++ [am_cv_func_iconv=yes]) ++ LIBS="$gl_saved_LIBS" ++ fi ++ ]) ++ if test "$am_cv_func_iconv" = yes; then ++ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ ++ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, ++ dnl Solaris 10, macOS 14.4. ++ gl_saved_LIBS="$LIBS" ++ if test $am_cv_lib_iconv = yes; then ++ LIBS="$LIBS $LIBICONV" ++ fi ++ am_cv_func_iconv_works=no ++ for ac_iconv_const in '' 'const'; do ++ AC_RUN_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#include ++ ++#ifndef ICONV_CONST ++# define ICONV_CONST $ac_iconv_const ++#endif ++ ]], ++ [[int result = 0; ++ /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from ++ successful returns. This is even documented in ++ */ ++ { ++ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); ++ if (cd_utf8_to_88591 != (iconv_t)(-1)) ++ { ++ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ ++ char buf[10]; ++ ICONV_CONST char *inptr = input; ++ size_t inbytesleft = strlen (input); ++ char *outptr = buf; ++ size_t outbytesleft = sizeof (buf); ++ size_t res = iconv (cd_utf8_to_88591, ++ &inptr, &inbytesleft, ++ &outptr, &outbytesleft); ++ if (res == 0) ++ result |= 1; ++ iconv_close (cd_utf8_to_88591); ++ } ++ } ++ /* Test against macOS 14.4 bug: Failures are not distinguishable from ++ successful returns. ++ POSIX:2018 says: "The iconv() function shall ... return the number of ++ non-identical conversions performed." ++ But here, the conversion always does transliteration (the suffixes ++ "//TRANSLIT" and "//IGNORE" have no effect, nor does iconvctl()) and ++ does not report when it does a non-identical conversion. */ ++ { ++ iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); ++ if (cd_utf8_to_88591 != (iconv_t)(-1)) ++ { ++ static ICONV_CONST char input[] = "\305\202"; /* LATIN SMALL LETTER L WITH STROKE */ ++ char buf[10]; ++ ICONV_CONST char *inptr = input; ++ size_t inbytesleft = strlen (input); ++ char *outptr = buf; ++ size_t outbytesleft = sizeof (buf); ++ size_t res = iconv (cd_utf8_to_88591, ++ &inptr, &inbytesleft, ++ &outptr, &outbytesleft); ++ /* Here: ++ With glibc, GNU libiconv (including macOS up to 13): res == (size_t)-1, errno == EILSEQ. ++ With musl libc, NetBSD 10, Solaris 11: res == 1. ++ With macOS 14.4: res == 0, output is "l". */ ++ if (res == 0) ++ result |= 2; ++ iconv_close (cd_utf8_to_88591); ++ } ++ } ++ /* Test against Solaris 10 bug: Failures are not distinguishable from ++ successful returns. */ ++ { ++ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); ++ if (cd_ascii_to_88591 != (iconv_t)(-1)) ++ { ++ static ICONV_CONST char input[] = "\263"; ++ char buf[10]; ++ ICONV_CONST char *inptr = input; ++ size_t inbytesleft = strlen (input); ++ char *outptr = buf; ++ size_t outbytesleft = sizeof (buf); ++ size_t res = iconv (cd_ascii_to_88591, ++ &inptr, &inbytesleft, ++ &outptr, &outbytesleft); ++ if (res == 0) ++ result |= 4; ++ iconv_close (cd_ascii_to_88591); ++ } ++ } ++ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ ++ { ++ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); ++ if (cd_88591_to_utf8 != (iconv_t)(-1)) ++ { ++ static ICONV_CONST char input[] = "\304"; ++ static char buf[2] = { (char)0xDE, (char)0xAD }; ++ ICONV_CONST char *inptr = input; ++ size_t inbytesleft = 1; ++ char *outptr = buf; ++ size_t outbytesleft = 1; ++ size_t res = iconv (cd_88591_to_utf8, ++ &inptr, &inbytesleft, ++ &outptr, &outbytesleft); ++ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) ++ result |= 8; ++ iconv_close (cd_88591_to_utf8); ++ } ++ } ++#if 0 /* This bug could be worked around by the caller. */ ++ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ ++ { ++ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); ++ if (cd_88591_to_utf8 != (iconv_t)(-1)) ++ { ++ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; ++ char buf[50]; ++ ICONV_CONST char *inptr = input; ++ size_t inbytesleft = strlen (input); ++ char *outptr = buf; ++ size_t outbytesleft = sizeof (buf); ++ size_t res = iconv (cd_88591_to_utf8, ++ &inptr, &inbytesleft, ++ &outptr, &outbytesleft); ++ if ((int)res > 0) ++ result |= 16; ++ iconv_close (cd_88591_to_utf8); ++ } ++ } ++#endif ++ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is ++ provided. */ ++ { ++ /* Try standardized names. */ ++ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); ++ /* Try IRIX, OSF/1 names. */ ++ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); ++ /* Try AIX names. */ ++ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); ++ /* Try HP-UX names. */ ++ iconv_t cd4 = iconv_open ("utf8", "eucJP"); ++ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) ++ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) ++ result |= 32; ++ if (cd1 != (iconv_t)(-1)) ++ iconv_close (cd1); ++ if (cd2 != (iconv_t)(-1)) ++ iconv_close (cd2); ++ if (cd3 != (iconv_t)(-1)) ++ iconv_close (cd3); ++ if (cd4 != (iconv_t)(-1)) ++ iconv_close (cd4); ++ } ++ return result; ++]])], ++ [am_cv_func_iconv_works=yes], , ++ [case "$host_os" in ++ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; ++ *) am_cv_func_iconv_works="guessing yes" ;; ++ esac]) ++ test "$am_cv_func_iconv_works" = no || break ++ done ++ LIBS="$gl_saved_LIBS" ++ ]) ++ case "$am_cv_func_iconv_works" in ++ *no) am_func_iconv=no am_cv_lib_iconv=no ;; ++ *) am_func_iconv=yes ;; ++ esac ++ else ++ am_func_iconv=no am_cv_lib_iconv=no ++ fi ++ if test "$am_func_iconv" = yes; then ++ AC_DEFINE([HAVE_ICONV], [1], ++ [Define if you have the iconv() function and it works.]) ++ fi ++ if test "$am_cv_lib_iconv" = yes; then ++ AC_MSG_CHECKING([how to link with libiconv]) ++ AC_MSG_RESULT([$LIBICONV]) ++ else ++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV ++ dnl either. ++ CPPFLAGS="$gl_saved_CPPFLAGS" ++ LIBICONV= ++ LTLIBICONV= ++ fi ++ AC_SUBST([LIBICONV]) ++ AC_SUBST([LTLIBICONV]) ++]) ++ ++dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like ++dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". ++AC_DEFUN_ONCE([AM_ICONV], ++[ ++ AM_ICONV_LINK ++ if test "$am_cv_func_iconv" = yes; then ++ AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature], ++ [gl_cv_iconv_nonconst], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++#include ++#include ++extern ++#ifdef __cplusplus ++"C" ++#endif ++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); ++ ]], ++ [[]])], ++ [gl_cv_iconv_nonconst=yes], ++ [gl_cv_iconv_nonconst=no]) ++ ]) ++ else ++ dnl When compiling GNU libiconv on a system that does not have iconv yet, ++ dnl pick the POSIX compliant declaration without 'const'. ++ gl_cv_iconv_nonconst=yes ++ fi ++ if test $gl_cv_iconv_nonconst = yes; then ++ iconv_arg1="" ++ else ++ iconv_arg1="const" ++ fi ++ AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1], ++ [Define as const if the declaration of iconv() needs const.]) ++ dnl Also substitute ICONV_CONST in the gnulib generated . ++ m4_ifdef([gl_ICONV_H_DEFAULTS], ++ [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) ++ if test $gl_cv_iconv_nonconst != yes; then ++ ICONV_CONST="const" ++ fi ++ ]) ++ ++ dnl A summary result, for those packages which want to print a summary at the ++ dnl end of the configuration. ++ if test "$am_func_iconv" = yes; then ++ if test -n "$LIBICONV"; then ++ am_cv_func_iconv_summary='yes, in libiconv' ++ else ++ am_cv_func_iconv_summary='yes, in libc' ++ fi ++ else ++ if test "$am_cv_func_iconv" = yes; then ++ am_cv_func_iconv_summary='not working, consider installing GNU libiconv' ++ else ++ am_cv_func_iconv_summary='no, consider installing GNU libiconv' ++ fi ++ fi ++]) +diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 +new file mode 100644 +index 00000000..f0920d0f +--- /dev/null ++++ b/m4/intlmacosx.m4 +@@ -0,0 +1,71 @@ ++# intlmacosx.m4 ++# serial 10 (gettext-0.23) ++dnl Copyright (C) 2004-2014, 2016, 2019-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++dnl ++dnl This file can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Lesser General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Lesser General Public License, and the rest of the GNU ++dnl gettext package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Checks for special options needed on Mac OS X. ++dnl Defines INTL_MACOSX_LIBS. ++AC_DEFUN([gt_INTL_MACOSX], ++[ ++ dnl Check for API introduced in Mac OS X 10.4. ++ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], ++ [gt_cv_func_CFPreferencesCopyAppValue], ++ [gt_saved_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[#include ]], ++ [[CFPreferencesCopyAppValue(NULL, NULL)]])], ++ [gt_cv_func_CFPreferencesCopyAppValue=yes], ++ [gt_cv_func_CFPreferencesCopyAppValue=no]) ++ LIBS="$gt_saved_LIBS"]) ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then ++ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], ++ [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) ++ fi ++ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, ++ dnl because in macOS 10.13.4 it has the following behaviour: ++ dnl When two or more languages are specified in the ++ dnl "System Preferences > Language & Region > Preferred Languages" panel, ++ dnl it returns en_CC where CC is the territory (even when English is not among ++ dnl the preferred languages!). What we want instead is what ++ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what ++ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the ++ dnl first among the preferred languages and CC is the territory. ++ AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], ++ [gt_saved_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[#include ]], ++ [[CFLocaleCopyPreferredLanguages();]])], ++ [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], ++ [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) ++ LIBS="$gt_saved_LIBS"]) ++ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then ++ AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], ++ [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) ++ fi ++ INTL_MACOSX_LIBS= ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ ++ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then ++ dnl Starting with macOS version 14, CoreFoundation relies on CoreServices, ++ dnl and we have to link it in explicitly, otherwise an exception ++ dnl NSInvalidArgumentException "unrecognized selector sent to instance" ++ dnl occurs. ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" ++ fi ++ AC_SUBST([INTL_MACOSX_LIBS]) ++]) +diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 +new file mode 100644 +index 00000000..3714b9ce +--- /dev/null ++++ b/m4/lib-ld.m4 +@@ -0,0 +1,170 @@ ++# lib-ld.m4 ++# serial 13 ++dnl Copyright (C) 1996-2003, 2009-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++ ++dnl Subroutines of libtool.m4, ++dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid ++dnl collision with libtool.m4. ++ ++dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. ++AC_DEFUN([AC_LIB_PROG_LD_GNU], ++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], ++[# I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 /dev/null 2>&1 \ ++ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ ++ || PATH_SEPARATOR=';' ++ } ++fi ++ ++if test -n "$LD"; then ++ AC_MSG_CHECKING([for ld]) ++elif test "$GCC" = yes; then ++ AC_MSG_CHECKING([for ld used by $CC]) ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) ++else ++ AC_MSG_CHECKING([for non-GNU ld]) ++fi ++if test -n "$LD"; then ++ # Let the user override the test with a path. ++ : ++else ++ AC_CACHE_VAL([acl_cv_path_LD], ++ [ ++ acl_cv_path_LD= # Final result of this test ++ ac_prog=ld # Program to search in $PATH ++ if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ case $host in ++ *-*-mingw* | windows*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ acl_output=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $acl_output in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` ++ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do ++ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` ++ done ++ # Got the pathname. No search in PATH is needed. ++ acl_cv_path_LD="$acl_output" ++ ac_prog= ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++ fi ++ if test -n "$ac_prog"; then ++ # Search for $ac_prog in $PATH. ++ acl_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$acl_saved_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ acl_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$acl_cv_path_LD" -v 2>&1 conftest.sh ++ . ./conftest.sh ++ rm -f ./conftest.sh ++ acl_cv_rpath=done ++ ]) ++ wl="$acl_cv_wl" ++ acl_libext="$acl_cv_libext" ++ acl_shlibext="$acl_cv_shlibext" ++ acl_libname_spec="$acl_cv_libname_spec" ++ acl_library_names_spec="$acl_cv_library_names_spec" ++ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" ++ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" ++ acl_hardcode_direct="$acl_cv_hardcode_direct" ++ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" ++ dnl Determine whether the user wants rpath handling at all. ++ AC_ARG_ENABLE([rpath], ++ [ --disable-rpath do not hardcode runtime library paths], ++ :, enable_rpath=yes) ++]) ++ ++dnl AC_LIB_FROMPACKAGE(name, package) ++dnl declares that libname comes from the given package. The configure file ++dnl will then not have a --with-libname-prefix option but a ++dnl --with-package-prefix option. Several libraries can come from the same ++dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar ++dnl macro call that searches for libname. ++AC_DEFUN([AC_LIB_FROMPACKAGE], ++[ ++ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) ++ define([acl_frompackage_]NAME, [$2]) ++ popdef([NAME]) ++ pushdef([PACK],[$2]) ++ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) ++ define([acl_libsinpackage_]PACKUP, ++ m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[[, ]]],)[lib$1]) ++ popdef([PACKUP]) ++ popdef([PACK]) ++]) ++ ++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and ++dnl the libraries corresponding to explicit and implicit dependencies. ++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. ++dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found ++dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. ++AC_DEFUN([AC_LIB_LINKFLAGS_BODY], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) ++ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) ++ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) ++ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" ++ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ++ ]) ++ AC_ARG_WITH(PACK[-prefix], ++[[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib ++ --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no ++ else ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" ++ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ++ ]) ++ else ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/$acl_libdirstem" ++ additional_libdir2="$withval/$acl_libdirstem2" ++ additional_libdir3="$withval/$acl_libdirstem3" ++ fi ++ fi ++]) ++ if test "X$additional_libdir2" = "X$additional_libdir"; then ++ additional_libdir2= ++ fi ++ if test "X$additional_libdir3" = "X$additional_libdir"; then ++ additional_libdir3= ++ fi ++ dnl Search the library and its dependencies in $additional_libdir and ++ dnl $LDFLAGS. Use breadth-first search. ++ LIB[]NAME= ++ LTLIB[]NAME= ++ INC[]NAME= ++ LIB[]NAME[]_PREFIX= ++ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been ++ dnl computed. So it has to be reset here. ++ HAVE_LIB[]NAME= ++ rpathdirs= ++ ltrpathdirs= ++ names_already_handled= ++ names_next_round='$1 $2' ++ while test -n "$names_next_round"; do ++ names_this_round="$names_next_round" ++ names_next_round= ++ for name in $names_this_round; do ++ already_handled= ++ for n in $names_already_handled; do ++ if test "$n" = "$name"; then ++ already_handled=yes ++ break ++ fi ++ done ++ if test -z "$already_handled"; then ++ names_already_handled="$names_already_handled $name" ++ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS ++ dnl or AC_LIB_HAVE_LINKFLAGS call. ++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` ++ eval value=\"\$HAVE_LIB$uppername\" ++ if test -n "$value"; then ++ if test "$value" = yes; then ++ eval value=\"\$LIB$uppername\" ++ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" ++ eval value=\"\$LTLIB$uppername\" ++ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" ++ else ++ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined ++ dnl that this library doesn't exist. So just drop it. ++ : ++ fi ++ else ++ dnl Search the library lib$name in $additional_libdir and $LDFLAGS ++ dnl and the already constructed $LIBNAME/$LTLIBNAME. ++ found_dir= ++ found_la= ++ found_so= ++ found_a= ++ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name ++ if test -n "$acl_shlibext"; then ++ shrext=".$acl_shlibext" # typically: shrext=.so ++ else ++ shrext= ++ fi ++ if test $use_additional = yes; then ++ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do ++ if test "X$found_dir" = "X"; then ++ eval dir=\$$additional_libdir_variable ++ if test -n "$dir"; then ++ dnl The same code as in the loop below: ++ dnl First look for a shared library. ++ if test -n "$acl_shlibext"; then ++ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then ++ found_dir="$dir" ++ found_so="$dir/$libname$shrext" ++ else ++ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ++ ver=`(cd "$dir" && \ ++ for f in "$libname$shrext".*; do echo "$f"; done \ ++ | sed -e "s,^$libname$shrext\\\\.,," \ ++ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ ++ | sed 1q ) 2>/dev/null` ++ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then ++ found_dir="$dir" ++ found_so="$dir/$libname$shrext.$ver" ++ fi ++ else ++ eval library_names=\"$acl_library_names_spec\" ++ for f in $library_names; do ++ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then ++ found_dir="$dir" ++ found_so="$dir/$f" ++ break ++ fi ++ done ++ fi ++ fi ++ fi ++ dnl Then look for a static library. ++ if test "X$found_dir" = "X"; then ++ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then ++ found_dir="$dir" ++ found_a="$dir/$libname.$acl_libext" ++ fi ++ fi ++ if test "X$found_dir" != "X"; then ++ if test -f "$dir/$libname.la"; then ++ found_la="$dir/$libname.la" ++ fi ++ fi ++ fi ++ fi ++ done ++ fi ++ if test "X$found_dir" = "X"; then ++ for x in $LDFLAGS $LTLIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ case "$x" in ++ -L*) ++ dir=`echo "X$x" | sed -e 's/^X-L//'` ++ dnl First look for a shared library. ++ if test -n "$acl_shlibext"; then ++ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then ++ found_dir="$dir" ++ found_so="$dir/$libname$shrext" ++ else ++ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ++ ver=`(cd "$dir" && \ ++ for f in "$libname$shrext".*; do echo "$f"; done \ ++ | sed -e "s,^$libname$shrext\\\\.,," \ ++ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ ++ | sed 1q ) 2>/dev/null` ++ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then ++ found_dir="$dir" ++ found_so="$dir/$libname$shrext.$ver" ++ fi ++ else ++ eval library_names=\"$acl_library_names_spec\" ++ for f in $library_names; do ++ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then ++ found_dir="$dir" ++ found_so="$dir/$f" ++ break ++ fi ++ done ++ fi ++ fi ++ fi ++ dnl Then look for a static library. ++ if test "X$found_dir" = "X"; then ++ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then ++ found_dir="$dir" ++ found_a="$dir/$libname.$acl_libext" ++ fi ++ fi ++ if test "X$found_dir" != "X"; then ++ if test -f "$dir/$libname.la"; then ++ found_la="$dir/$libname.la" ++ fi ++ fi ++ ;; ++ esac ++ if test "X$found_dir" != "X"; then ++ break ++ fi ++ done ++ fi ++ if test "X$found_dir" != "X"; then ++ dnl Found the library. ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" ++ if test "X$found_so" != "X"; then ++ dnl Linking with a shared library. We attempt to hardcode its ++ dnl directory into the executable's runpath, unless it's the ++ dnl standard /usr/lib. ++ if test "$enable_rpath" = no \ ++ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ ++ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ ++ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then ++ dnl No hardcoding is needed. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ dnl Use an explicit option to hardcode DIR into the resulting ++ dnl binary. ++ dnl Potentially add DIR to ltrpathdirs. ++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. ++ haveit= ++ for x in $ltrpathdirs; do ++ if test "X$x" = "X$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ ltrpathdirs="$ltrpathdirs $found_dir" ++ fi ++ dnl The hardcoding into $LIBNAME is system dependent. ++ if test "$acl_hardcode_direct" = yes; then ++ dnl Using DIR/libNAME.so during linking hardcodes DIR into the ++ dnl resulting binary. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then ++ dnl Use an explicit option to hardcode DIR into the resulting ++ dnl binary. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ dnl Potentially add DIR to rpathdirs. ++ dnl The rpathdirs will be appended to $LIBNAME at the end. ++ haveit= ++ for x in $rpathdirs; do ++ if test "X$x" = "X$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ rpathdirs="$rpathdirs $found_dir" ++ fi ++ else ++ dnl Rely on "-L$found_dir". ++ dnl But don't add it if it's already contained in the LDFLAGS ++ dnl or the already constructed $LIBNAME ++ haveit= ++ for x in $LDFLAGS $LIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" ++ fi ++ if test "$acl_hardcode_minus_L" != no; then ++ dnl FIXME: Not sure whether we should use ++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" ++ dnl here. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH ++ dnl here, because this doesn't fit in flags passed to the ++ dnl compiler. So give up. No hardcoding. This affects only ++ dnl very old systems. ++ dnl FIXME: Not sure whether we should use ++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" ++ dnl here. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" ++ fi ++ fi ++ fi ++ fi ++ else ++ if test "X$found_a" != "X"; then ++ dnl Linking with a static library. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" ++ else ++ dnl We shouldn't come here, but anyway it's good to have a ++ dnl fallback. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" ++ fi ++ fi ++ dnl Assume the include files are nearby. ++ additional_includedir= ++ case "$found_dir" in ++ */$acl_libdirstem | */$acl_libdirstem/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` ++ if test "$name" = '$1'; then ++ LIB[]NAME[]_PREFIX="$basedir" ++ fi ++ additional_includedir="$basedir/include" ++ ;; ++ */$acl_libdirstem2 | */$acl_libdirstem2/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` ++ if test "$name" = '$1'; then ++ LIB[]NAME[]_PREFIX="$basedir" ++ fi ++ additional_includedir="$basedir/include" ++ ;; ++ */$acl_libdirstem3 | */$acl_libdirstem3/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` ++ if test "$name" = '$1'; then ++ LIB[]NAME[]_PREFIX="$basedir" ++ fi ++ additional_includedir="$basedir/include" ++ ;; ++ esac ++ if test "X$additional_includedir" != "X"; then ++ dnl Potentially add $additional_includedir to $INCNAME. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/include, ++ dnl 2. if it's /usr/local/include and we are using GCC on Linux, ++ dnl 3. if it's already present in $CPPFLAGS or the already ++ dnl constructed $INCNAME, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_includedir" != "X/usr/include"; then ++ haveit= ++ if test "X$additional_includedir" = "X/usr/local/include"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ for x in $CPPFLAGS $INC[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-I$additional_includedir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$additional_includedir"; then ++ dnl Really add $additional_includedir to $INCNAME. ++ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" ++ fi ++ fi ++ fi ++ fi ++ fi ++ dnl Look for dependencies. ++ if test -n "$found_la"; then ++ dnl Read the .la file. It defines the variables ++ dnl dlname, library_names, old_library, dependency_libs, current, ++ dnl age, revision, installed, dlopen, dlpreopen, libdir. ++ saved_libdir="$libdir" ++ case "$found_la" in ++ */* | *\\*) . "$found_la" ;; ++ *) . "./$found_la" ;; ++ esac ++ libdir="$saved_libdir" ++ dnl We use only dependency_libs. ++ for dep in $dependency_libs; do ++ case "$dep" in ++ -L*) ++ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` ++ dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/lib, ++ dnl 2. if it's /usr/local/lib and we are using GCC on Linux, ++ dnl 3. if it's already present in $LDFLAGS or the already ++ dnl constructed $LIBNAME, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ ++ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ ++ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then ++ haveit= ++ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ ++ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ ++ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ haveit= ++ for x in $LDFLAGS $LIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$dependency_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$dependency_libdir"; then ++ dnl Really add $dependency_libdir to $LIBNAME. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" ++ fi ++ fi ++ haveit= ++ for x in $LDFLAGS $LTLIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$dependency_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$dependency_libdir"; then ++ dnl Really add $dependency_libdir to $LTLIBNAME. ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" ++ fi ++ fi ++ fi ++ fi ++ ;; ++ -R*) ++ dir=`echo "X$dep" | sed -e 's/^X-R//'` ++ if test "$enable_rpath" != no; then ++ dnl Potentially add DIR to rpathdirs. ++ dnl The rpathdirs will be appended to $LIBNAME at the end. ++ haveit= ++ for x in $rpathdirs; do ++ if test "X$x" = "X$dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ dnl Potentially add DIR to ltrpathdirs. ++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. ++ haveit= ++ for x in $ltrpathdirs; do ++ if test "X$x" = "X$dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ ltrpathdirs="$ltrpathdirs $dir" ++ fi ++ fi ++ ;; ++ -l*) ++ dnl Handle this in the next round. ++ dnl But on GNU systems, ignore -lc options, because ++ dnl - linking with libc is the default anyway, ++ dnl - linking with libc.a may produce an error ++ dnl "/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie" ++ dnl or may produce an executable that always crashes, see ++ dnl . ++ dep=`echo "X$dep" | sed -e 's/^X-l//'` ++ if test "X$dep" != Xc \ ++ || case $host_os in ++ linux* | gnu* | k*bsd*-gnu) false ;; ++ *) true ;; ++ esac; then ++ names_next_round="$names_next_round $dep" ++ fi ++ ;; ++ *.la) ++ dnl Handle this in the next round. Throw away the .la's ++ dnl directory; it is already contained in a preceding -L ++ dnl option. ++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ++ ;; ++ *) ++ dnl Most likely an immediate library name. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ++ ;; ++ esac ++ done ++ fi ++ else ++ dnl Didn't find the library; assume it is in the system directories ++ dnl known to the linker and runtime loader. (All the system ++ dnl directories known to the linker should also be known to the ++ dnl runtime loader, otherwise the system is severely misconfigured.) ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" ++ fi ++ fi ++ fi ++ done ++ done ++ if test "X$rpathdirs" != "X"; then ++ if test -n "$acl_hardcode_libdir_separator"; then ++ dnl Weird platform: only the last -rpath option counts, the user must ++ dnl pass all path elements in one option. We can arrange that for a ++ dnl single library, but not when more than one $LIBNAMEs are used. ++ alldirs= ++ for found_dir in $rpathdirs; do ++ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" ++ done ++ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. ++ acl_saved_libdir="$libdir" ++ libdir="$alldirs" ++ eval flag=\"$acl_hardcode_libdir_flag_spec\" ++ libdir="$acl_saved_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ else ++ dnl The -rpath options are cumulative. ++ for found_dir in $rpathdirs; do ++ acl_saved_libdir="$libdir" ++ libdir="$found_dir" ++ eval flag=\"$acl_hardcode_libdir_flag_spec\" ++ libdir="$acl_saved_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ done ++ fi ++ fi ++ if test "X$ltrpathdirs" != "X"; then ++ dnl When using libtool, the option that works for both libraries and ++ dnl executables is -R. The -R options are cumulative. ++ for found_dir in $ltrpathdirs; do ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" ++ done ++ fi ++ popdef([PACKLIBS]) ++ popdef([PACKUP]) ++ popdef([PACK]) ++ popdef([NAME]) ++]) ++ ++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, ++dnl unless already present in VAR. ++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes ++dnl contains two or three consecutive elements that belong together. ++AC_DEFUN([AC_LIB_APPENDTOVAR], ++[ ++ for element in [$2]; do ++ haveit= ++ for x in $[$1]; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X$element"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ [$1]="${[$1]}${[$1]:+ }$element" ++ fi ++ done ++]) ++ ++dnl For those cases where a variable contains several -L and -l options ++dnl referring to unknown libraries and directories, this macro determines the ++dnl necessary additional linker options for the runtime path. ++dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) ++dnl sets LDADDVAR to linker options needed together with LIBSVALUE. ++dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, ++dnl otherwise linking without libtool is assumed. ++AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], ++[ ++ AC_REQUIRE([AC_LIB_RPATH]) ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ $1= ++ if test "$enable_rpath" != no; then ++ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then ++ dnl Use an explicit option to hardcode directories into the resulting ++ dnl binary. ++ rpathdirs= ++ next= ++ for opt in $2; do ++ if test -n "$next"; then ++ dir="$next" ++ dnl No need to hardcode the standard /usr/lib. ++ if test "X$dir" != "X/usr/$acl_libdirstem" \ ++ && test "X$dir" != "X/usr/$acl_libdirstem2" \ ++ && test "X$dir" != "X/usr/$acl_libdirstem3"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ next= ++ else ++ case $opt in ++ -L) next=yes ;; ++ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` ++ dnl No need to hardcode the standard /usr/lib. ++ if test "X$dir" != "X/usr/$acl_libdirstem" \ ++ && test "X$dir" != "X/usr/$acl_libdirstem2" \ ++ && test "X$dir" != "X/usr/$acl_libdirstem3"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ next= ;; ++ *) next= ;; ++ esac ++ fi ++ done ++ if test "X$rpathdirs" != "X"; then ++ if test -n ""$3""; then ++ dnl libtool is used for linking. Use -R options. ++ for dir in $rpathdirs; do ++ $1="${$1}${$1:+ }-R$dir" ++ done ++ else ++ dnl The linker is used for linking directly. ++ if test -n "$acl_hardcode_libdir_separator"; then ++ dnl Weird platform: only the last -rpath option counts, the user ++ dnl must pass all path elements in one option. ++ alldirs= ++ for dir in $rpathdirs; do ++ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" ++ done ++ acl_saved_libdir="$libdir" ++ libdir="$alldirs" ++ eval flag=\"$acl_hardcode_libdir_flag_spec\" ++ libdir="$acl_saved_libdir" ++ $1="$flag" ++ else ++ dnl The -rpath options are cumulative. ++ for dir in $rpathdirs; do ++ acl_saved_libdir="$libdir" ++ libdir="$dir" ++ eval flag=\"$acl_hardcode_libdir_flag_spec\" ++ libdir="$acl_saved_libdir" ++ $1="${$1}${$1:+ }$flag" ++ done ++ fi ++ fi ++ fi ++ fi ++ fi ++ AC_SUBST([$1]) ++]) +diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 +new file mode 100644 +index 00000000..29283534 +--- /dev/null ++++ b/m4/lib-prefix.m4 +@@ -0,0 +1,334 @@ ++# lib-prefix.m4 ++# serial 23 ++dnl Copyright (C) 2001-2005, 2008-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++ ++dnl From Bruno Haible. ++ ++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed ++dnl to access previously installed libraries. The basic assumption is that ++dnl a user will want packages to use other packages he previously installed ++dnl with the same --prefix option. ++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate ++dnl libraries, but is otherwise very convenient. ++AC_DEFUN([AC_LIB_PREFIX], ++[ ++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) ++ AC_REQUIRE([AC_PROG_CC]) ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ AC_ARG_WITH([lib-prefix], ++[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib ++ --without-lib-prefix don't search for libraries in includedir and libdir]], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no ++ else ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ else ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/$acl_libdirstem" ++ fi ++ fi ++]) ++ if test $use_additional = yes; then ++ dnl Potentially add $additional_includedir to $CPPFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/include, ++ dnl 2. if it's already present in $CPPFLAGS, ++ dnl 3. if it's /usr/local/include and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_includedir" != "X/usr/include"; then ++ haveit= ++ for x in $CPPFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-I$additional_includedir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_includedir" = "X/usr/local/include"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_includedir"; then ++ dnl Really add $additional_includedir to $CPPFLAGS. ++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" ++ fi ++ fi ++ fi ++ fi ++ dnl Potentially add $additional_libdir to $LDFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/lib, ++ dnl 2. if it's already present in $LDFLAGS, ++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then ++ haveit= ++ for x in $LDFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$additional_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux*) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_libdir"; then ++ dnl Really add $additional_libdir to $LDFLAGS. ++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" ++ fi ++ fi ++ fi ++ fi ++ fi ++]) ++ ++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, ++dnl acl_final_exec_prefix, containing the values to which $prefix and ++dnl $exec_prefix will expand at the end of the configure script. ++AC_DEFUN([AC_LIB_PREPARE_PREFIX], ++[ ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ acl_final_prefix="$ac_default_prefix" ++ else ++ acl_final_prefix="$prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ acl_final_exec_prefix='${prefix}' ++ else ++ acl_final_exec_prefix="$exec_prefix" ++ fi ++ acl_saved_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" ++ prefix="$acl_saved_prefix" ++]) ++ ++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the ++dnl variables prefix and exec_prefix bound to the values they will have ++dnl at the end of the configure script. ++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], ++[ ++ acl_saved_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ acl_saved_exec_prefix="$exec_prefix" ++ exec_prefix="$acl_final_exec_prefix" ++ $1 ++ exec_prefix="$acl_saved_exec_prefix" ++ prefix="$acl_saved_prefix" ++]) ++ ++dnl AC_LIB_PREPARE_MULTILIB creates ++dnl - a function acl_is_expected_elfclass, that tests whether standard input ++dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, ++dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing ++dnl the basename of the libdir to try in turn, either "lib" or "lib64" or ++dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. ++AC_DEFUN([AC_LIB_PREPARE_MULTILIB], ++[ ++ dnl There is no formal standard regarding lib, lib32, and lib64. ++ dnl On most glibc systems, the current practice is that on a system supporting ++ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under ++ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on ++ dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go ++ dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. ++ dnl We determine the compiler's default mode by looking at the compiler's ++ dnl library search path. If at least one of its elements ends in /lib64 or ++ dnl points to a directory whose absolute pathname ends in /lib64, we use that ++ dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, ++ dnl namely "lib". ++ dnl On Solaris systems, the current practice is that on a system supporting ++ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under ++ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or ++ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) ++ ++ AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], ++ [AC_EGREP_CPP([Extensible Linking Format], ++ [#if defined __ELF__ || (defined __linux__ && (defined __EDG__ || defined __SUNPRO_C)) ++ Extensible Linking Format ++ #endif ++ ], ++ [gl_cv_elf=yes], ++ [gl_cv_elf=no]) ++ ]) ++ if test $gl_cv_elf = yes; then ++ # Extract the ELF class of a file (5th byte) in decimal. ++ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header ++ if od -A x < /dev/null >/dev/null 2>/dev/null; then ++ # Use POSIX od. ++ func_elfclass () ++ { ++ od -A n -t d1 -j 4 -N 1 ++ } ++ else ++ # Use BSD hexdump. ++ func_elfclass () ++ { ++ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' ++ echo ++ } ++ fi ++ # Use 'expr', not 'test', to compare the values of func_elfclass, because on ++ # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, ++ # not 1 or 2. ++changequote(,)dnl ++ case $HOST_CPU_C_ABI_32BIT in ++ yes) ++ # 32-bit ABI. ++ acl_is_expected_elfclass () ++ { ++ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null ++ } ++ ;; ++ no) ++ # 64-bit ABI. ++ acl_is_expected_elfclass () ++ { ++ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null ++ } ++ ;; ++ *) ++ # Unknown. ++ acl_is_expected_elfclass () ++ { ++ : ++ } ++ ;; ++ esac ++changequote([,])dnl ++ else ++ acl_is_expected_elfclass () ++ { ++ : ++ } ++ fi ++ ++ dnl Allow the user to override the result by setting acl_cv_libdirstems. ++ AC_CACHE_CHECK([for the common suffixes of directories in the library search path], ++ [acl_cv_libdirstems], ++ [dnl Try 'lib' first, because that's the default for libdir in GNU, see ++ dnl . ++ acl_libdirstem=lib ++ acl_libdirstem2= ++ acl_libdirstem3= ++ case "$host_os" in ++ solaris*) ++ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment ++ dnl . ++ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." ++ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the ++ dnl symlink is missing, so we set acl_libdirstem2 too. ++ if test $HOST_CPU_C_ABI_32BIT = no; then ++ acl_libdirstem2=lib/64 ++ case "$host_cpu" in ++ sparc*) acl_libdirstem3=lib/sparcv9 ;; ++ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; ++ esac ++ fi ++ ;; ++ netbsd*) ++ dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains ++ dnl 32-bit libraries. ++ if test $HOST_CPU_C_ABI_32BIT != no; then ++ case "$host_cpu" in ++ sparc*) acl_libdirstem2=lib/sparc ;; ++ esac ++ fi ++ ;; ++ *) ++ dnl If $CC generates code for a 32-bit ABI, the libraries are ++ dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. ++ dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries ++ dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. ++ dnl Find the compiler's search path. However, non-system compilers ++ dnl sometimes have odd library search paths. But we can't simply invoke ++ dnl '/usr/bin/gcc -print-search-dirs' because that would not take into ++ dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. ++ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ ++ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` ++ if test $HOST_CPU_C_ABI_32BIT != no; then ++ # 32-bit or unknown ABI. ++ if test -d /usr/lib32; then ++ acl_libdirstem2=lib32 ++ fi ++ fi ++ if test $HOST_CPU_C_ABI_32BIT != yes; then ++ # 64-bit or unknown ABI. ++ if test -d /usr/lib64; then ++ acl_libdirstem3=lib64 ++ fi ++ fi ++ if test -n "$searchpath"; then ++ acl_saved_IFS="${IFS= }"; IFS=":" ++ for searchdir in $searchpath; do ++ if test -d "$searchdir"; then ++ case "$searchdir" in ++ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; ++ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; ++ */../ | */.. ) ++ # Better ignore directories of this form. They are misleading. ++ ;; ++ *) searchdir=`cd "$searchdir" && pwd` ++ case "$searchdir" in ++ */lib32 ) acl_libdirstem2=lib32 ;; ++ */lib64 ) acl_libdirstem3=lib64 ;; ++ esac ;; ++ esac ++ fi ++ done ++ IFS="$acl_saved_IFS" ++ if test $HOST_CPU_C_ABI_32BIT = yes; then ++ # 32-bit ABI. ++ acl_libdirstem3= ++ fi ++ if test $HOST_CPU_C_ABI_32BIT = no; then ++ # 64-bit ABI. ++ acl_libdirstem2= ++ fi ++ fi ++ ;; ++ esac ++ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ++ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" ++ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" ++ ]) ++ dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and ++ dnl acl_libdirstem3. ++changequote(,)dnl ++ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` ++ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` ++ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` ++changequote([,])dnl ++]) +diff --git a/m4/nls.m4 b/m4/nls.m4 +new file mode 100644 +index 00000000..c4601415 +--- /dev/null ++++ b/m4/nls.m4 +@@ -0,0 +1,33 @@ ++# nls.m4 ++# serial 6 (gettext-0.24) ++dnl Copyright (C) 1995-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++dnl ++dnl This file can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Lesser General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Lesser General Public License, and the rest of the GNU ++dnl gettext package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. ++ ++AC_PREREQ([2.50]) ++ ++AC_DEFUN([AM_NLS], ++[ ++ AC_MSG_CHECKING([whether NLS is requested]) ++ dnl Default is enabled NLS ++ AC_ARG_ENABLE([nls], ++ [ --disable-nls do not use Native Language Support], ++ USE_NLS=$enableval, USE_NLS=yes) ++ AC_MSG_RESULT([$USE_NLS]) ++ AC_SUBST([USE_NLS]) ++]) +diff --git a/m4/po.m4 b/m4/po.m4 +new file mode 100644 +index 00000000..73e0436b +--- /dev/null ++++ b/m4/po.m4 +@@ -0,0 +1,157 @@ ++# po.m4 ++# serial 34 (gettext-0.24) ++dnl Copyright (C) 1995-2024 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++dnl ++dnl This file can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Lesser General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Lesser General Public License, and the rest of the GNU ++dnl gettext package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2024. ++ ++AC_PREREQ([2.60]) ++ ++dnl Checks for all prerequisites of the po subdirectory. ++AC_DEFUN([AM_PO_SUBDIRS], ++[ ++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++ AC_REQUIRE([AC_PROG_INSTALL])dnl ++ AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++ AC_REQUIRE([AC_PROG_SED])dnl ++ AC_REQUIRE([AM_NLS])dnl ++ ++ dnl Release version of the gettext macros. This is used to ensure that ++ dnl the gettext macros and po/Makefile.in.in are in sync. ++ AC_SUBST([GETTEXT_MACRO_VERSION], [0.24]) ++ ++ dnl Perform the following tests also if --disable-nls has been given, ++ dnl because they are needed for "make dist" to work. ++ ++ dnl Search for GNU msgfmt in the PATH. ++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. ++ dnl The second test excludes FreeBSD msgfmt. ++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, ++ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) ++ ++ dnl Test whether it is GNU msgfmt >= 0.15. ++changequote(,)dnl ++ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; ++ *) GMSGFMT_015=$GMSGFMT ;; ++ esac ++changequote([,])dnl ++ AC_SUBST([GMSGFMT_015]) ++ ++ dnl Search for GNU xgettext 0.12 or newer in the PATH. ++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. ++ dnl The second test excludes FreeBSD xgettext. ++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, ++ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ dnl Remove leftover from FreeBSD xgettext call. ++ rm -f messages.po ++ ++ dnl Test whether it is GNU xgettext >= 0.15. ++changequote(,)dnl ++ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; ++ *) XGETTEXT_015=$XGETTEXT ;; ++ esac ++changequote([,])dnl ++ AC_SUBST([XGETTEXT_015]) ++ ++ dnl Search for GNU msgmerge 0.11 or newer in the PATH. ++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, ++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) ++ ++ dnl Test whether it is GNU msgmerge >= 0.20. ++ if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then ++ MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' ++ else ++ dnl Test whether it is GNU msgmerge >= 0.12. ++ if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then ++ MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' ++ else ++ dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is ++ dnl slow. But this is not a big problem, as such old gettext versions are ++ dnl hardly in use any more. ++ MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' ++ fi ++ fi ++ AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) ++ ++ dnl Support for AM_XGETTEXT_OPTION. ++ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ++ AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) ++ ++ if test -n "$ALL_LINGUAS"; then ++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" ++ fi ++ ++ dnl Capture the value of LINGUAS because we need it to compute CATALOGS. ++ dnl In the Makefile, call it DESIRED_LINGUAS (because there, LINGUAS denotes ++ dnl the set of available translations, given by the developer). ++ DESIRED_LINGUAS="${LINGUAS-\$(ALL_LINGUAS)}" ++ AC_SUBST([DESIRED_LINGUAS]) ++ ++ AC_CONFIG_COMMANDS([po-directories], [[ ++ for ac_file in $CONFIG_FILES; do ++ # Support "outfile[:infile[:infile...]]" ++ case "$ac_file" in ++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; ++ esac ++ # PO directories have a Makefile.in generated from Makefile.in.in. ++ case "$ac_file" in */Makefile.in) ++ # Adjust a relative srcdir. ++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ++ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` ++ # In autoconf-2.13 it is called $ac_given_srcdir. ++ # In autoconf-2.50 it is called $srcdir. ++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" ++ # Treat a directory as a PO directory if and only if it has a ++ # POTFILES.in file. This allows packages to have multiple PO ++ # directories under different names or in different locations. ++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then ++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" ++ cat "$ac_dir/Makefile.in" > "$ac_dir/Makefile" ++ fi ++ ;; ++ esac ++ done]], ++ []) ++]) ++ ++dnl Postprocesses a Makefile in a directory containing PO files. ++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], ++[ ++ sed -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" ++ mv "$ac_file.tmp" "$ac_file" ++]) ++ ++dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. ++AC_DEFUN([AM_XGETTEXT_OPTION_INIT], ++[ ++ XGETTEXT_EXTRA_OPTIONS= ++]) ++ ++dnl Registers an option to be passed to xgettext in the po subdirectory. ++AC_DEFUN([AM_XGETTEXT_OPTION], ++[ ++ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) ++ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" ++]) +diff --git a/m4/progtest.m4 b/m4/progtest.m4 +new file mode 100644 +index 00000000..2671eb85 +--- /dev/null ++++ b/m4/progtest.m4 +@@ -0,0 +1,93 @@ ++# progtest.m4 ++# serial 10 (gettext-0.24) ++dnl Copyright (C) 1996-2025 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl This file is offered as-is, without any warranty. ++dnl ++dnl This file can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Lesser General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Lesser General Public License, and the rest of the GNU ++dnl gettext package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1996. ++ ++AC_PREREQ([2.53]) ++ ++# Search path for a program which passes the given test. ++ ++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, ++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) ++AC_DEFUN([AM_PATH_PROG_WITH_TEST], ++[ ++# Prepare PATH_SEPARATOR. ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which ++ # contains only /bin. Note that ksh looks also at the FPATH variable, ++ # so we have to set that as well for the test. ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ ++ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ ++ || PATH_SEPARATOR=';' ++ } ++fi ++ ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" ++else ++ ac_executable_p="test -f" ++fi ++rm -f conf$$.file ++ ++# Extract the first word of "$2", so it can be a program name with args. ++set dummy $2; ac_word=[$]2 ++AC_MSG_CHECKING([for $ac_word]) ++AC_CACHE_VAL([ac_cv_path_$1], ++[case "[$]$1" in ++ [[\\/]]* | ?:[[\\/]]*) ++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ++ ;; ++ *) ++ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in m4_if([$5], , $PATH, [$5]); do ++ IFS="$gt_saved_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD ++ if [$3]; then ++ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi ++ done ++ done ++ IFS="$gt_saved_IFS" ++dnl If no 4th arg is given, leave the cache variable unset, ++dnl so AC_PATH_PROGS will keep looking. ++m4_if([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ++])dnl ++ ;; ++esac])dnl ++$1="$ac_cv_path_$1" ++if test m4_if([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then ++ AC_MSG_RESULT([$][$1]) ++else ++ AC_MSG_RESULT([no]) ++fi ++AC_SUBST([$1])dnl ++]) diff --git a/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch b/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch new file mode 100644 index 0000000..9d79da7 --- /dev/null +++ b/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch @@ -0,0 +1,60 @@ +From db1908226ce901b73953732edcba8a20087422c4 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 20 May 2025 08:23:39 +0100 +Subject: [PATCH] convert: Use e2fsck -n flag when checking ext2/3/4 + filesystems +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When checking the fedora-30 image from virt-builder: + + $ virt-v2v -i disk fedora-30.img -o null + ... + [ 68.4] Checking filesystem integrity before conversion + virt-v2v: error: libguestfs error: e2fsck: e2fsck 1.47.1 (20-May-2024) + e2fsck: need terminal for interactive repairs + +Use the e2fsck -n flag to avoid this problem. + +This flag is described as: + + -n Open the file system read-only, and assume an answer of `no' to + all questions. Allows e2fsck to be used non-interactively. This + option may not be specified at the same time as the -p or -y op‐ + tions. + +Updates: commit 78ffb68d4f1ef8af776c24537feaf832fd3ec7e9 +Updates: https://issues.redhat.com/browse/RHEL-91931 +--- + convert/convert.ml | 2 +- + m4/guestfs-libraries.m4 | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/convert/convert.ml b/convert/convert.ml +index 0ed7a884..a6e0d532 100644 +--- a/convert/convert.ml ++++ b/convert/convert.ml +@@ -258,7 +258,7 @@ and do_fsck g = + ); + + | dev, "ext4" -> +- g#e2fsck dev (* ~correct:false is the default *) ++ g#e2fsck ~forceno:true dev + + | dev, "xfs" -> + if g#xfs_repair ~nomodify:true dev <> 0 then +diff --git a/m4/guestfs-libraries.m4 b/m4/guestfs-libraries.m4 +index 4f5b745a..fa13e0f6 100644 +--- a/m4/guestfs-libraries.m4 ++++ b/m4/guestfs-libraries.m4 +@@ -21,7 +21,8 @@ dnl Of course we need libguestfs. + dnl + dnl We need libguestfs 1.55.6 for guestfs_sh_out. + dnl We need libguestfs 1.55.12 for guestfs_btrfs_scrub_full. +-PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs >= 1.55.12]) ++dnl We need libguestfs 1.55.13 for guestfs_e2fsck FORCENO flag. ++PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs >= 1.55.13]) + printf "libguestfs version is "; $PKG_CONFIG --modversion libguestfs + + dnl And libnbd. diff --git a/0001-RHEL-Fixes-for-libguestfs-winsupport.patch b/0003-RHEL-Fixes-for-libguestfs-winsupport.patch similarity index 98% rename from 0001-RHEL-Fixes-for-libguestfs-winsupport.patch rename to 0003-RHEL-Fixes-for-libguestfs-winsupport.patch index d5540fb..9a49b1c 100644 --- a/0001-RHEL-Fixes-for-libguestfs-winsupport.patch +++ b/0003-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -1,4 +1,4 @@ -From 0d45fc75dd8150fcb51db6bf847afebfdfd332d4 Mon Sep 17 00:00:00 2001 +From 06a2e0eee5a970ab5bc7aa3595d21fff3ca5a8cb Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 30 Aug 2015 03:21:57 -0400 Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport. @@ -19,7 +19,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=2187961#c1 7 files changed, 40 insertions(+), 5 deletions(-) diff --git a/convert/convert.ml b/convert/convert.ml -index 0ed7a884..cd7e9ce3 100644 +index a6e0d532..cf2b09cd 100644 --- a/convert/convert.ml +++ b/convert/convert.ml @@ -53,6 +53,7 @@ let rec convert input_disks options source = diff --git a/0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch similarity index 94% rename from 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch rename to 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch index 84e9725..ac3cba8 100644 --- a/0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +++ b/0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch @@ -1,4 +1,4 @@ -From 79b3712d05a03bf7a34ce1177f302791717acde1 Mon Sep 17 00:00:00 2001 +From 4382b17eca2a79bfef6d946c0309ea2634e832c0 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 28 Sep 2014 19:14:43 +0100 Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode diff --git a/0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch similarity index 97% rename from 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch rename to 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch index baf3a90..f90fc81 100644 --- a/0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +++ b/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -1,4 +1,4 @@ -From 932fac6fa988957c33bb78dcd4cf6ccff06d3a96 Mon Sep 17 00:00:00 2001 +From bb7343b579d5979f3c06c67ebbc741fd5783b2eb Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 30 Sep 2014 10:50:27 +0100 Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option diff --git a/0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch similarity index 92% rename from 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch rename to 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch index f33aaff..dd38571 100644 --- a/0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +++ b/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -1,4 +1,4 @@ -From 0554731eda42c44a93a026407cf0165f9cc7f57a Mon Sep 17 00:00:00 2001 +From bb0cfcc4d20f05ac66d58f665c9211ebff408859 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 24 Apr 2015 09:45:41 -0400 Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu diff --git a/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch similarity index 93% rename from 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch rename to 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch index 395de03..0d99ef2 100644 --- a/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ b/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -1,4 +1,4 @@ -From 8e973c6c2e8a8889433c72fae688d5f5219c811f Mon Sep 17 00:00:00 2001 +From 4a97d6141b9cbd8057632fb6dee6ade419e54d62 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Mar 2017 14:21:37 +0100 Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) diff --git a/0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch similarity index 97% rename from 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch rename to 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch index 861029e..64cf04b 100644 --- a/0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +++ b/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -1,4 +1,4 @@ -From 356b635abaa519179c640fbd3a0b7da039ca8fe3 Mon Sep 17 00:00:00 2001 +From 5444014742fe120079b1b3e680c82bff47e7fc6d Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Tue, 26 Mar 2019 09:42:25 +0100 Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests diff --git a/0007-RHEL-Remove-input-from-Xen.patch b/0009-RHEL-Remove-input-from-Xen.patch similarity index 99% rename from 0007-RHEL-Remove-input-from-Xen.patch rename to 0009-RHEL-Remove-input-from-Xen.patch index 834dc70..3763afd 100644 --- a/0007-RHEL-Remove-input-from-Xen.patch +++ b/0009-RHEL-Remove-input-from-Xen.patch @@ -1,4 +1,4 @@ -From 9e65ca89b74f535142e5d733907f55bdb200ac34 Mon Sep 17 00:00:00 2001 +From c993b68877a7749cf725d135c20093f42a20ed26 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:35:54 +0100 Subject: [PATCH] RHEL: Remove input from Xen diff --git a/0008-RHEL-Remove-o-glance.patch b/0010-RHEL-Remove-o-glance.patch similarity index 99% rename from 0008-RHEL-Remove-o-glance.patch rename to 0010-RHEL-Remove-o-glance.patch index 18017ca..c4a5ebe 100644 --- a/0008-RHEL-Remove-o-glance.patch +++ b/0010-RHEL-Remove-o-glance.patch @@ -1,4 +1,4 @@ -From 52d3622bb55dfe2aaaee577748e4fe94ed0026e5 Mon Sep 17 00:00:00 2001 +From e1caa762c70b5e904a34d89ea8face5007a24258 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 30 Jun 2021 11:15:52 +0100 Subject: [PATCH] RHEL: Remove -o glance diff --git a/0009-RHEL-tests-Remove-btrfs-test.patch b/0011-RHEL-tests-Remove-btrfs-test.patch similarity index 90% rename from 0009-RHEL-tests-Remove-btrfs-test.patch rename to 0011-RHEL-tests-Remove-btrfs-test.patch index c3ea0cc..382a4ad 100644 --- a/0009-RHEL-tests-Remove-btrfs-test.patch +++ b/0011-RHEL-tests-Remove-btrfs-test.patch @@ -1,4 +1,4 @@ -From 9d8b011e72d0da826c84ef9c9c5e9676bf32a083 Mon Sep 17 00:00:00 2001 +From f69c4c9cbb617ce49fcd04307b4aca19d1c65d30 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 5 Jul 2022 11:58:09 +0100 Subject: [PATCH] RHEL: tests: Remove btrfs test diff --git a/0010-RHEL-Remove-block-driver-option.patch b/0012-RHEL-Remove-block-driver-option.patch similarity index 98% rename from 0010-RHEL-Remove-block-driver-option.patch rename to 0012-RHEL-Remove-block-driver-option.patch index 1305d2e..fef2ade 100644 --- a/0010-RHEL-Remove-block-driver-option.patch +++ b/0012-RHEL-Remove-block-driver-option.patch @@ -1,4 +1,4 @@ -From 9eada4143e422e3ede0743eec8be920e4664722b Mon Sep 17 00:00:00 2001 +From 2ec1b0dc2d1902a99b6ce3a79c9e0c58f43a83b4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 28 Apr 2023 12:28:19 +0100 Subject: [PATCH] RHEL: Remove --block-driver option diff --git a/0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch b/0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch similarity index 99% rename from 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch rename to 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch index 8dd7d47..e9f744c 100644 --- a/0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +++ b/0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch @@ -1,4 +1,4 @@ -From a40f29ee8d3375d6bbf065cb8fb206e2a1294b88 Mon Sep 17 00:00:00 2001 +From 4c8b8d6f6bb68a82a49a0ecf87b6365d11ac02e4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:56:54 +0100 Subject: [PATCH] RHEL: Remove -o ovirt, -o ovirt-upload and -o vdsm modes diff --git a/0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch b/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch similarity index 96% rename from 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch rename to 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch index 880e9f3..661d5e8 100644 --- a/0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +++ b/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch @@ -1,4 +1,4 @@ -From dfcdd8de3b345664107518eaaf5a763103daacb2 Mon Sep 17 00:00:00 2001 +From a70126f1e0fb793086ad86dc3b0d89b9bc09b19c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 9 Jul 2024 11:30:09 +0100 Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported diff --git a/virt-v2v.spec b/virt-v2v.spec index e75bda6..b6a4ff8 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -7,7 +7,7 @@ Name: virt-v2v Epoch: 1 Version: 2.7.16 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Convert a virtual machine to run on KVM License: GPL-2.0-or-later AND LGPL-2.0-or-later @@ -27,18 +27,20 @@ Source3: copy-patches.sh # https://github.com/libguestfs/virt-v2v/commits/rhel-10.1 # Patches. -Patch0001: 0001-RHEL-Fixes-for-libguestfs-winsupport.patch -Patch0002: 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch -Patch0003: 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch -Patch0004: 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch -Patch0005: 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch -Patch0006: 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch -Patch0007: 0007-RHEL-Remove-input-from-Xen.patch -Patch0008: 0008-RHEL-Remove-o-glance.patch -Patch0009: 0009-RHEL-tests-Remove-btrfs-test.patch -Patch0010: 0010-RHEL-Remove-block-driver-option.patch -Patch0011: 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch -Patch0012: 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +Patch0001: 0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch +Patch0002: 0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch +Patch0003: 0003-RHEL-Fixes-for-libguestfs-winsupport.patch +Patch0004: 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +Patch0005: 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +Patch0006: 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +Patch0007: 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +Patch0008: 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +Patch0009: 0009-RHEL-Remove-input-from-Xen.patch +Patch0010: 0010-RHEL-Remove-o-glance.patch +Patch0011: 0011-RHEL-tests-Remove-btrfs-test.patch +Patch0012: 0012-RHEL-Remove-block-driver-option.patch +Patch0013: 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +Patch0014: 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch %if !0%{?rhel} # libguestfs hasn't been built on i686 for a while since there is no @@ -63,7 +65,7 @@ BuildRequires: /usr/bin/pod2man BuildRequires: gcc BuildRequires: ocaml >= 4.08 -BuildRequires: libguestfs-devel >= 1:1.55.12-1 +BuildRequires: libguestfs-devel >= 1:1.55.13-1 BuildRequires: augeas-devel BuildRequires: bash-completion BuildRequires: file-devel @@ -108,7 +110,7 @@ BuildRequires: glibc-static BuildRequires: gnupg2 %endif -Requires: libguestfs%{?_isa} >= 1:1.55.12-1 +Requires: libguestfs%{?_isa} >= 1:1.55.13-1 Requires: guestfs-tools >= 1.49.7-1 # XFS is the default filesystem in Fedora and RHEL. @@ -329,7 +331,7 @@ done %changelog -* Mon May 19 2025 Richard W.M. Jones - 1:2.7.16-1 +* Tue May 20 2025 Richard W.M. Jones - 1:2.7.16-2 - Rebase to virt-v2v 2.7.16 related: RHEL-81735 - Fix virt-v2v -v --install dnf5 error