Merge pull request #10338 from lazka/separate-libltdl
libtool: remove and add standalone libltdl instead
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
_realname=autotools
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
pkgver=2021.12.14
|
||||
pkgver=2021.12.15
|
||||
pkgrel=1
|
||||
pkgdesc="A meta package for the GNU autotools build system (mingw-w64)"
|
||||
arch=('any')
|
||||
@@ -14,8 +14,8 @@ depends=(
|
||||
'autoconf'
|
||||
'automake-wrapper'
|
||||
'make'
|
||||
'libtool'
|
||||
"${MINGW_PACKAGE_PREFIX}-gettext"
|
||||
"${MINGW_PACKAGE_PREFIX}-libtool"
|
||||
"${MINGW_PACKAGE_PREFIX}-pkg-config"
|
||||
)
|
||||
source=(README.md)
|
||||
|
||||
49
mingw-w64-libltdl/PKGBUILD
Normal file
49
mingw-w64-libltdl/PKGBUILD
Normal file
@@ -0,0 +1,49 @@
|
||||
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
|
||||
# Contributor: Ray Donnelly <mingw.android@gmail.com>
|
||||
|
||||
_realname=libltdl
|
||||
_parentname=libtool
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
pkgver=2.4.6
|
||||
pkgrel=21
|
||||
pkgdesc="A system independent dlopen wrapper for GNU libtool (mingw-w64)"
|
||||
arch=('any')
|
||||
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
|
||||
url="https://www.gnu.org/software/libtool"
|
||||
license=("GPL")
|
||||
makedepends=("${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-gcc")
|
||||
provides=("${MINGW_PACKAGE_PREFIX}-libtool")
|
||||
conflicts=("${MINGW_PACKAGE_PREFIX}-libtool")
|
||||
replaces=("${MINGW_PACKAGE_PREFIX}-libtool")
|
||||
source=("https://ftp.gnu.org/pub/gnu/libtool/${_parentname}-${pkgver}.tar.xz"{,.sig})
|
||||
sha256sums=('7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f'
|
||||
'SKIP')
|
||||
validpgpkeys=('CFE2BE707B538E8B26757D84151308092983D606') #Gary Vaughan (Free Software Developer) <gary@vaughan.pe>
|
||||
|
||||
prepare() {
|
||||
cd ${srcdir}/${_parentname}-${pkgver}/libltdl
|
||||
|
||||
autoreconf -fvi
|
||||
}
|
||||
|
||||
build() {
|
||||
mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST}
|
||||
|
||||
export lt_cv_deplibs_check_method='pass_all'
|
||||
|
||||
../${_parentname}-${pkgver}/libltdl/configure \
|
||||
--prefix=${MINGW_PREFIX} \
|
||||
--build=${MINGW_CHOST} \
|
||||
--host=${MINGW_CHOST} \
|
||||
--target=${MINGW_CHOST} \
|
||||
--enable-ltdl-install
|
||||
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}/build-${MINGW_CHOST}"
|
||||
|
||||
make DESTDIR="${pkgdir}" install
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
[PATCH 2/6] [cygwin|mingw] Create UAC manifest files.
|
||||
|
||||
* build-aux/ltmain.in (func_emit_exe_manifest): New function.
|
||||
(func_mode_link) [cygwin|mingw]: Create manifest files for wrapper
|
||||
and target exe when target name matches heuristic that triggers
|
||||
UAC problems for newer win32 OSs. Clean up $cwrapper.manifest on
|
||||
error. Ensure manifest files have executable permission.
|
||||
(func_mode_uninstall): Clean up manifest files.
|
||||
Various reports by Eric Blake, Kai Tietz, and Cesar Strauss.
|
||||
---
|
||||
build-auxltmain.in | 50 ++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 files changed, 48 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index 0418007..1821779 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -4277,6 +4277,41 @@ EOF
|
||||
}
|
||||
# end: func_emit_cwrapperexe_src
|
||||
|
||||
+# func_emit_exe_manifest
|
||||
+# emit a Win32 UAC manifest for executable on stdout
|
||||
+# Must ONLY be called from within func_mode_link because
|
||||
+# it depends on a number of variable set therein.
|
||||
+func_emit_exe_manifest ()
|
||||
+{
|
||||
+ cat <<EOF
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
+ <assemblyIdentity version="1.0.0.0"
|
||||
+EOF
|
||||
+
|
||||
+ case $host in
|
||||
+ i?86-*-* ) echo ' processorArchitecture="x86"' ;;
|
||||
+ ia64-*-* ) echo ' processorArchitecture="ia64"' ;;
|
||||
+ x86_64-*-* ) echo ' processorArchitecture="amd64"' ;;
|
||||
+ *) echo ' processorArchitecture="*"' ;;
|
||||
+ esac
|
||||
+
|
||||
+ cat <<EOF
|
||||
+ name="$host_os.$PROGRAM.$outputname"
|
||||
+ type="win32"/>
|
||||
+
|
||||
+ <!-- Identify the application security requirements. -->
|
||||
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
+ <security>
|
||||
+ <requestedPrivileges>
|
||||
+ <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
+ </requestedPrivileges>
|
||||
+ </security>
|
||||
+ </trustInfo>
|
||||
+</assembly>
|
||||
+EOF
|
||||
+}
|
||||
+
|
||||
# func_win32_import_lib_p ARG
|
||||
# True if ARG is an import lib, as indicated by $file_magic_cmd
|
||||
func_win32_import_lib_p ()
|
||||
@@ -8237,7 +8272,7 @@ EOF
|
||||
cwrappersource="$output_path/$objdir/lt-$output_name.c"
|
||||
cwrapper="$output_path/$output_name.exe"
|
||||
$RM $cwrappersource $cwrapper
|
||||
- trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
|
||||
+ trap "$RM $cwrappersource $cwrapper $cwrapper.manifest; exit $EXIT_FAILURE" 1 2 15
|
||||
|
||||
func_emit_cwrapperexe_src > $cwrappersource
|
||||
|
||||
@@ -8257,6 +8292,16 @@ EOF
|
||||
$opt_dry_run || {
|
||||
# note: this script will not be executed, so do not chmod.
|
||||
if test "x$build" = "x$host"; then
|
||||
+ # Create the UAC manifests first if necessary (but the
|
||||
+ # manifest files must have executable permission regardless).
|
||||
+ case $output_name in
|
||||
+ *instal*|*patch*|*setup*|*update*)
|
||||
+ func_emit_exe_manifest > $cwrapper.manifest
|
||||
+ func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest
|
||||
+ chmod +x $cwrapper.manifest
|
||||
+ chmod +x $output_path/$objdir/$output_name.exe.manifest
|
||||
+ ;;
|
||||
+ esac
|
||||
$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
|
||||
else
|
||||
func_emit_wrapper no > $func_ltwrapper_scriptname_result
|
||||
@@ -8777,8 +8822,9 @@ func_mode_uninstall ()
|
||||
# note $name still contains .exe if it was in $file originally
|
||||
# as does the version of $file that was added into $rmfiles
|
||||
func_append rmfiles " $odir/$name $odir/${name}S.$objext"
|
||||
+ func_append rmfiles " ${name}.manifest $objdir/${name}.manifest"
|
||||
if test yes = "$fast_install" && test -n "$relink_command"; then
|
||||
- func_append rmfiles " $odir/lt-$name"
|
||||
+ func_append rmfiles " $odir/lt-$name $objdir/lt-${name}.manifest"
|
||||
fi
|
||||
if test "X$noexename" != "X$name"; then
|
||||
func_append rmfiles " $odir/lt-$noexename.c"
|
||||
--
|
||||
1.7.1
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
[PATCH 3/6] Pass various runtime library flags to GCC.
|
||||
* build-aux/ltmain.in (func_mode_link): Pass the
|
||||
-shared-libgcc and -static-lib* flags along to GCC.
|
||||
---
|
||||
build-aux/ltmain.in | 5 ++++-
|
||||
1 files changed, 4 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index 1821779..eda7790 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -5084,9 +5084,12 @@ func_mode_link ()
|
||||
# --sysroot=* for sysroot support
|
||||
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
|
||||
# -stdlib=* select c++ std lib with clang
|
||||
+ # -{shared,static}-libgcc, -static-{libgfortran|libstdc++}
|
||||
+ # link against specified runtime library
|
||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
||||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
||||
- -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
|
||||
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
|
||||
+ -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++)
|
||||
func_quote_for_eval "$arg"
|
||||
arg=$func_quote_for_eval_result
|
||||
func_append compile_command " $arg"
|
||||
--
|
||||
1.7.1
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
[PATCH 5/6] Fix "seems to be moved"
|
||||
* build-aux/ltmain.in (func_mode_link): Compare files by inode
|
||||
to fix "seems to be moved" warning.
|
||||
---
|
||||
build-aux/ltmain.in | 4 +++-
|
||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index af46cb8..244bb5b 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -6283,7 +6283,9 @@ func_mode_link ()
|
||||
eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
|
||||
test -z "$libdir" && \
|
||||
func_fatal_error "'$deplib' is not a valid libtool archive"
|
||||
- test "$absdir" != "$libdir" && \
|
||||
+ abs_inode=`ls -i "$deplib" | awk '{print $1}'`
|
||||
+ lib_inode=`ls -i "$libdir/$(basename $deplib)" | awk '{print $1}'`
|
||||
+ test "$abs_inode" != "$lib_inode" && \
|
||||
func_warning "'$deplib' seems to be moved"
|
||||
|
||||
path=-L$absdir
|
||||
--
|
||||
1.7.0.2.msysgit.0
|
||||
@@ -1,22 +0,0 @@
|
||||
[PATCH 6/6] Fix STRICT_ANSI vs POSIX
|
||||
* build-aux/ltmain.in (func_mode_link): Also check for _POSIX
|
||||
as well as __STRICT_ANSI__ to avoid re-definitions.
|
||||
---
|
||||
build-aux/ltmain.in | 4 +++-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index af46cb8..244bb5b 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -3382,7 +3382,7 @@
|
||||
|
||||
/* declarations of non-ANSI functions */
|
||||
#if defined __MINGW32__
|
||||
-# ifdef __STRICT_ANSI__
|
||||
+# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_)
|
||||
int _putenv (const char *);
|
||||
# endif
|
||||
#elif defined __CYGWIN__
|
||||
--
|
||||
1.7.0.2.msysgit.0
|
||||
@@ -1,22 +0,0 @@
|
||||
--- libtool-2.4.2/configure.orig 2011-10-17 10:18:58.000000000 +0000
|
||||
+++ libtool-2.4.2/configure 2013-08-04 19:01:30.220494400 +0000
|
||||
@@ -28825,7 +28825,7 @@
|
||||
fi
|
||||
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
|
||||
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
|
||||
- ac_cs_awk_cr='\\r'
|
||||
+ ac_cs_awk_cr='\r'
|
||||
else
|
||||
ac_cs_awk_cr=$ac_cr
|
||||
fi
|
||||
--- libtool-2.4.2/libltdl/configure.orig 2011-10-17 10:19:47.000000000 +0000
|
||||
+++ libtool-2.4.2/libltdl/configure 2013-08-05 11:49:24.990792500 +0000
|
||||
@@ -13574,7 +13574,7 @@
|
||||
fi
|
||||
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
|
||||
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
|
||||
- ac_cs_awk_cr='\\r'
|
||||
+ ac_cs_awk_cr='\r'
|
||||
else
|
||||
ac_cs_awk_cr=$ac_cr
|
||||
fi
|
||||
@@ -1,132 +0,0 @@
|
||||
diff -Naur libtool-2.4.6-old/tests/demo.at libtool-2.4.6/tests/demo.at
|
||||
--- libtool-2.4.6-old/tests/demo.at 2015-01-17 03:52:04.000000000 +0900
|
||||
+++ libtool-2.4.6/tests/demo.at 2015-07-14 13:39:52.802179800 +0900
|
||||
@@ -271,6 +271,13 @@
|
||||
|
||||
#define lt_preloaded_symbols lt__PROGRAM__LTX_preloaded_symbols
|
||||
|
||||
+#if defined(__MINGW64__) && defined(__x86_64__) && \
|
||||
+ !defined(LT_MINGW_STATIC_TESTSUITE_HACK)
|
||||
+#define NOTHING "__nm_nothing"
|
||||
+#else
|
||||
+#define NOTHING "nothing"
|
||||
+#endif
|
||||
+
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
@@ -301,7 +308,7 @@
|
||||
phello = (int(*)())s->address;
|
||||
else if (STREQ ("foo", name))
|
||||
pfoo = (int(*)())s->address;
|
||||
- else if (STREQ ("nothing", name))
|
||||
+ else if (STREQ (NOTHING, name))
|
||||
#ifndef _WIN32
|
||||
/* In an ideal world we could do this... */
|
||||
pnothing = (int*)s->address;
|
||||
diff -Naur libtool-2.4.6-old/m4/ltoptions.m4 libtool-2.4.6/m4/ltoptions.m4
|
||||
--- libtool-2.4.6-old/m4/ltoptions.m4 2015-01-17 03:52:04.000000000 +0900
|
||||
+++ libtool-2.4.6/m4/ltoptions.m4 2015-07-14 12:57:21.299381300 +0900
|
||||
@@ -170,7 +170,11 @@
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_shared=yes ;;
|
||||
- no) enable_shared=no ;;
|
||||
+ no)
|
||||
+ enable_shared=no
|
||||
+ AC_DEFINE([LT_MINGW_STATIC_TESTSUITE_HACK], [1],
|
||||
+ [Define if running the test suite so that test #27 works on MinGW.])
|
||||
+ ;;
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
diff -Naur libtool-2.4.6-old/tests/testsuite.at libtool-2.4.6/tests/testsuite.at
|
||||
--- libtool-2.4.6-old/tests/testsuite.at 2015-01-21 00:24:15.000000000 +0900
|
||||
+++ libtool-2.4.6/tests/testsuite.at 2015-07-14 16:35:02.495236200 +0900
|
||||
@@ -320,6 +320,8 @@
|
||||
# to unify different possible exit status values.
|
||||
m4_define([LT_AT_EXEC_CHECK],
|
||||
[lt_exe=$1; if test -f "$1$EXEEXT"; then lt_exe=$lt_exe$EXEEXT; fi
|
||||
+m4_ifval([$3], [m4_if([$3], [ignore], [], [LT_AT_UNIFY_NL([$3])])])
|
||||
+m4_ifval([$4], [m4_if([$4], [ignore], [], [LT_AT_UNIFY_NL([$4])])])
|
||||
AT_CHECK([if "$lt_exe" $5; then :; else lt_status=$?; ]dnl
|
||||
[ m4_ifval([$2], [test "$lt_status" != $2 && ])]dnl
|
||||
[ test "X$host" != "X$build" && test -x "$lt_exe" && exit 77; ]dnl
|
||||
@@ -339,6 +341,8 @@
|
||||
# to unify different possible exit status values.
|
||||
m4_define([LT_AT_NOINST_EXEC_CHECK],
|
||||
[lt_exe=$1; if test -f "$1$EXEEXT"; then lt_exe=$lt_exe$EXEEXT; fi
|
||||
+m4_ifval([$4], [m4_if([$4], [ignore], [], [LT_AT_UNIFY_NL([$4])])])
|
||||
+m4_ifval([$5], [m4_if([$5], [ignore], [], [LT_AT_UNIFY_NL([$5])])])
|
||||
AT_CHECK([if $LIBTOOL --mode=execute $2 "$lt_exe" $6; then :; else lt_status=$?; ]dnl
|
||||
[ m4_ifval([$3], [test "$lt_status" != $3 && ])]dnl
|
||||
[ test "X$host" != "X$build" && test -x "$lt_exe" && exit 77; ]dnl
|
||||
diff -Naur libtool-2.4.6-old/build-aux/ltmain.in libtool-2.4.6/build-aux/ltmain.in
|
||||
--- libtool-2.4.6-old/build-aux/ltmain.in 2015-02-06 21:57:56.000000000 +0900
|
||||
+++ libtool-2.4.6/build-aux/ltmain.in 2015-07-18 05:47:02.820124000 +0900
|
||||
@@ -3054,7 +3054,7 @@
|
||||
;;
|
||||
*executable*) # but shell scripts are "executable" too...
|
||||
case $win32_fileres in
|
||||
- *MS\ Windows\ PE\ Intel*)
|
||||
+ *PE32*Intel\ 80386,\ for\ MS\ Windows*)
|
||||
win32_libid_type="x86 DLL"
|
||||
;;
|
||||
esac
|
||||
diff -Naur libtool-2.4.6-old/tests/mdemo.at libtool-2.4.6/tests/mdemo.at
|
||||
--- libtool-2.4.6-old/tests/mdemo.at 2015-01-17 03:52:04.000000000 +0900
|
||||
+++ libtool-2.4.6/tests/mdemo.at 2015-07-19 05:21:53.373111100 +0900
|
||||
@@ -342,6 +342,10 @@
|
||||
[[#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
+/* XXX needed for i386 crash-at-exit workaround on mingw-w64 */
|
||||
+#ifdef __MINGW32__
|
||||
+#include <process.h>
|
||||
+#endif
|
||||
|
||||
#include "foo.h"
|
||||
#include "ltdl.h"
|
||||
@@ -573,6 +577,12 @@
|
||||
}
|
||||
|
||||
lt_dlexit();
|
||||
+ /* XXX this test crashes at exit, but only on i386; should figure out why */
|
||||
+#ifdef __MINGW32__
|
||||
+ fflush(stdout);
|
||||
+ fflush(stderr);
|
||||
+ _exit(ret);
|
||||
+#endif
|
||||
return ret;
|
||||
}
|
||||
]])
|
||||
diff -Naur libtool-2.4.6-old/tests/darwin.at libtool-2.4.6/tests/darwin.at
|
||||
--- libtool-2.4.6-old/tests/darwin.at 2015-07-19 06:01:21.670510000 +0900
|
||||
+++ libtool-2.4.6/tests/darwin.at 2015-07-19 06:10:41.764128900 +0900
|
||||
@@ -101,7 +101,10 @@
|
||||
|
||||
|
||||
AT_SETUP([darwin concurrent library extraction])
|
||||
-
|
||||
+AT_CHECK([case $host_os in
|
||||
+darwin*) ;;
|
||||
+*) exit 77 ;;
|
||||
+esac])
|
||||
AT_DATA([foo.c], [[
|
||||
int foo (void) { return 0; }
|
||||
]])
|
||||
diff -Naur libtool-2.4.6-old/tests/cmdline_wrap.at libtool-2.4.6/tests/cmdline_wrap.at
|
||||
--- libtool-2.4.6-old/tests/cmdline_wrap.at 2015-01-17 03:52:04.000000000 +0900
|
||||
+++ libtool-2.4.6/tests/cmdline_wrap.at 2015-07-19 08:01:45.110423400 +0900
|
||||
@@ -27,6 +27,11 @@
|
||||
|
||||
AT_SETUP([Run tests with low max_cmd_len])
|
||||
AT_KEYWORDS([recursive expensive])
|
||||
+dnl XXX some of the tests run by this test fail on mingw-w64; how to fix?
|
||||
+AT_CHECK([case $host_os in
|
||||
+mingw*) exit 77 ;;
|
||||
+*) ;;
|
||||
+esac])
|
||||
dnl If we already have failures, then reruns will fail too!
|
||||
fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do test -f "$f" && echo "$f"; done`
|
||||
echo "DEBUG: fail_list='$fail_list'"
|
||||
@@ -1,33 +0,0 @@
|
||||
From a18473ed4e5574dab899db640b8efeff78939b54 Mon Sep 17 00:00:00 2001
|
||||
From: Manoj Gupta <manojgupta@chromium.org>
|
||||
Date: Wed, 10 Oct 2018 10:50:23 +0300
|
||||
Subject: [PATCH 1/2] Pick up clang_rt static archives compiler internal
|
||||
libraries
|
||||
|
||||
Libtool checks only for libraries linked as -l* when trying to
|
||||
find internal compiler libraries. Clang, however uses the absolute
|
||||
path to link its internal libraries e.g. compiler_rt. This patch
|
||||
handles clang's statically linked libraries when finding internal
|
||||
compiler libraries.
|
||||
https://crbug.com/749263
|
||||
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866
|
||||
---
|
||||
m4/libtool.m4 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/m4/libtool.m4 b/m4/libtool.m4
|
||||
index b55a6e5..d9322d0 100644
|
||||
--- a/m4/libtool.m4
|
||||
+++ b/m4/libtool.m4
|
||||
@@ -7556,7 +7556,7 @@ if AC_TRY_EVAL(ac_compile); then
|
||||
for p in `eval "$output_verbose_link_cmd"`; do
|
||||
case $prev$p in
|
||||
|
||||
- -L* | -R* | -l*)
|
||||
+ -L* | -R* | -l* | */libclang_rt.*.a)
|
||||
# Some compilers place space between "-{L,R}" and the path.
|
||||
# Remove the space.
|
||||
if test x-L = "$p" ||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
From ec15841963ca3aab3bc88fb0932c014337284bfc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
||||
Date: Wed, 10 Oct 2018 10:47:21 +0300
|
||||
Subject: [PATCH 2/2] Prefer response files over linker scripts for mingw tools
|
||||
|
||||
The GCC/binutils tools support response files just fine, while
|
||||
lld (impersonating GNU ld) only supports response files, not
|
||||
linker scripts. Using a linker script as input just to pass a
|
||||
list of files is overkill for cases when a response file is enough.
|
||||
---
|
||||
build-aux/ltmain.in | 28 ++++++++++++++--------------
|
||||
m4/libtool.m4 | 2 ++
|
||||
2 files changed, 16 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index e2fb263..db5d590 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -7932,20 +7932,7 @@ EOF
|
||||
last_robj=
|
||||
k=1
|
||||
|
||||
- if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
|
||||
- output=$output_objdir/$output_la.lnkscript
|
||||
- func_verbose "creating GNU ld script: $output"
|
||||
- echo 'INPUT (' > $output
|
||||
- for obj in $save_libobjs
|
||||
- do
|
||||
- func_to_tool_file "$obj"
|
||||
- $ECHO "$func_to_tool_file_result" >> $output
|
||||
- done
|
||||
- echo ')' >> $output
|
||||
- func_append delfiles " $output"
|
||||
- func_to_tool_file "$output"
|
||||
- output=$func_to_tool_file_result
|
||||
- elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
|
||||
+ if test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
|
||||
output=$output_objdir/$output_la.lnk
|
||||
func_verbose "creating linker input file list: $output"
|
||||
: > $output
|
||||
@@ -7964,6 +7951,19 @@ EOF
|
||||
func_append delfiles " $output"
|
||||
func_to_tool_file "$output"
|
||||
output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
|
||||
+ elif test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
|
||||
+ output=$output_objdir/$output_la.lnkscript
|
||||
+ func_verbose "creating GNU ld script: $output"
|
||||
+ echo 'INPUT (' > $output
|
||||
+ for obj in $save_libobjs
|
||||
+ do
|
||||
+ func_to_tool_file "$obj"
|
||||
+ $ECHO "$func_to_tool_file_result" >> $output
|
||||
+ done
|
||||
+ echo ')' >> $output
|
||||
+ func_append delfiles " $output"
|
||||
+ func_to_tool_file "$output"
|
||||
+ output=$func_to_tool_file_result
|
||||
else
|
||||
if test -n "$save_libobjs"; then
|
||||
func_verbose "creating reloadable object files..."
|
||||
diff --git a/m4/libtool.m4 b/m4/libtool.m4
|
||||
index d9322d0..9046a84 100644
|
||||
--- a/m4/libtool.m4
|
||||
+++ b/m4/libtool.m4
|
||||
@@ -5130,6 +5130,7 @@ _LT_EOF
|
||||
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
|
||||
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
|
||||
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
|
||||
+ _LT_TAGVAR(file_list_spec, $1)='@'
|
||||
|
||||
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
||||
@@ -6706,6 +6707,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
||||
_LT_TAGVAR(always_export_symbols, $1)=no
|
||||
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
|
||||
+ _LT_TAGVAR(file_list_spec, $1)='@'
|
||||
|
||||
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
From b9f77cae8cfbe850e58cac686fcb4d246b5bfc51 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
||||
Date: Mon, 19 Aug 2019 13:34:51 +0300
|
||||
Subject: [PATCH] Allow statically linking compiler support libraries when
|
||||
linking a library
|
||||
|
||||
For cases with deplibs_check_method="file_magic ..." (as it is for mingw),
|
||||
there were previously no way that a static library could be accepted
|
||||
here.
|
||||
---
|
||||
build-aux/ltmain.in | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index e2fb2633..db4d775c 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -5870,8 +5870,15 @@ func_mode_link ()
|
||||
fi
|
||||
case $linkmode in
|
||||
lib)
|
||||
- # Linking convenience modules into shared libraries is allowed,
|
||||
- # but linking other static libraries is non-portable.
|
||||
+ # Linking convenience modules and compiler provided static libraries
|
||||
+ # into shared libraries is allowed, but linking other static
|
||||
+ # libraries is non-portable.
|
||||
+ case $deplib in
|
||||
+ */libgcc*.$libext | */libclang_rt*.$libext)
|
||||
+ deplibs="$deplib $deplibs"
|
||||
+ continue
|
||||
+ ;;
|
||||
+ esac
|
||||
case " $dlpreconveniencelibs " in
|
||||
*" $deplib "*) ;;
|
||||
*)
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 03dabb6a70847761e65572a2a7b770a3b1b9f123 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= <mati865@gmail.com>
|
||||
Date: Mon, 12 Apr 2021 23:44:10 +0200
|
||||
Subject: [PATCH] Support llvm-objdump -f output
|
||||
|
||||
---
|
||||
build-aux/ltmain.in | 2 +-
|
||||
m4/libtool.m4 | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
|
||||
index a9f070a..4a434cc 100644
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -3019,7 +3019,7 @@ func_win32_libid ()
|
||||
*ar\ archive*) # could be an import, or static
|
||||
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
|
||||
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
|
||||
- $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
|
||||
+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|coff-arm|coff-arm64|coff-i386|coff-x86-64)' >/dev/null; then
|
||||
case $nm_interface in
|
||||
"MS dumpbin")
|
||||
if func_cygming_ms_implib_p "$1" ||
|
||||
diff --git a/m4/libtool.m4 b/m4/libtool.m4
|
||||
index 21a7d60..594be9c 100644
|
||||
--- a/m4/libtool.m4
|
||||
+++ b/m4/libtool.m4
|
||||
@@ -3473,7 +3473,7 @@ mingw* | pw32*)
|
||||
lt_cv_file_magic_cmd='func_win32_libid'
|
||||
else
|
||||
# Keep this pattern in sync with the one in func_win32_libid.
|
||||
- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
|
||||
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|coff-arm|coff-arm64|coff-i386|coff-x86-64)'
|
||||
lt_cv_file_magic_cmd='$OBJDUMP -f'
|
||||
fi
|
||||
;;
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
|
||||
# Contributor: Ray Donnelly <mingw.android@gmail.com>
|
||||
|
||||
_realname=libtool
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
pkgver=2.4.6
|
||||
pkgrel=20
|
||||
pkgdesc="A system independent dlopen wrapper for GNU libtool (mingw-w64)"
|
||||
arch=('any')
|
||||
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
|
||||
url="https://www.gnu.org/software/libtool"
|
||||
license=("GPL")
|
||||
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc")
|
||||
options=('staticlibs' 'strip')
|
||||
source=("https://ftp.gnu.org/pub/gnu/libtool/${_realname}-${pkgver}.tar.xz"{,.sig}
|
||||
#https://alpha.gnu.org/gnu/libtool/${_realname}-${pkgver}.tar.xz{,.sig}
|
||||
0002-cygwin-mingw-Create-UAC-manifest-files.mingw.patch
|
||||
0003-Pass-various-runtime-library-flags-to-GCC.mingw.patch
|
||||
0005-Fix-seems-to-be-moved.patch
|
||||
0006-Fix-strict-ansi-vs-posix.patch
|
||||
0007-fix-cr-for-awk-in-configure.all.patch
|
||||
0008-tests.patch
|
||||
0011-Pick-up-clang_rt-static-archives-compiler-internal-l.patch
|
||||
0012-Prefer-response-files-over-linker-scripts-for-mingw-.patch
|
||||
0013-Allow-statically-linking-compiler-support-libraries-.patch
|
||||
0014-Support-llvm-objdump-f-output.patch)
|
||||
sha256sums=('7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f'
|
||||
'SKIP'
|
||||
'fe8b80efd34f9385220ebc90aaec945e44de8c343c75719d6ac0d4e472a6eed5'
|
||||
'4f452cc104d110b4745d70e9bfc72617183ef97b25595b2675ab681d6c9517c2'
|
||||
'dc39fbe066958178f96108f07db62b48b9339efddf2c21f800ff8d67110ca393'
|
||||
'6a94ada08b0a0aa36240efd9ccb826e22ab94ef0969270f2edb8be344dc8c62b'
|
||||
'd96beecfc5d15f94ce46bbe0e89d6e6fdb973a25ad6be98c30504b58453792c1'
|
||||
'f00b44b49f83b20d4fbde89253666d0eb769172cfd711110f1be6a175294cb27'
|
||||
'c727b2b017163cfdeca60820d3cff2dac8968c5630745602b150f92b159af313'
|
||||
'c95a65e890b1ae6362807abc66809e72cf81aeea5f9f556e38f9752f974bf435'
|
||||
'8069e887aeeab7491f15e00547fa66d9b9e86407f5a23f37a6d8c7d165de752e'
|
||||
'db16cd322e0ebc578c906e94b0788810af17ce617c700a50db2e3c598dbbed7e')
|
||||
|
||||
validpgpkeys=('CFE2BE707B538E8B26757D84151308092983D606') #Gary Vaughan (Free Software Developer) <gary@vaughan.pe>
|
||||
|
||||
prepare() {
|
||||
cd ${srcdir}/${_realname}-${pkgver}
|
||||
patch -p1 -i ${srcdir}/0002-cygwin-mingw-Create-UAC-manifest-files.mingw.patch
|
||||
patch -p1 -i ${srcdir}/0003-Pass-various-runtime-library-flags-to-GCC.mingw.patch
|
||||
patch -p1 -i ${srcdir}/0005-Fix-seems-to-be-moved.patch
|
||||
patch -p1 -i ${srcdir}/0006-Fix-strict-ansi-vs-posix.patch
|
||||
patch -p1 -i ${srcdir}/0007-fix-cr-for-awk-in-configure.all.patch
|
||||
patch -p1 -i ${srcdir}/0008-tests.patch
|
||||
patch -p1 -i ${srcdir}/0011-Pick-up-clang_rt-static-archives-compiler-internal-l.patch
|
||||
patch -p1 -i ${srcdir}/0012-Prefer-response-files-over-linker-scripts-for-mingw-.patch
|
||||
patch -p1 -i ${srcdir}/0013-Allow-statically-linking-compiler-support-libraries-.patch
|
||||
patch -p1 -i ${srcdir}/0014-Support-llvm-objdump-f-output.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
[[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}"
|
||||
mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST}
|
||||
../${_realname}-${pkgver}/configure \
|
||||
--prefix=${MINGW_PREFIX} \
|
||||
--build=${MINGW_CHOST} \
|
||||
--host=${MINGW_CHOST} \
|
||||
--target=${MINGW_CHOST}
|
||||
make
|
||||
}
|
||||
|
||||
#check() {
|
||||
# cd ${srcdir}/build-${MINGW_CHOST}
|
||||
# make check
|
||||
#}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}/build-${MINGW_CHOST}"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
# Because libtool will have queried native compilers,
|
||||
# it'll contain native paths, so sed them back again.
|
||||
local MINGW_PREFIX_W=$(cygpath -m "${MINGW_PREFIX}")
|
||||
sed -i "s#${MINGW_PREFIX_W}#${MINGW_PREFIX}#g" "${pkgdir}${MINGW_PREFIX}"/bin/libtool
|
||||
}
|
||||
Reference in New Issue
Block a user