commit: 3441db2f4366273ea4bf6f00b663b95344ea40a0
parent e741f39ad218e529fdb69e3c877ad809ad62b35f
Author: Michael Forney <mforney@mforney.org>
Date: Fri, 16 Feb 2018 01:11:53 -0800
Add ability to build ffmpeg and libass into PIEs
Diffstat:
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/ninja.lua b/ninja.lua
@@ -238,6 +238,10 @@ function cflags(flags)
set('cflags', '$cflags '..table.concat(flags, ' '))
end
+function nasmflags(flags)
+ set('nasmflags', '$nasmflags '..table.concat(flags, ' '))
+end
+
function compile(rule, src, deps, args)
local obj = src..'.o'
if not src:hasprefix('$') then
diff --git a/pkg/ffmpeg/gen.lua b/pkg/ffmpeg/gen.lua
@@ -1,5 +1,4 @@
local arch = 'x86'
-
cflags{
'-Wno-deprecated-declarations',
'-Wno-discarded-qualifiers',
@@ -11,14 +10,17 @@ cflags{
'-I $builddir/pkg/alsa-lib/include',
'-I $builddir/pkg/libressl/include',
}
-
-set('nasmflags', {
+nasmflags{
'-i $srcdir/',
'-i $srcdir/libavcodec/'..arch..'/',
'-i $srcdir/libavutil/'..arch..'/',
'-f elf64',
'-P $outdir/config.asm',
-})
+}
+if config.target.pie then
+ cflags{'-D PIC'}
+ nasmflags{'-D PIC'}
+end
build('awk', '$outdir/config.asm', '$dir/options.h', {
expr=[['{print "%define " substr($$0, length("#define ") + 1)}']],
diff --git a/pkg/libass/gen.lua b/pkg/libass/gen.lua
@@ -3,15 +3,17 @@ cflags{
'-I pkg/freetype/src/include',
'-I $builddir/pkg/fribidi/include',
}
-
-set('nasmflags', {
+nasmflags{
'-D ARCH_X86_64=1',
'-D HAVE_ALIGNED_STACK=1',
'-D HAVE_CPUNOP=0',
'-D private_prefix=ass',
'-i $srcdir/libass/',
'-f elf64',
-})
+}
+if config.target.pie then
+ nasmflags{'-D PIC'}
+end
pkg.hdrs = copy('$outdir/include/ass', '$srcdir/libass', {'ass.h', 'ass_types.h'})
pkg.deps = {