diff options
| author | Michael Forney <mforney@mforney.org> | 2017-09-17 00:03:34 -0700 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2017-09-25 19:23:06 -0700 |
| commit | ba94a8513d9a0aadb3f2c834c74b64aa644c61e8 (patch) | |
| tree | 48ac6c85baa7b9d960b9e1e726a906e61ca60967 /pkg/mpv | |
| parent | cb362b531d79708a259bbf070dee5104fd63df08 (diff) | |
Rewrite ninja generation scripts in Lua
Diffstat (limited to 'pkg/mpv')
| -rw-r--r-- | pkg/mpv/gen.lua | 123 | ||||
| -rw-r--r-- | pkg/mpv/gen.rc | 94 | ||||
| -rw-r--r-- | pkg/mpv/sources.awk | 19 |
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 - } -} |
