1set('version', '1.46.4')
2cflags{
3 '-Wall',
4 '-Wno-address-of-packed-member', '-Wno-format-truncation',
5 '-Wno-unused-variable', '-Wno-stringop-truncation',
6 '-Wno-stringop-overflow', '-Wno-unused-label',
7 '-D HAVE_CONFIG_H',
8 '-I $outdir',
9 '-I $outdir/include',
10 '-I $outdir/internal',
11 '-I $outdir/internal/support',
12 '-I $srcdir/lib',
13 '-isystem $builddir/pkg/linux-headers/include',
14 '-isystem $builddir/pkg/util-linux/include',
15}
16
17build('cat', '$outdir/config.h', {
18 '$builddir/probe/HAVE__THREAD_LOCAL',
19 '$builddir/probe/SIZEOF_LONG',
20 '$builddir/probe/SIZEOF_TIME_T',
21 '$dir/config.h',
22})
23
24set('subst', {
25 '-e s,@E2FSPROGS_VERSION@,$version,',
26 '-e s,@E2FSPROGS_MONTH@,Aug,',
27 '-e s,@E2FSPROGS_YEAR@,2021,',
28 '-e s,@JDEV@,,',
29})
30
31local function et(file, src, hdr)
32 src = '$outdir/'..src
33 hdr = '$outdir/'..hdr
34 build('awk', src, {file, '|', '$srcdir/lib/et/et_c.awk'}, {
35 expr='-f $srcdir/lib/et/et_c.awk -v outfile=/dev/stdout outfn='..src:match('[^/]*$'),
36 })
37 build('awk', hdr, {file, '|', '$srcdir/lib/et/et_h.awk'}, {
38 expr='-f $srcdir/lib/et/et_h.awk -v outfile=/dev/stdout outfn='..hdr:match('[^/]*$'),
39 })
40end
41
42local function subst(output, input)
43 output = '$outdir/'..output
44 build('sed', output, '$srcdir/'..input, {expr='$subst'})
45 return output
46end
47
48local function substman(files)
49 for _, file in ipairs(files) do
50 if file:hassuffix('.in') then
51 file = subst(file:sub(1, -4), file)
52 end
53 man{file}
54 end
55end
56
57subst('ext2_err.et', 'lib/ext2fs/ext2_err.et.in')
58et('$outdir/ext2_err.et', 'ext2_err.c', 'include/ext2fs/ext2_err.h')
59et('$srcdir/lib/support/prof_err.et', 'prof_err.c', 'internal/support/prof_err.h')
60
61build('copy', '$outdir/include/ext2fs/ext2_types.h', '$dir/ext2_types.h')
62
63sub('tools.ninja', function()
64 toolchain(config.host)
65 exe('gen_crc32ctable', {'lib/ext2fs/gen_crc32ctable.c'})
66end)
67rule('gen_crc32ctable', '$outdir/gen_crc32ctable >$out')
68build('gen_crc32ctable', '$outdir/internal/crc32c_table.h', {'|', '$outdir/gen_crc32ctable'})
69
70pkg.hdrs = {
71 '$outdir/include/ext2fs/ext2_err.h',
72 '$outdir/include/ext2fs/ext2_types.h',
73}
74pkg.deps = {
75 '$outdir/config.h',
76 '$gendir/headers',
77 '$outdir/internal/support/prof_err.h',
78 '$outdir/internal/crc32c_table.h',
79 'pkg/linux-headers/headers',
80 'pkg/util-linux/headers',
81}
82
83lib('libcomm_err.a', [[lib/et/(error_message.c et_name.c init_et.c com_err.c com_right.c)]])
84lib('libe2p.a', [[lib/e2p/(
85 feature.c fgetflags.c fsetflags.c fgetversion.c fsetversion.c
86 getflags.c getversion.c hashstr.c iod.c ls.c ljs.c mntopts.c
87 parse_num.c pe.c pf.c ps.c setflags.c setversion.c uuid.c
88 ostype.c percent.c crypto_mode.c fgetproject.c fsetproject.c
89 encoding.c errcode.c
90)]])
91lib('libext2fs.a', [[$outdir/ext2_err.c lib/ext2fs/(
92 alloc.c
93 alloc_sb.c
94 alloc_stats.c
95 alloc_tables.c
96 atexit.c
97 badblocks.c
98 bb_inode.c
99 bitmaps.c
100 bitops.c
101 blkmap64_ba.c
102 blkmap64_rb.c
103 blknum.c
104 block.c
105 bmap.c
106 check_desc.c
107 closefs.c
108 crc16.c
109 crc32c.c
110 csum.c
111 dblist.c
112 dblist_dir.c
113 dirblock.c
114 dirhash.c
115 dir_iterate.c
116 expanddir.c
117 ext_attr.c
118 extent.c
119 fallocate.c
120 fileio.c
121 finddev.c
122 flushb.c
123 freefs.c
124 gen_bitmap.c
125 gen_bitmap64.c
126 get_num_dirs.c
127 get_pathname.c
128 getsize.c
129 getsectsize.c
130 hashmap.c
131 i_block.c
132 icount.c
133 ind_block.c
134 initialize.c
135 inline.c
136 inline_data.c
137 inode.c
138 io_manager.c
139 ismounted.c
140 link.c
141 llseek.c
142 lookup.c
143 mkdir.c
144 mkjournal.c
145 mmp.c
146 namei.c
147 native.c
148 newdir.c
149 nls_utf8.c
150 openfs.c
151 progress.c
152 punch.c
153 qcow2.c
154 read_bb.c
155 read_bb_file.c
156 res_gdt.c
157 rw_bitmaps.c
158 sha512.c
159 swapfs.c
160 symlink.c
161 undo_io.c
162 unix_io.c
163 sparse_io.c
164 unlink.c
165 valid_blk.c
166 version.c
167 rbtree.c
168
169 dupfs.c
170)]])
171lib('libsupport.a', [[$outdir/prof_err.c lib/support/(
172 cstring.c
173 mkquota.c
174 plausible.c
175 profile.c
176 parse_qtype.c
177 profile_helpers.c
178 quotaio.c
179 quotaio_v2.c
180 quotaio_tree.c
181 dict.c
182)]])
183
184exe('bin/e2fsck', [[
185 e2fsck/(
186 unix.c e2fsck.c super.c pass1.c pass1b.c pass2.c
187 pass3.c pass4.c pass5.c journal.c badblocks.c util.c dirinfo.c
188 dx_dirinfo.c ehandler.c problem.c message.c quota.c recovery.c
189 region.c revoke.c ea_refcount.c rehash.c
190 logfile.c sigcatcher.c readahead.c
191 extents.c encrypted_files.c
192 )
193 libsupport.a libext2fs.a libe2p.a libcomm_err.a
194 $builddir/pkg/util-linux/libblkid.a.d
195 $builddir/pkg/util-linux/libuuid.a.d
196]])
197file('bin/e2fsck', '755', '$outdir/bin/e2fsck')
198substman{'e2fsck/e2fsck.8.in', 'e2fsck/e2fsck.conf.5.in'}
199
200exe('bin/resize2fs', [[
201 resize/(
202 extent.c resize2fs.c main.c online.c resource_track.c
203 sim_progress.c
204 )
205 libext2fs.a libe2p.a libcomm_err.a
206]])
207file('bin/resize2fs', '755', '$outdir/bin/resize2fs')
208substman{'resize/resize2fs.8.in'}
209
210build('awk', '$outdir/default_profile.c', {'$srcdir/misc/mke2fs.conf.in', '|', '$srcdir/misc/profile-to-c.awk'}, {
211 expr='-f $srcdir/misc/profile-to-c.awk',
212})
213
214cc('misc/util.c')
215
216exe('bin/mke2fs', [[
217 misc/(
218 mke2fs.c util.c.o mk_hugefiles.c
219 create_inode.c
220 )
221 $outdir/default_profile.c
222 libsupport.a libext2fs.a libe2p.a libcomm_err.a
223 $builddir/pkg/util-linux/libblkid.a.d
224 $builddir/pkg/util-linux/libuuid.a.d
225]])
226file('bin/mke2fs', '755', '$outdir/bin/mke2fs')
227substman{'misc/mke2fs.8.in'}
228
229sub('journal.ninja', function()
230 cflags{
231 '-I $srcdir/e2fsck',
232 '-D DEBUGFS',
233 }
234 set('outdir', '$outdir/misc')
235 lib('libjournal.a', [[
236 debugfs/journal.c
237 e2fsck/(revoke.c recovery.c)
238 ]])
239end)
240exe('bin/tune2fs', [[
241 misc/(tune2fs.c util.c.o libjournal.a)
242 libsupport.a libext2fs.a libe2p.a libcomm_err.a
243 $builddir/pkg/util-linux/libblkid.a.d
244 $builddir/pkg/util-linux/libuuid.a.d
245]])
246file('bin/tune2fs', '755', '$outdir/bin/tune2fs')
247substman{'misc/tune2fs.8.in'}
248
249fetch 'git'