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'