summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--libass/Makefile.am2
-rwxr-xr-xltnasm.sh28
3 files changed, 30 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index be8386e..8697553 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
ACLOCAL_AMFLAGS = -I m4
-EXTRA_DIST = libass.pc.in Changelog
+EXTRA_DIST = libass.pc.in Changelog ltnasm.sh
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libass.pc
diff --git a/libass/Makefile.am b/libass/Makefile.am
index d84012c..894c91c 100644
--- a/libass/Makefile.am
+++ b/libass/Makefile.am
@@ -12,7 +12,7 @@ nasm_verbose_ = $(nasm_verbose_$(AM_DEFAULT_VERBOSITY))
nasm_verbose_0 = @echo " NASM " $@;
.asm.lo:
- $(nasm_verbose)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(AS) $(ASFLAGS) -I$(srcdir)/ -o $@ $< -prefer-non-pic
+ $(nasm_verbose)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(top_srcdir)/ltnasm.sh $(AS) $(ASFLAGS) -I$(srcdir)/ -o $@ $<
SRC_INTEL = x86/rasterizer.asm x86/blend_bitmaps.asm x86/be_blur.asm x86/blur.asm x86/cpuid.asm \
x86/cpuid.h
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