[vlc-devel] [PATCH v2] build: disable non-PIC assembly when building for Android.
Diego Elio Pettenò
flameeyes at flameeyes.eu
Sun Dec 6 11:13:45 CET 2015
This disables MMX/MMXEXT code for ffmpeg/postproc, and all assembly for mpg123 and libass.
It has performance implications but it avoids all TEXTRELs in the output, which makes it possible to use W^X techniques. The code can probably be ported to be PIC-compatible in the future so that these can be re-enabled, but even Gentoo Linux has no better solutions for this at the moment.
Signed-off-by: Diego Elio Pettenò <flameeyes at flameeyes.eu>
---
contrib/src/ass/rules.mak | 5 +++++
contrib/src/ffmpeg/rules.mak | 4 ++++
contrib/src/mpg123/rules.mak | 8 +++++++-
contrib/src/postproc/rules.mak | 4 ++++
4 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/contrib/src/ass/rules.mak b/contrib/src/ass/rules.mak
index a9c2603..ef9e653 100644
--- a/contrib/src/ass/rules.mak
+++ b/contrib/src/ass/rules.mak
@@ -10,6 +10,7 @@ endif
ifdef HAVE_ANDROID
WITH_FONTCONFIG = 0
WITH_HARFBUZZ = 0
+WITH_ASS_ASM = 0
else
ifdef HAVE_TIZEN
WITH_FONTCONFIG = 0
@@ -59,6 +60,10 @@ else
ASS_CONF += --disable-harfbuzz
endif
+ifeq ($(WITH_ASS_ASM), 0)
+ASS_CONF += --disable-asm
+endif
+
ifdef WITH_OPTIMIZATION
ASS_CFLAGS += -O3
else
diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
index 032d66a..3bdf1ad 100644
--- a/contrib/src/ffmpeg/rules.mak
+++ b/contrib/src/ffmpeg/rules.mak
@@ -138,6 +138,10 @@ FFMPEGCONF += --target-os=linux --enable-pic
endif
+ifdef HAVE_ANDROID
+FFMPEGCONF += --disable-mmx --disable-mmxext
+endif
+
# Windows
ifdef HAVE_WIN32
ifndef HAVE_MINGW_W64
diff --git a/contrib/src/mpg123/rules.mak b/contrib/src/mpg123/rules.mak
index 1f90f79..d6afe6c 100644
--- a/contrib/src/mpg123/rules.mak
+++ b/contrib/src/mpg123/rules.mak
@@ -7,6 +7,12 @@ ifeq ($(call need_pkg,"mpg123"),)
PKGS_FOUND += mpg123
endif
+MPG123CONF = $(HOSTCONF)
+
+ifdef HAVE_ANDROID
+MPG123CONF += --with-cpu=generic_fpu
+endif
+
$(TARBALLS)/mpg123-$(MPG123_VERSION).tar.bz2:
$(call download,$(MPG123_URL))
@@ -22,6 +28,6 @@ endif
.mpg123: mpg123
$(RECONF)
- cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
+ cd $< && $(HOSTVARS) ./configure $(MPG123CONF)
cd $< && $(MAKE) install
touch $@
diff --git a/contrib/src/postproc/rules.mak b/contrib/src/postproc/rules.mak
index a132e57..90cdf86 100644
--- a/contrib/src/postproc/rules.mak
+++ b/contrib/src/postproc/rules.mak
@@ -73,6 +73,10 @@ ifdef HAVE_LINUX
POSTPROCCONF += --target-os=linux --enable-pic
endif
+ifdef HAVE_ANDROID
+POSTPROCCONF += --disable-mmx --disable-mmxext
+endif
+
# Windows
ifdef HAVE_WIN32
POSTPROCCONF += --target-os=mingw32
--
2.4.9
More information about the vlc-devel
mailing list