[vlc-commits] build: disable non-PIC assembly when building for	Android/x86
    Diego Elio Pettenò 
    git at videolan.org
       
    Tue Dec  8 10:32:30 CET 2015
    
    
  
vlc | branch: master | Diego Elio Pettenò <flameeyes at flameeyes.eu> | Sun Dec  6 11:04:07 2015 +0000| [dd225aba266ce126f82d3979dc87b77d59cac564] | committer: Jean-Baptiste Kempf
build: disable non-PIC assembly when building for Android/x86
This disables MMX/MMXEXT code for ffmpeg/postproc, and all assembly for
mpg123 and libass, if building for Android on x86 (32-bit).
It has performance implications but it avoids all TEXTRELs in the output,
which makes it possible to use W^X hardening 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>
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dd225aba266ce126f82d3979dc87b77d59cac564
---
 contrib/src/ass/rules.mak      |    7 +++++++
 contrib/src/ffmpeg/rules.mak   |    6 ++++++
 contrib/src/mpg123/rules.mak   |   10 +++++++++-
 contrib/src/postproc/rules.mak |    6 ++++++
 4 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/contrib/src/ass/rules.mak b/contrib/src/ass/rules.mak
index a9c2603..8793e42 100644
--- a/contrib/src/ass/rules.mak
+++ b/contrib/src/ass/rules.mak
@@ -10,6 +10,9 @@ endif
 ifdef HAVE_ANDROID
 WITH_FONTCONFIG = 0
 WITH_HARFBUZZ = 0
+ifeq ($(ANDROID_ABI), x86)
+WITH_ASS_ASM = 0
+endif
 else
 ifdef HAVE_TIZEN
 WITH_FONTCONFIG = 0
@@ -59,6 +62,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..0a7ca77 100644
--- a/contrib/src/ffmpeg/rules.mak
+++ b/contrib/src/ffmpeg/rules.mak
@@ -138,6 +138,12 @@ FFMPEGCONF += --target-os=linux --enable-pic
 
 endif
 
+ifdef HAVE_ANDROID
+ifeq ($(ANDROID_ABI), x86)
+FFMPEGCONF +=  --disable-mmx --disable-mmxext
+endif
+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..4ff3322 100644
--- a/contrib/src/mpg123/rules.mak
+++ b/contrib/src/mpg123/rules.mak
@@ -7,6 +7,14 @@ ifeq ($(call need_pkg,"mpg123"),)
 PKGS_FOUND += mpg123
 endif
 
+MPG123CONF = $(HOSTCONF)
+
+ifdef HAVE_ANDROID
+ifeq ($(ANDROID_ABI), x86)
+MPG123CONF += --with-cpu=generic_fpu
+endif
+endif
+
 $(TARBALLS)/mpg123-$(MPG123_VERSION).tar.bz2:
 	$(call download,$(MPG123_URL))
 
@@ -22,6 +30,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..125af48 100644
--- a/contrib/src/postproc/rules.mak
+++ b/contrib/src/postproc/rules.mak
@@ -73,6 +73,12 @@ ifdef HAVE_LINUX
 POSTPROCCONF += --target-os=linux --enable-pic
 endif
 
+ifdef HAVE_ANDROID
+ifeq ($(ANDROID_ABI), x86)
+POSTPROCCONF +=  --disable-mmx --disable-mmxext
+endif
+endif
+
 # Windows
 ifdef HAVE_WIN32
 POSTPROCCONF += --target-os=mingw32
    
    
More information about the vlc-commits
mailing list