master hovercats/oakiss / pkg / e2fsprogs / gen.lua
  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'