logo

oasis

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

gen.lua (10177B)


  1. build('awk', '$outdir/version.h', {'$srcdir/VERSION', '|', '$dir/version.awk'}, {
  2. expr='-f $dir/version.awk',
  3. })
  4. sub('tools.ninja', function()
  5. toolchain(config.host)
  6. set('srcdir', '$dir')
  7. exe('file2string', {'file2string.c'})
  8. end)
  9. cflags{
  10. '-D _GNU_SOURCE',
  11. '-I $dir',
  12. '-I $outdir',
  13. '-I $srcdir',
  14. '-isystem $basedir/pkg/ffmpeg/src',
  15. '-isystem $builddir/pkg/ffmpeg/include',
  16. '-isystem $builddir/pkg/libplacebo/include',
  17. '-isystem $builddir/pkg/linux-headers/include',
  18. '-isystem $builddir/pkg/zlib/include',
  19. }
  20. local libs = {
  21. 'ffmpeg/libavcodec.a.d',
  22. 'ffmpeg/libavdevice.a.d',
  23. 'ffmpeg/libavfilter.a.d',
  24. 'ffmpeg/libavformat.a.d',
  25. 'ffmpeg/libavutil.a',
  26. 'ffmpeg/libswresample.a.d',
  27. 'ffmpeg/libswscale.a.d',
  28. 'libplacebo/libplacebo.a',
  29. 'zlib/libz.a',
  30. }
  31. pkg.deps = {
  32. '$outdir/version.h',
  33. 'pkg/ffmpeg/headers',
  34. 'pkg/ffmpeg/fetch',
  35. 'pkg/libplacebo/headers',
  36. 'pkg/linux-headers/headers',
  37. 'pkg/zlib/headers',
  38. }
  39. build('copy', '$outdir/content-type-v1.h', '$builddir/pkg/wayland-protocols/include/content-type-v1-client-protocol.h')
  40. build('copy', '$outdir/fractional-scale-v1.h', '$builddir/pkg/wayland-protocols/include/fractional-scale-v1-client-protocol.h')
  41. build('copy', '$outdir/idle-inhibit-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/idle-inhibit-unstable-v1-client-protocol.h')
  42. build('copy', '$outdir/linux-dmabuf-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/linux-dmabuf-unstable-v1-client-protocol.h')
  43. build('copy', '$outdir/presentation-time.h', '$builddir/pkg/wayland-protocols/include/presentation-time-client-protocol.h')
  44. build('copy', '$outdir/single-pixel-buffer-v1.h', '$builddir/pkg/wayland-protocols/include/single-pixel-buffer-v1-client-protocol.h')
  45. build('copy', '$outdir/viewporter.h', '$builddir/pkg/wayland-protocols/include/viewporter-client-protocol.h')
  46. build('copy', '$outdir/xdg-decoration-unstable-v1.h', '$builddir/pkg/wayland-protocols/include/xdg-decoration-unstable-v1-client-protocol.h')
  47. build('copy', '$outdir/xdg-shell.h', '$builddir/pkg/wayland-protocols/include/xdg-shell-client-protocol.h')
  48. rule('file2string', '$outdir/file2string $in >$out')
  49. local function file2string(src)
  50. local out = '$outdir/'..src..'.inc'
  51. build('file2string', out, {'$srcdir/'..src, '|', '$outdir/file2string'})
  52. table.insert(pkg.deps, out)
  53. end
  54. file2string('etc/input.conf')
  55. file2string('etc/builtin.conf')
  56. file2string('sub/osd_font.otf')
  57. local lua = {
  58. 'defaults.lua', 'assdraw.lua', 'options.lua', 'osc.lua',
  59. 'ytdl_hook.lua', 'stats.lua', 'console.lua', 'auto_profiles.lua',
  60. 'input.lua',
  61. }
  62. for _, f in ipairs(lua) do
  63. file2string('player/lua/'..f)
  64. end
  65. local options = {}
  66. for line in iterlines('config.h', 1) do
  67. local var, val = line:match('^#define ([^ ]+) ([^ ]+)')
  68. if var and val == '1' then
  69. options[var] = true
  70. end
  71. end
  72. table.insert(pkg.inputs.gen, '$dir/config.h')
  73. local srcs = {
  74. -- src/meson.build:/^sources =/
  75. 'audio/aframe.c',
  76. 'audio/chmap.c',
  77. 'audio/chmap_sel.c',
  78. 'audio/decode/ad_lavc.c',
  79. 'audio/decode/ad_spdif.c',
  80. 'audio/filter/af_drop.c',
  81. 'audio/filter/af_format.c',
  82. 'audio/filter/af_lavcac3enc.c',
  83. 'audio/filter/af_scaletempo.c',
  84. 'audio/filter/af_scaletempo2.c',
  85. 'audio/filter/af_scaletempo2_internals.c',
  86. 'audio/fmt-conversion.c',
  87. 'audio/format.c',
  88. 'audio/out/ao.c',
  89. 'audio/out/ao_lavc.c',
  90. 'audio/out/ao_null.c',
  91. 'audio/out/ao_pcm.c',
  92. 'audio/out/buffer.c',
  93. 'common/av_common.c',
  94. 'common/av_log.c',
  95. 'common/codecs.c',
  96. 'common/common.c',
  97. 'common/encode_lavc.c',
  98. 'common/msg.c',
  99. 'common/playlist.c',
  100. 'common/recorder.c',
  101. 'common/stats.c',
  102. 'common/tags.c',
  103. 'common/version.c',
  104. 'demux/codec_tags.c',
  105. 'demux/cue.c',
  106. 'demux/cache.c',
  107. 'demux/demux.c',
  108. 'demux/demux_cue.c',
  109. 'demux/demux_disc.c',
  110. 'demux/demux_edl.c',
  111. 'demux/demux_lavf.c',
  112. 'demux/demux_mf.c',
  113. 'demux/demux_mkv.c',
  114. 'demux/demux_mkv_timeline.c',
  115. 'demux/demux_null.c',
  116. 'demux/demux_playlist.c',
  117. 'demux/demux_raw.c',
  118. 'demux/demux_timeline.c',
  119. 'demux/ebml.c',
  120. 'demux/packet.c',
  121. 'demux/timeline.c',
  122. 'filters/f_async_queue.c',
  123. 'filters/f_autoconvert.c',
  124. 'filters/f_auto_filters.c',
  125. 'filters/f_decoder_wrapper.c',
  126. 'filters/f_demux_in.c',
  127. 'filters/f_hwtransfer.c',
  128. 'filters/f_lavfi.c',
  129. 'filters/f_output_chain.c',
  130. 'filters/f_swresample.c',
  131. 'filters/f_swscale.c',
  132. 'filters/f_utils.c',
  133. 'filters/filter.c',
  134. 'filters/frame.c',
  135. 'filters/user_filters.c',
  136. 'input/cmd.c',
  137. 'input/event.c',
  138. 'input/input.c',
  139. 'input/ipc.c',
  140. 'input/keycodes.c',
  141. 'misc/bstr.c',
  142. 'misc/charset_conv.c',
  143. 'misc/dispatch.c',
  144. 'misc/io_utils.c',
  145. 'misc/json.c',
  146. 'misc/language.c',
  147. 'misc/natural_sort.c',
  148. 'misc/node.c',
  149. 'misc/path_utils.c',
  150. 'misc/random.c',
  151. 'misc/rendezvous.c',
  152. 'misc/thread_pool.c',
  153. 'misc/thread_tools.c',
  154. 'options/m_config_core.c',
  155. 'options/m_config_frontend.c',
  156. 'options/m_option.c',
  157. 'options/m_property.c',
  158. 'options/options.c',
  159. 'options/parse_commandline.c',
  160. 'options/parse_configfile.c',
  161. 'options/path.c',
  162. 'player/audio.c',
  163. 'player/client.c',
  164. 'player/command.c',
  165. 'player/configfiles.c',
  166. 'player/external_files.c',
  167. 'player/loadfile.c',
  168. 'player/main.c',
  169. 'player/misc.c',
  170. 'player/osd.c',
  171. 'player/playloop.c',
  172. 'player/screenshot.c',
  173. 'player/scripting.c',
  174. 'player/sub.c',
  175. 'player/video.c',
  176. 'stream/cookies.c',
  177. 'stream/stream.c',
  178. 'stream/stream_avdevice.c',
  179. 'stream/stream_cb.c',
  180. 'stream/stream_concat.c',
  181. 'stream/stream_edl.c',
  182. 'stream/stream_file.c',
  183. 'stream/stream_lavf.c',
  184. 'stream/stream_memory.c',
  185. 'stream/stream_mf.c',
  186. 'stream/stream_null.c',
  187. 'stream/stream_slice.c',
  188. 'sub/ass_mp.c',
  189. 'sub/dec_sub.c',
  190. 'sub/draw_bmp.c',
  191. 'sub/filter_sdh.c',
  192. 'sub/img_convert.c',
  193. 'sub/lavc_conv.c',
  194. 'sub/osd.c',
  195. 'sub/osd_libass.c',
  196. 'sub/sd_ass.c',
  197. 'sub/sd_lavc.c',
  198. 'video/csputils.c',
  199. 'video/decode/vd_lavc.c',
  200. 'video/filter/refqueue.c',
  201. 'video/filter/vf_format.c',
  202. 'video/filter/vf_sub.c',
  203. 'video/fmt-conversion.c',
  204. 'video/hwdec.c',
  205. 'video/image_loader.c',
  206. 'video/image_writer.c',
  207. 'video/img_format.c',
  208. 'video/mp_image.c',
  209. 'video/mp_image_pool.c',
  210. 'video/out/aspect.c',
  211. 'video/out/bitmap_packer.c',
  212. 'video/out/dither.c',
  213. 'video/out/dr_helper.c',
  214. 'video/out/filter_kernels.c',
  215. --'video/out/gpu/context.c',
  216. --'video/out/gpu/error_diffusion.c',
  217. 'video/out/gpu/hwdec.c',
  218. --'video/out/gpu/lcms.c',
  219. --'video/out/gpu/libmpv_gpu.c',
  220. --'video/out/gpu/osd.c',
  221. 'video/out/gpu/ra.c',
  222. --'video/out/gpu/shader_cache.c',
  223. --'video/out/gpu/spirv.c',
  224. --'video/out/gpu/user_shaders.c',
  225. --'video/out/gpu/utils.c',
  226. --'video/out/gpu/video.c',
  227. --'video/out/gpu/video_shaders.c',
  228. 'video/out/libmpv_sw.c',
  229. 'video/out/vo.c',
  230. --'video/out/vo_gpu.c',
  231. 'video/out/vo_image.c',
  232. 'video/out/vo_lavc.c',
  233. 'video/out/vo_libmpv.c',
  234. 'video/out/vo_null.c',
  235. 'video/out/vo_tct.c',
  236. 'video/out/vo_kitty.c',
  237. 'video/out/win_state.c',
  238. 'video/repack.c',
  239. 'video/sws_utils.c',
  240. --'video/out/placebo/ra_pl.c',
  241. --'video/out/placebo/utils.c',
  242. --'video/out/vo_gpu_next.c',
  243. --'video/out/gpu_next/context.c',
  244. 'osdep/io.c',
  245. 'osdep/semaphore-mac.c',
  246. 'osdep/subprocess.c',
  247. 'osdep/timer.c',
  248. 'ta/ta.c',
  249. 'ta/ta_talloc.c',
  250. 'ta/ta_utils.c',
  251. 'osdep/language-posix.c',
  252. 'osdep/subprocess-posix.c',
  253. 'osdep/threads-posix.c',
  254. 'osdep/path-unix.c',
  255. 'osdep/terminal-unix.c',
  256. 'osdep/timer-linux.c',
  257. 'input/ipc-unix.c',
  258. 'osdep/poll_wrapper.c',
  259. 'sub/filter_regex.c',
  260. }
  261. if options.HAVE_AV_CHANNEL_LAYOUT then
  262. table.insert(srcs, 'audio/chmap_avchannel.c')
  263. end
  264. if options.HAVE_ALSA then
  265. cflags{'-isystem $builddir/pkg/alsa-lib/include'}
  266. table.insert(srcs, 'audio/out/ao_alsa.c')
  267. table.insert(libs, 'alsa-lib/libasound.a')
  268. table.insert(pkg.deps, 'pkg/alsa-lib/headers')
  269. end
  270. if options.HAVE_SNDIO then
  271. cflags{'-isystem $builddir/pkg/sndio/include'}
  272. table.insert(srcs, 'audio/out/ao_sndio.c')
  273. table.insert(libs, 'sndio/libsndio.a')
  274. table.insert(pkg.deps, 'pkg/sndio/headers')
  275. end
  276. if options.HAVE_DRM then
  277. cflags{'-isystem $builddir/pkg/libdrm/include'}
  278. table.insert(srcs, {
  279. 'video/drmprime.c',
  280. 'video/out/drm_atomic.c',
  281. 'video/out/drm_common.c',
  282. 'video/out/drm_prime.c',
  283. 'video/out/hwdec/hwdec_drmprime.c',
  284. 'video/out/hwdec/hwdec_drmprime_overlay.c',
  285. 'video/out/vo_drm.c',
  286. })
  287. table.insert(libs, 'libdrm/libdrm.a')
  288. table.insert(pkg.deps, 'pkg/libdrm/headers')
  289. end
  290. if options.HAVE_LIBASS then
  291. cflags{'-isystem $builddir/pkg/libass/include'}
  292. table.insert(libs, 'libass/libass.a.d')
  293. table.insert(pkg.deps, 'pkg/libass/headers')
  294. end
  295. if options.HAVE_LUA then
  296. cflags{'-isystem $builddir/pkg/lua/include'}
  297. table.insert(srcs, 'player/lua.c')
  298. table.insert(libs, 'lua/liblua.a')
  299. table.insert(pkg.deps, 'pkg/lua/headers')
  300. end
  301. if options.HAVE_WAYLAND or options.HAVE_DRM then
  302. table.insert(srcs, 'video/out/present_sync.c')
  303. end
  304. if options.HAVE_WAYLAND then
  305. cflags{
  306. '-isystem $builddir/pkg/libxkbcommon/include',
  307. '-isystem $builddir/pkg/wayland/include',
  308. }
  309. table.insert(srcs, {
  310. 'video/out/vo_wlshm.c',
  311. 'video/out/wayland_common.c',
  312. '$builddir/pkg/wayland-protocols/content-type-v1-protocol.c.o',
  313. '$builddir/pkg/wayland-protocols/fractional-scale-v1-protocol.c.o',
  314. '$builddir/pkg/wayland-protocols/idle-inhibit-unstable-v1-protocol.c.o',
  315. '$builddir/pkg/wayland-protocols/linux-dmabuf-unstable-v1-protocol.c.o',
  316. '$builddir/pkg/wayland-protocols/single-pixel-buffer-v1-protocol.c.o',
  317. '$builddir/pkg/wayland-protocols/presentation-time-protocol.c.o',
  318. '$builddir/pkg/wayland-protocols/viewporter-protocol.c.o',
  319. '$builddir/pkg/wayland-protocols/xdg-decoration-unstable-v1-protocol.c.o',
  320. '$builddir/pkg/wayland-protocols/xdg-shell-protocol.c.o',
  321. })
  322. table.insert(libs, {
  323. 'wayland/libwayland-client.a.d',
  324. 'wayland/libwayland-cursor.a.d',
  325. 'libxkbcommon/libxkbcommon.a',
  326. })
  327. table.insert(pkg.deps, {
  328. '$outdir/content-type-v1.h',
  329. '$outdir/fractional-scale-v1.h',
  330. '$outdir/idle-inhibit-unstable-v1.h',
  331. '$outdir/linux-dmabuf-unstable-v1.h',
  332. '$outdir/single-pixel-buffer-v1.h',
  333. '$outdir/presentation-time.h',
  334. '$outdir/viewporter.h',
  335. '$outdir/xdg-decoration-unstable-v1.h',
  336. '$outdir/xdg-shell.h',
  337. 'pkg/libxkbcommon/headers',
  338. 'pkg/wayland/headers',
  339. })
  340. end
  341. exe('mpv', {'osdep/main-fn-unix.c', srcs, expand{'$builddir/pkg/', libs}})
  342. file('bin/mpv', '755', '$outdir/mpv')
  343. man{'$dir/mpv.1'}
  344. fetch 'git'