summaryrefslogtreecommitdiffstats
path: root/libtool-nola
diff options
context:
space:
mode:
authorThomas Orgis2020-09-08 01:14:56 +0200
committerThomas Orgis2020-09-08 01:28:17 +0200
commitf016d3a1563b38feac284559eaf99d8d4d9080a8 (patch)
tree79eb12a6e69545f3887f7f21b6d8783dc7d7a89c /libtool-nola
parent265221efc753e2ad9d77fca3666a099aaadb41d0 (diff)
libtool-nola, la_remove_up_trigger.function: infrastructure for dropping .la
As long as we do not have central filters for libtool archives, spells that have non-trivial lists of those files need some help: - libtool-nola: Inject that into the libtool calls of the build (sed Makefiles) to have it call the real libtool, but remove the .la files afterwards. - la_remove_up_trigger.function: Use that in UP_TRIGGERS to safely re-cast spells that reference the removed .la files in theirs.
Diffstat (limited to 'libtool-nola')
-rwxr-xr-xlibtool-nola50
1 files changed, 50 insertions, 0 deletions
diff --git a/libtool-nola b/libtool-nola
new file mode 100755
index 0000000000..f1b4874561
--- /dev/null
+++ b/libtool-nola
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# This wraps over the actual libtool script (given as first argument)
+# and tries to remove any .la files that libtool script creates.
+# The expected call is
+# libtool [options] --mode=install [options] <library files> <directory>
+# The script runs libtool with /bin/sh (assuming it's compatible to whatever
+# we have there) and then tries to clean up after it.
+
+set -e
+
+# Run the full libtool command.
+"$@"
+
+# Assumption: file list comes after --mode=install.
+# Let's ingore anything before that.
+
+installing=false
+for arg in "$@"
+do
+ case "$arg" in
+ --mode=install)
+ installing=true
+ shift
+ ;;
+ -*)
+ shift
+ ;;
+ *)
+ if $installing; then
+ break;
+ fi
+ ;;
+ esac
+done
+
+
+if $installing; then
+ for dir in "$@"; do :; done;
+ echo "$(basename $0): Cleaning up after libtool: no .la files, please."
+ for f in "$@"
+ do
+ case "$f" in
+ *.la)
+ rm -vf "$dir/$(basename "$f")"
+ ;;
+ esac
+ done
+fi
+