master hovercats/oakiss / pkg / ffmpeg / list.lua
 1local optionshdr = arg[1]
 2local type = arg[2]
 3local var = arg[3]
 4
 5local options = {}
 6for line in io.lines(optionshdr) do
 7	local cfg, val = line:match('^#define CONFIG_([%w_]+) (%d)$')
 8	if cfg then
 9		options[cfg] = val == '1'
10	end
11end
12
13print('static const '..type..' *const '..var..'[] = {')
14for line in io.lines() do
15	local name = line:match('^extern .*'..type..' +ff_([%w_]+);$')
16	if name then
17		local cfg
18		if var == 'filter_list' then
19			local i = name:find('_', 1, true)
20			if i then
21				cfg = name:sub(i + 1)..'_filter'
22			end
23		elseif var == 'outdev_list' then
24			if name:sub(-6) == '_muxer' then
25				cfg = name:sub(1, -7)..'_outdev'
26			end
27		elseif var == 'indev_list' then
28			if name:sub(-8) == '_demuxer' then
29				cfg = name:sub(1, -9)..'_indev'
30			end
31		else
32			cfg = name
33		end
34		if cfg and options[cfg:upper()] then
35			print('&ff_'..name..',')
36		end
37	end
38end
39if var == 'filter_list' then
40	print('&ff_asrc_abuffer,')
41	print('&ff_vsrc_buffer,')
42	print('&ff_asink_abuffer,')
43	print('&ff_vsink_buffer,')
44end
45print('NULL};')