summaryrefslogtreecommitdiffstats
path: root/ltnasm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ltnasm.sh')
-rwxr-xr-xltnasm.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/ltnasm.sh b/ltnasm.sh
new file mode 100755
index 0000000..92c3c42
--- /dev/null
+++ b/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