master hovercats/oakiss / pkg / muon / gen.lua
  1cflags{
  2	'-std=c99',
  3	'-Wall', '-Wpedantic', '-Wno-missing-braces',
  4	'-D MUON_PLATFORM_posix',
  5	'-D MUON_ENDIAN=0',
  6	'-D MUON_STATIC',
  7	'-D MUON_BOOTSTRAPPED',
  8	'-I $outdir',
  9	'-I $srcdir/include',
 10}
 11
 12sub('tools.ninja', function()
 13	toolchain(config.host)
 14	cflags{'-I $srcdir/include'}
 15	exe('embedder', {'tools/embedder.c'})
 16end)
 17
 18rule('embedder', '$outdir/embedder $args >$out')
 19
 20local embed = {
 21	'commands/clang_format.meson',
 22	'commands/copyfile.meson',
 23	'commands/coverage.meson',
 24	'commands/delete_suffix.meson',
 25	'commands/i18n/gettext.meson',
 26	'commands/i18n/itstool.meson',
 27	'commands/i18n/msgfmthelper.meson',
 28	'commands/vcs_tagger.meson',
 29	'html/docs.html',
 30	'html/test_out.html',
 31	'lib/cmake_prelude.meson',
 32	'modules/gnome.meson',
 33	'modules/i18n.meson',
 34	'modules/wayland.meson',
 35	'modules/windows.meson',
 36	'options/global.meson',
 37	'options/per_project.meson',
 38	'python/python_info.py',
 39	'runtime/dependencies.meson',
 40	'runtime/toolchains.meson',
 41}
 42
 43local args = {}
 44for _, file in ipairs(embed) do
 45	table.insert(args, '$srcdir/src/script/'..file)
 46	table.insert(args, file)
 47end
 48
 49build('embedder', '$outdir/embedded_files.h', {expand{'$srcdir/src/script', embed}, '|', '$outdir/embedder'}, {args=args})
 50
 51build('sed', '$outdir/version.c', '$srcdir/src/version.c.in', {
 52	expr={
 53		'-e s,@version@,0.6.0,',
 54		'-e s,@vcs_tag@,,',
 55		'-e s,@meson_compat@,1.7,',
 56	},
 57})
 58
 59pkg.deps = {
 60	'$outdir/embedded_files.h',
 61}
 62
 63exe('muon', [[
 64	src/(
 65		arena.c args.c cmd_install.c cmd_subprojects.c 
 66		cmd_test.c coerce.c embedded.c
 67		error.c guess.c install.c log.c
 68		machine_file.c machines.c main.c
 69		memmem.c meson_opts.c options.c
 70		opts.c rpmvercmp.c sha_256.c toolchains.c
 71		vsenv.c wrap.c ui_null.c
 72		backend/(
 73			backend.c common_args.c introspect.c ninja.c output.c xcode.c
 74			ninja/(
 75				alias_target.c coverage.c build_target.c
 76				clang_format.c custom_target.c rules.c
 77			)
 78		)
 79		datastructures/(
 80			arr.c bucket_arr.c hash.c seg_list.c stack.c
 81		)
 82		formats/(
 83			ansi.c editorconfig.c ini.c ini_cfg.c json.c
 84			lines.c tap.c xml.c
 85		)
 86		functions/(
 87			array.c bool.c both_libs.c
 88			build_target.c compiler.c
 89			configuration_data.c custom_target.c
 90			dependency.c dict.c disabler.c
 91			environment.c external_program.c
 92			feature_opt.c file.c generator.c include_directory.c
 93			kernel.c modules.c machine.c meson.c
 94			number.c run_result.c
 95			source_configuration.c source_set.c
 96			string.c subproject.c
 97			kernel/(
 98				build_target.c configure_file.c
 99				custom_target.c dependency.c
100				install.c options.c subproject.c
101			)
102			modules/(
103				curl.c fs.c getopt.c keyval.c pkgconfig.c
104				python.c sourceset.c time.c subprojects.c
105				toolchain.c util.c json.c
106			)
107		)
108		lang/(
109			analyze.c compiler.c dap.c docs.c eval.c
110			fmt.c func_lookup.c lexer.c lsp.c
111			object.c object_iterators.c parser.c
112			serial.c server.c string.c typecheck.c
113			vm.c workspace.c
114		)
115		platform/(
116			assert.c filesystem.c os.c mem.c
117			path.c run_cmd.c uname.c
118			posix/(
119				filesystem.c init.c log.c
120				os.c path.c rpath_fixer.c
121				run_cmd.c term.c timer.c
122				uname.c socket.c
123			)
124			null/(backtrace.c)
125		)
126		external/(
127			libarchive_null.c libcurl_null.c
128			samurai_null.c readline_builtin.c
129			pkgconfig.c pkgconfig_exec.c
130		)
131	)
132	$outdir/version.c
133]])
134
135file('bin/muon', '755', '$outdir/muon')
136
137fetch 'git'