logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

list.lua (1032B)


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