summaryrefslogtreecommitdiff
path: root/pkg/ffmpeg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ffmpeg')
-rw-r--r--pkg/ffmpeg/gen.lua342
-rw-r--r--pkg/ffmpeg/gen.rc258
-rw-r--r--pkg/ffmpeg/sources.awk14
3 files changed, 342 insertions, 272 deletions
diff --git a/pkg/ffmpeg/gen.lua b/pkg/ffmpeg/gen.lua
new file mode 100644
index 00000000..fb610a87
--- /dev/null
+++ b/pkg/ffmpeg/gen.lua
@@ -0,0 +1,342 @@
+local arch = 'x86'
+
+cflags{
+ '-Wno-deprecated-declarations',
+ '-Wno-discarded-qualifiers',
+ '-D HAVE_AV_CONFIG_H',
+ '-I $dir',
+ '-I $outdir/include',
+ '-I $outdir/internal',
+ '-I $srcdir',
+ '-I $builddir/pkg/alsa-lib/include',
+ '-I $builddir/pkg/libressl/include',
+}
+
+set('nasmflags', {
+ '-i $srcdir/',
+ '-i $srcdir/libavutil/'..arch..'/',
+ '-f elf64',
+ '-P $outdir/config.asm',
+})
+
+build('awk', '$outdir/config.asm', '$dir/options.h', {
+ expr=[['{print "%define " substr($$0, length("#define ") + 1)}']],
+})
+build('awk', '$outdir/internal/libavcodec/bsf_list.c', {'$dir/options.h', '|', '$dir/bitstream_filters.awk'}, {
+ expr='-f $dir/bitstream_filters.awk',
+})
+build('awk', '$outdir/internal/libavformat/protocol_list.c', {'$dir/options.h', '|', '$dir/protocols.awk'}, {
+ expr='-f $dir/protocols.awk',
+})
+build('awk', '$outdir/include/libavutil/avconfig.h', {'$dir/options.h', '|', '$dir/protocols.awk'}, {
+ expr='-f $dir/avconfig.awk',
+})
+
+rule('ffversion', 'sh $srcdir/version.sh $srcdir $out')
+build('ffversion', '$outdir/include/libavutil/ffversion.h', {'|', '$srcdir/version.sh'})
+
+-- TODO: Copy the rest of the headers.
+pkg.hdrs = {
+ '$outdir/include/libavutil/avconfig.h',
+ '$outdir/include/libavutil/ffversion.h',
+}
+pkg.deps = {
+ '$outdir/config.asm',
+ '$dir/headers',
+ 'pkg/libressl/headers',
+ 'pkg/alsa-lib/headers',
+}
+
+local options = {}
+for line in io.lines(pkg.dir..'/options.h') do
+ local cfg, val = line:match('^#define ([^ ]+) ([^ ]+)')
+ if cfg then
+ options[cfg] = val == '1'
+ end
+end
+local sources = {
+ libavcodec={},
+ libavdevice={},
+ libavfilter={},
+ libavformat={},
+ libavutil={},
+ libswresample={},
+ libswscale={},
+}
+for line in io.lines(pkg.dir..'/sources.txt') do
+ local i = line:find(' ', 1, true)
+ local cfg = line:sub(1, i and i - 1)
+ if options[cfg] then
+ while i do
+ local j = line:find(' ', i + 1)
+ local src = line:sub(i + 1, j and j - 1)
+ i = j
+ j = src:find('/', 1, true)
+ if not j then
+ error('source path has no directory part: '..src)
+ end
+ local k = src:find('/', j + 1, true)
+ if not k or src:sub(j + 1, k - 1) == arch then
+ sources[src:sub(1, j - 1)][src] = true
+ end
+ end
+ end
+end
+for lib, srcs in pairs(sources) do
+ sources[lib] = table.keys(srcs)
+end
+table.insert(pkg.inputs.gen, {
+ '$dir/sources.txt',
+ '$dir/options.h',
+})
+
+cc('libavcodec/bitstream_filters.c', {'$outdir/internal/libavcodec/bsf_list.c'})
+lib('libavcodec.a', {
+ expand{'libavcodec/', {
+ 'allcodecs.c',
+ 'audioconvert.c',
+ 'avdct.c',
+ 'avpacket.c',
+ 'avpicture.c',
+ 'bitstream.c',
+ 'bitstream_filter.c',
+ 'bitstream_filters.c.o',
+ 'bsf.c',
+ 'codec_desc.c',
+ 'd3d11va.c',
+ 'dirac.c',
+ 'dv_profile.c',
+ 'imgconvert.c',
+ 'jni.c',
+ 'mathtables.c',
+ 'mediacodec.c',
+ 'mpeg12framerate.c',
+ 'options.c',
+ 'mjpegenc_huffman.c',
+ 'parser.c',
+ 'profiles.c',
+ 'qsv_api.c',
+ 'raw.c',
+ 'resample.c',
+ 'resample2.c',
+ 'utils.c',
+ 'vorbis_parser.c',
+ 'xiph.c',
+ 'x86/constants.c',
+ }},
+ sources.libavcodec,
+ 'libavutil.a',
+})
+
+lib('libavdevice.a', {
+ expand{'libavdevice/', {
+ 'alldevices.c',
+ 'avdevice.c',
+ 'utils.c',
+ }},
+ sources.libavdevice,
+ 'libavcodec.a.d',
+ 'libavformat.a.d',
+ 'libavutil.a',
+})
+
+lib('libavfilter.a', {
+ expand{'libavfilter/', {
+ 'allfilters.c',
+ 'audio.c',
+ 'avfilter.c',
+ 'avfiltergraph.c',
+ 'buffersink.c',
+ 'buffersrc.c',
+ 'drawutils.c',
+ 'fifo.c',
+ 'formats.c',
+ 'framepool.c',
+ 'framequeue.c',
+ 'graphdump.c',
+ 'graphparser.c',
+ 'opencl_allkernels.c',
+ 'transform.c',
+ 'video.c',
+ }},
+ sources.libavfilter,
+ 'libavutil.a',
+})
+
+cc('libavformat/protocols.c', {'$outdir/internal/libavformat/protocol_list.c'})
+lib('libavformat.a', {
+ expand{'libavformat/', {
+ 'allformats.c',
+ 'avio.c',
+ 'aviobuf.c',
+ 'cutils.c',
+ 'dump.c',
+ 'format.c',
+ 'id3v1.c',
+ 'id3v2.c',
+ 'metadata.c',
+ 'mux.c',
+ 'options.c',
+ 'os_support.c',
+ 'qtpalette.c',
+ 'protocols.c.o',
+ 'riff.c',
+ 'sdp.c',
+ 'url.c',
+ 'utils.c',
+ }},
+ sources.libavformat,
+ 'libavcodec.a.d',
+ 'libavutil.a',
+ '$builddir/pkg/libressl/libssl.a.d',
+})
+
+lib('libavutil.a', {
+ expand{'libavutil/', {
+ 'adler32.c',
+ 'aes.c',
+ 'aes_ctr.c',
+ 'audio_fifo.c',
+ 'avstring.c',
+ 'base64.c',
+ 'blowfish.c',
+ 'bprint.c',
+ 'buffer.c',
+ 'cast5.c',
+ 'camellia.c',
+ 'channel_layout.c',
+ 'color_utils.c',
+ 'cpu.c',
+ 'crc.c',
+ 'des.c',
+ 'dict.c',
+ 'display.c',
+ 'downmix_info.c',
+ 'error.c',
+ 'eval.c',
+ 'fifo.c',
+ 'file.c',
+ 'file_open.c',
+ 'float_dsp.c',
+ 'fixed_dsp.c',
+ 'frame.c',
+ 'hash.c',
+ 'hmac.c',
+ 'hwcontext.c',
+ 'imgutils.c',
+ 'integer.c',
+ 'intmath.c',
+ 'lfg.c',
+ 'lls.c',
+ 'log.c',
+ 'log2_tab.c',
+ 'mathematics.c',
+ 'mastering_display_metadata.c',
+ 'md5.c',
+ 'mem.c',
+ 'murmur3.c',
+ 'opt.c',
+ 'parseutils.c',
+ 'pixdesc.c',
+ 'pixelutils.c',
+ 'random_seed.c',
+ 'rational.c',
+ 'reverse.c',
+ 'rc4.c',
+ 'ripemd.c',
+ 'samplefmt.c',
+ 'sha.c',
+ 'sha512.c',
+ 'spherical.c',
+ 'stereo3d.c',
+ 'threadmessage.c',
+ 'time.c',
+ 'timecode.c',
+ 'tree.c',
+ 'twofish.c',
+ 'utils.c',
+ 'xga_font_data.c',
+ 'xtea.c',
+ 'tea.c',
+ 'x86/cpu.c',
+ 'x86/fixed_dsp_init.c',
+ 'x86/float_dsp_init.c',
+ 'x86/imgutils_init.c',
+ 'x86/lls_init.c',
+ 'x86/cpuid.asm',
+ 'x86/fixed_dsp.asm',
+ 'x86/float_dsp.asm',
+ 'x86/imgutils.asm',
+ 'x86/lls.asm',
+ }},
+ sources.libavutil,
+})
+
+lib('libswresample.a', {
+ expand{'libswresample/', {
+ 'audioconvert.c',
+ 'dither.c',
+ 'options.c',
+ 'rematrix.c',
+ 'resample.c',
+ 'resample_dsp.c',
+ 'swresample.c',
+ 'swresample_frame.c',
+ 'x86/audio_convert.asm',
+ 'x86/rematrix.asm',
+ 'x86/resample.asm',
+ 'x86/audio_convert_init.c',
+ 'x86/rematrix_init.c',
+ 'x86/resample_init.c',
+ }},
+ sources.libswresample,
+ 'libavutil.a',
+})
+
+lib('libswscale.a', {
+ expand{'libswscale/', {
+ 'alphablend.c',
+ 'hscale.c',
+ 'hscale_fast_bilinear.c',
+ 'gamma.c',
+ 'input.c',
+ 'options.c',
+ 'output.c',
+ 'rgb2rgb.c',
+ 'slice.c',
+ 'swscale.c',
+ 'swscale_unscaled.c',
+ 'utils.c',
+ 'yuv2rgb.c',
+ 'vscale.c',
+ 'x86/rgb2rgb.c',
+ 'x86/swscale.c',
+ 'x86/yuv2rgb.c',
+ 'x86/hscale_fast_bilinear_simd.c',
+ 'x86/input.asm',
+ 'x86/output.asm',
+ 'x86/scale.asm',
+ }},
+ sources.libswscale,
+ 'libavutil.a',
+})
+
+local libs = {
+ 'libavcodec.a.d',
+ 'libavdevice.a.d',
+ 'libavfilter.a.d',
+ 'libavformat.a.d',
+ 'libavutil.a',
+ 'libswresample.a.d',
+ 'libswscale.a.d',
+}
+
+cc('cmdutils.c', {'$dir/deps'})
+
+exe('ffprobe', {'ffprobe.c', 'cmdutils.c.o', libs})
+file('bin/ffprobe', '755', '$outdir/ffprobe')
+
+exe('ffmpeg', {'ffmpeg.c', 'ffmpeg_opt.c', 'ffmpeg_filter.c', 'cmdutils.c.o', libs})
+file('bin/ffmpeg', '755', '$outdir/ffmpeg')
+
+fetch 'git'
diff --git a/pkg/ffmpeg/gen.rc b/pkg/ffmpeg/gen.rc
deleted file mode 100644
index 2f0d1010..00000000
--- a/pkg/ffmpeg/gen.rc
+++ /dev/null
@@ -1,258 +0,0 @@
-arch=x86
-
-cflags\
- -Wno-deprecated-declarations\
- -Wno-discarded-qualifiers\
- -D HAVE_AV_CONFIG_H\
- -I '$dir' \
- -I '$outdir'/include\
- -I '$outdir'/internal\
- -I '$srcdir' \
- -I '$builddir'/pkg/alsa-lib/include\
- -I '$builddir'/pkg/libressl/include
-
-set nasmflags\
- -i '$srcdir'/\
- -i '$srcdir'/libavutil/$arch/\
- -f elf64\
- -P '$outdir'/config.asm
-
-gen_inputs='$dir'/^(sources.awk sources.txt options.h)
-
-build '$outdir'/config.asm awk '$dir'/options.h ; with\
- expr '''{print "%define " substr($$0, length("#define ") + 1)}'''
-build '$outdir'/internal/libavcodec/bsf_list.c awk '$dir'/options.h '|' '$dir'/bitstream_filters.awk ; with\
- expr '-f $dir/bitstream_filters.awk'
-build '$outdir'/internal/libavformat/protocol_list.c awk '$dir'/options.h '|' '$dir'/protocols.awk ; with\
- expr '-f $dir/protocols.awk'
-build '$outdir'/include/libavutil/avconfig.h awk '$dir'/options.h ; with\
- expr '-f $dir/avconfig.awk'
-
-rule ffversion 'sh $srcdir/version.sh $srcdir $out'
-build '$outdir'/include/libavutil/ffversion.h ffversion '|' '$srcdir'/version.sh
-
-# TODO: Copy the rest of the headers.
-phony headers '$outdir'/include/libavutil/^(avconfig.h ffversion.h)
-
-phony deps\
- '$outdir'/config.asm\
- ('$dir' pkg/libressl pkg/alsa-lib)^/headers
-
-fn fflib {
- name=$1 srcs=() libs=()
- shift
- for(src) switch($src) {
- case *.[ad]
- libs=($libs $src)
- case $arch/*
- srcs=($srcs $src)
- case */*
- case *
- srcs=($srcs $src)
- }
- srcs=($srcs `{awk -f sources.awk 'lib='$name 'sources='sources.txt 'arch='$arch options.h | sort -u})
- checkstatus
- lib $name.a -d '$dir'/deps $name/$srcs $libs
-}
-
-cc libavcodec/bitstream_filters.c '||' '$outdir'/internal/libavcodec/bsf_list.c
-fflib libavcodec\
- allcodecs.c\
- audioconvert.c\
- avdct.c\
- avpacket.c\
- avpicture.c\
- bitstream.c\
- bitstream_filter.c\
- bitstream_filters.c.o\
- bsf.c\
- codec_desc.c\
- d3d11va.c\
- dirac.c\
- dv_profile.c\
- imgconvert.c\
- jni.c\
- mathtables.c\
- mediacodec.c\
- mpeg12framerate.c\
- options.c\
- mjpegenc_huffman.c\
- parser.c\
- profiles.c\
- qsv_api.c\
- raw.c\
- resample.c\
- resample2.c\
- utils.c\
- vorbis_parser.c\
- xiph.c\
- x86/constants.c\
- libavutil.a
-
-fflib libavdevice alldevices.c avdevice.c utils.c\
- libavcodec.a.d libavformat.a.d libavutil.a
-
-fflib libavfilter\
- allfilters.c\
- audio.c\
- avfilter.c\
- avfiltergraph.c\
- buffersink.c\
- buffersrc.c\
- drawutils.c\
- fifo.c\
- formats.c\
- framepool.c\
- framequeue.c\
- graphdump.c\
- graphparser.c\
- opencl_allkernels.c\
- transform.c\
- video.c\
- libavutil.a
-
-cc libavformat/protocols.c '||' '$outdir'/internal/libavformat/protocol_list.c
-fflib libavformat\
- allformats.c\
- avio.c\
- aviobuf.c\
- cutils.c\
- dump.c\
- format.c\
- id3v1.c\
- id3v2.c\
- metadata.c\
- mux.c\
- options.c\
- os_support.c\
- qtpalette.c\
- protocols.c.o\
- riff.c\
- sdp.c\
- url.c\
- utils.c\
- libavcodec.a.d libavutil.a\
- '$builddir'/pkg/libressl/libssl.a.d
-
-fflib libavutil\
- adler32.c\
- aes.c\
- aes_ctr.c\
- audio_fifo.c\
- avstring.c\
- base64.c\
- blowfish.c\
- bprint.c\
- buffer.c\
- cast5.c\
- camellia.c\
- channel_layout.c\
- color_utils.c\
- cpu.c\
- crc.c\
- des.c\
- dict.c\
- display.c\
- downmix_info.c\
- error.c\
- eval.c\
- fifo.c\
- file.c\
- file_open.c\
- float_dsp.c\
- fixed_dsp.c\
- frame.c\
- hash.c\
- hmac.c\
- hwcontext.c\
- imgutils.c\
- integer.c\
- intmath.c\
- lfg.c\
- lls.c\
- log.c\
- log2_tab.c\
- mathematics.c\
- mastering_display_metadata.c\
- md5.c\
- mem.c\
- murmur3.c\
- opt.c\
- parseutils.c\
- pixdesc.c\
- pixelutils.c\
- random_seed.c\
- rational.c\
- reverse.c\
- rc4.c\
- ripemd.c\
- samplefmt.c\
- sha.c\
- sha512.c\
- spherical.c\
- stereo3d.c\
- threadmessage.c\
- time.c\
- timecode.c\
- tree.c\
- twofish.c\
- utils.c\
- xga_font_data.c\
- xtea.c\
- tea.c\
- x86/^(\
- cpu.c fixed_dsp_init.c float_dsp_init.c imgutils_init.c lls_init.c\
- cpuid.asm fixed_dsp.asm float_dsp.asm imgutils.asm lls.asm\
- )
-
-fflib libswresample\
- audioconvert.c\
- dither.c\
- options.c\
- rematrix.c\
- resample.c\
- resample_dsp.c\
- swresample.c\
- swresample_frame.c\
- x86/^(\
- audio_convert.asm rematrix.asm resample.asm\
- audio_convert_init.c rematrix_init.c resample_init.c\
- )\
- libavutil.a
-
-fflib libswscale\
- alphablend.c\
- hscale.c\
- hscale_fast_bilinear.c\
- gamma.c\
- input.c\
- options.c\
- output.c\
- rgb2rgb.c\
- slice.c\
- swscale.c\
- swscale_unscaled.c\
- utils.c\
- yuv2rgb.c\
- vscale.c\
- x86/^(\
- rgb2rgb.c swscale.c yuv2rgb.c\
- hscale_fast_bilinear_simd.c\
- input.asm output.asm scale.asm\
- )\
- libavutil.a
-
-libs=(\
- libavcodec.a.d libavdevice.a.d libavfilter.a.d libavformat.a.d libavutil.a\
- libswresample.a.d libswscale.a.d\
-)
-
-cc cmdutils.c '||' '$dir'/deps
-
-exe ffprobe -d '$dir'/deps ffprobe.c cmdutils.c.o $libs
-file bin/ffprobe '$outdir'/ffprobe 755
-
-exe ffmpeg -d '$dir'/deps ffmpeg.c ffmpeg_opt.c ffmpeg_filter.c cmdutils.c.o $libs
-file bin/ffmpeg '$outdir'/ffmpeg 755
-
-fetch git
diff --git a/pkg/ffmpeg/sources.awk b/pkg/ffmpeg/sources.awk
deleted file mode 100644
index 1688cb5f..00000000
--- a/pkg/ffmpeg/sources.awk
+++ /dev/null
@@ -1,14 +0,0 @@
-/^#define/ && $3 {
- cfg[$2] = 1
-}
-
-END {
- while (getline < sources) {
- if (!cfg[$1])
- continue
- for (i = 2; i <= NF; ++i) {
- if (match($i, "^" lib "/(" arch "/)?[^/]*$"))
- print substr($i, length(lib) + 2)
- }
- }
-}