$OpenBSD: patch-ltnasm_sh,v 1.2 2021/10/04 05:46:11 rsadowski Exp $

Use a libtool-wrapper script for NASM.

Libtool thinks NASM acts just like the C-compiler, which isn't true
for e.g. -f options. Previously we used -prefer-non-pic to avoid libtool
passing any additional flags, which worked well on all tested platforms
but as it turns out at least on OpenBSD this does not work.
This now also means we'll automatically get the -DPIC flag as needed,
which might perhaps also help some platforms we didn't test yet; before
we fully relied on x86inc's automatic setting for PIC in assembly.

https://github.com/libass/libass/issues/539

Index: ltnasm.sh
--- ltnasm.sh.orig
+++ ltnasm.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Translate libtool supplied C-compiler options for NASM.
+# libtool treats NASM like the C compiler, and may supply -f… options
+# which are interpreted as the output file format by NASM, causing errors.
+# Notably libtool will set -DPIC -fPIC and -fno-common;
+# we want to use -DPIC by translating it to -DPIC=1, but remove everything else
+#
+# Theoretically the way the filtering is done here in a plain POSIX shell script,
+# does mess up if there were spaces in any argument. However this will never happen
+# since neither our filenames nor options do not contain spaces and source paths
+# are not allowed to contain spaces by configure.
+
+cmd=""
+while [ "$#" -gt 0 ] ; do
+    case "$1" in
+        # NASM accepts both -f format and -fformat,
+        # we always use the former, and libtool supplied
+        # C-compiler options will always use the latter.
+        -f) cmd="$cmd $1" ;;
+        -f*) : ;;
+        -DPIC) cmd="$cmd -DPIC=1" ;;
+        *) cmd="$cmd $1" ;;
+    esac
+    shift
+done
+
+exec $cmd
