summaryrefslogtreecommitdiff
path: root/pkg/mpv
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2017-09-17 00:03:34 -0700
committerMichael Forney <mforney@mforney.org>2017-09-25 19:23:06 -0700
commitba94a8513d9a0aadb3f2c834c74b64aa644c61e8 (patch)
tree48ac6c85baa7b9d960b9e1e726a906e61ca60967 /pkg/mpv
parentcb362b531d79708a259bbf070dee5104fd63df08 (diff)
Rewrite ninja generation scripts in Lua
Diffstat (limited to 'pkg/mpv')
-rw-r--r--pkg/mpv/gen.lua123
-rw-r--r--pkg/mpv/gen.rc94
-rw-r--r--pkg/mpv/sources.awk19
3 files changed, 123 insertions, 113 deletions
diff --git a/pkg/mpv/gen.lua b/pkg/mpv/gen.lua
new file mode 100644
index 00000000..5d77a98b
--- /dev/null
+++ b/pkg/mpv/gen.lua
@@ -0,0 +1,123 @@
+rule('versionhdr', 'sh $srcdir/version.sh --cwd=$srcdir --versionh=$out')
+build('versionhdr', '$outdir/version.h', {'|', '$srcdir/version.sh'})
+
+sub('tools.ninja', function()
+ toolchain 'host'
+ set('srcdir', '$dir')
+ exe('file2string', {'file2string.c'})
+end)
+
+cflags{
+ '-D _GNU_SOURCE',
+ '-I $dir',
+ '-I $outdir',
+ '-I $srcdir',
+ '-I pkg/ffmpeg/src',
+ '-I $builddir/pkg/ffmpeg/include',
+ '-I $builddir/pkg/zlib/include',
+}
+local libs = {
+ 'ffmpeg/libavcodec.a.d',
+ 'ffmpeg/libavdevice.a.d',
+ 'ffmpeg/libavfilter.a.d',
+ 'ffmpeg/libavformat.a.d',
+ 'ffmpeg/libavutil.a',
+ 'ffmpeg/libswresample.a.d',
+ 'ffmpeg/libswscale.a.d',
+ 'zlib/libz.a',
+}
+pkg.deps = {
+ '$outdir/version.h',
+ 'pkg/ffmpeg/headers',
+ 'pkg/zlib/headers',
+}
+
+rule('file2string', '$outdir/file2string $in >$out.tmp && mv $out.tmp $out')
+function file2string(out, inp)
+ build('file2string', '$outdir/'..out, {'$srcdir/'..inp, '|', '$outdir/file2string'})
+ table.insert(pkg.deps, '$outdir/'..out)
+end
+
+file2string('input/input_conf.h', 'etc/input.conf')
+file2string('player/builtin_conf.inc', 'etc/builtin.conf')
+file2string('sub/osd_font.h', 'sub/osd_font.otf')
+for _, f in ipairs{'assdraw', 'defaults', 'options', 'osc', 'ytdl_hook'} do
+ file2string('player/lua/'..f..'.inc', 'player/lua/'..f..'.lua')
+end
+
+local options = {}
+for line in io.lines(pkg.dir..'/config.h') do
+ local var, val = line:match('^#define ([^ ]+) ([^ ]+)')
+ if var and val == '1' then
+ options[var] = true
+ end
+end
+local sources = {}
+for line in io.lines(pkg.dir..'/sources.txt') do
+ local i = line:find(' ', 1, true)
+ local add = true
+ if i then
+ local var = line:sub(i + 1):upper():gsub('-', '_')
+ local neg = var:sub(1, 1) == '!'
+ if neg then
+ var = var:sub(2)
+ end
+ add = options['HAVE_'..var] or false ~= neg
+ end
+ if add then
+ sources[line:sub(1, i and i - 1)] = true
+ end
+end
+sources = table.keys(sources)
+table.insert(pkg.inputs.gen, {'$dir/config.h', '$dir/sources.txt'})
+
+if options['HAVE_ALSA'] then
+ cflags{'-I $builddir/pkg/alsa-lib/include'}
+ table.insert(libs, 'alsa-lib/libasound.a')
+ table.insert(pkg.deps, 'pkg/alsa-lib/headers')
+end
+if options['HAVE_DRM'] then
+ cflags{
+ '-I pkg/libdrm/src',
+ '-I pkg/libdrm/src/include/drm',
+ }
+ table.insert(libs, 'libdrm/libdrm.a')
+ table.insert(pkg.deps, '$builddir/pkg/libdrm/fetch.stamp')
+end
+if options['HAVE_LIBASS'] then
+ cflags{'-I $builddir/pkg/libass/include'}
+ table.insert(libs, 'libass/libass.a.d')
+ table.insert(pkg.deps, 'pkg/libass/headers')
+end
+if options['HAVE_LUA'] then
+ cflags{'-I pkg/lua/src/src'}
+ table.insert(libs, 'lua/liblua.a')
+ table.insert(pkg.deps, '$builddir/pkg/lua/fetch.stamp')
+end
+if options['HAVE_WAYLAND'] then
+ cflags{
+ '-I $builddir/pkg/wayland/include',
+ '-I pkg/libxkbcommon/src',
+ }
+ table.insert(libs, {
+ 'wayland/libwayland-client.a.d',
+ 'wayland/libwayland-cursor.a.d',
+ 'libxkbcommon/libxkbcommon.a',
+ })
+ table.insert(pkg.deps, {
+ 'pkg/wayland/headers',
+ '$builddir/pkg/libxkbcommon/fetch.stamp',
+ })
+end
+
+exe('mpv', {
+ 'ta/ta.c',
+ 'ta/ta_talloc.c',
+ 'ta/ta_utils.c',
+ sources,
+ expand{'$builddir/pkg/', libs},
+})
+file('bin/mpv', '755', '$outdir/mpv')
+man{'DOCS/man/mpv.1'}
+
+fetch 'git'
diff --git a/pkg/mpv/gen.rc b/pkg/mpv/gen.rc
deleted file mode 100644
index 5ba8eb3e..00000000
--- a/pkg/mpv/gen.rc
+++ /dev/null
@@ -1,94 +0,0 @@
-cflags=(\
- -D _GNU_SOURCE\
- -I '$dir' \
- -I '$outdir' \
- -I '$srcdir' \
- -I pkg/ffmpeg/src\
- -I '$builddir'/pkg/ffmpeg/include\
- -I '$builddir'/pkg/zlib/include\
-)
-
-srcs=(\
- ta/^(ta.c ta_talloc.c ta_utils.c)\
- `{awk -f sources.awk 'sources=sources.txt' config.h}\
-)
-checkstatus
-
-libs=(\
- ffmpeg/^(\
- libavcodec.a.d\
- libavdevice.a.d\
- libavfilter.a.d\
- libavformat.a.d\
- libavutil.a\
- libswresample.a.d\
- libswscale.a.d\
- )\
- zlib/libz.a\
-)
-
-deps=('$outdir'/version.h pkg/^(zlib ffmpeg)^/headers)
-
-rule versionhdr 'sh $srcdir/version.sh --cwd=$srcdir --versionh=$out'
-build '$outdir'/version.h versionhdr '|' '$srcdir'/version.sh
-
-{
- toolchain host
- set srcdir '$dir'
- exe file2string file2string.c
-} >tools.ninja ; subninja tools.ninja
-
-rule file2string '$outdir/file2string $in >$out.tmp && mv $out.tmp $out'
-
-fn file2string {
- build '$outdir'/$1 file2string '$srcdir'/$2 '|' '$outdir'/file2string
- deps=($deps '$outdir'/$1)
-}
-
-file2string input/input_conf.h etc/input.conf
-file2string player/builtin_conf.inc etc/builtin.conf
-file2string sub/osd_font.h sub/osd_font.otf
-for(f in assdraw defaults options osc ytdl_hook)
- file2string player/lua/$f.inc player/lua/$f.lua
-
-if(grep -qF 'HAVE_ALSA 1' config.h) {
- cflags=($cflags -I '$builddir'/pkg/alsa-lib/include)
- libs=($libs alsa-lib/libasound.a)
- deps=($deps pkg/alsa-lib/headers)
-}
-if(grep -qF 'HAVE_DRM 1' config.h) {
- cflags=($cflags '-I pkg/libdrm/'^(src src/include/drm))
- libs=($libs libdrm/libdrm.a)
- deps=($deps '$builddir'/pkg/libdrm/fetch.stamp)
-}
-if(grep -qF 'HAVE_LIBASS 1' config.h) {
- cflags=($cflags -I '$builddir'/pkg/libass/include)
- libs=($libs libass/libass.a.d)
- deps=($deps pkg/libass/headers)
-}
-if(grep -qF 'HAVE_LUA 1' config.h) {
- cflags=($cflags -I pkg/lua/src/src)
- libs=($libs lua/liblua.a)
- deps=($deps '$builddir'/pkg/lua/fetch.stamp)
-}
-if(grep -qF 'HAVE_WAYLAND 1' config.h) {
- cflags=($cflags\
- -I '$builddir'/pkg/wayland/include\
- -I pkg/libxkbcommon/src\
- )
- libs=($libs\
- wayland/libwayland-^(client cursor)^.a.d\
- libxkbcommon/libxkbcommon.a\
- )
- deps=($deps pkg/wayland/headers '$builddir'/pkg/libxkbcommon/fetch.stamp)
-}
-
-cflags $cflags
-phony deps $deps
-
-exe mpv -d '$dir'/deps $srcs '$builddir'/pkg/$libs
-file bin/mpv '$outdir'/mpv 755
-man -d DOCS/man 1 mpv.1
-
-gen_inputs='$dir'/^(sources.awk sources.txt config.h)
-fetch git
diff --git a/pkg/mpv/sources.awk b/pkg/mpv/sources.awk
deleted file mode 100644
index 622d74b3..00000000
--- a/pkg/mpv/sources.awk
+++ /dev/null
@@ -1,19 +0,0 @@
-# usage: awk -f sources.awk sources=sources.txt config.h
-
-$1 == "#define" && $3 ~ /[01]/ {
- cfg[$2] = $3
-}
-
-END {
- while (getline < sources) {
- if (NF == 2) {
- var = toupper($2)
- gsub("-", "_", var)
- if (neg = var ~ /^!/)
- var = substr(var, 2)
- if (cfg["HAVE_" var] == neg)
- continue
- }
- print $1
- }
-}