master hovercats/oakiss / pkg / squashfs-tools-ng / gen.lua
  1cflags{
  2	'-std=c99', '-Wall', '-Wpedantic',
  3	'-Wno-discarded-qualifiers',
  4	'-D _GNU_SOURCE',
  5	'-I $srcdir',
  6	'-I $srcdir/include',
  7	'-I $dir',
  8}
  9
 10pkg.deps = {}
 11
 12local cfg = {}
 13for line in iterlines('config.h', 1) do
 14	local var = line:match('^#define (WITH_[%w_]+)')
 15	if var then
 16		cfg[var] = true
 17	end
 18end
 19
 20local srcs = paths[[
 21	lib/sqfs/(
 22		id_table.c super.c
 23		readdir.c xattr/xattr.c
 24		write_table.c meta_writer.c
 25		read_super.c meta_reader.c
 26		read_inode.c write_inode.c
 27		dir_writer.c xattr/xattr_reader.c
 28		read_table.c comp/compressor.c
 29		dir_reader.c read_tree.c
 30		inode.c xattr/xattr_writer.c
 31		xattr/xattr_writer_flush.c
 32		xattr/xattr_writer_record.c
 33		write_super.c data_reader.c
 34		block_processor/frontend.c
 35		block_processor/block_processor.c
 36		block_processor/backend.c
 37		frag_table.c
 38		block_writer.c
 39		misc.c
 40
 41		unix/io_file.c
 42	)
 43	lib/util/threadpool.c
 44	libutil.a
 45]]
 46
 47if cfg.WITH_GZIP then
 48	cflags{'-isystem $builddir/pkg/zlib/include'}
 49	table.insert(pkg.deps, 'pkg/zlib/headers')
 50	table.insert(srcs, {
 51		'lib/sqfs/comp/gzip.c',
 52		'$builddir/pkg/zlib/libz.a',
 53	})
 54end
 55
 56if cfg.WITH_ZSTD then
 57	cflags{'-isystem $builddir/pkg/zstd/include'}
 58	table.insert(pkg.deps, 'pkg/zstd/headers')
 59	table.insert(srcs, {
 60		'lib/sqfs/comp/zstd.c',
 61		'$builddir/pkg/zstd/libzstd.a',
 62	})
 63end
 64
 65lib('libsquashfs.a', srcs)
 66
 67lib('libcommon.a', [[
 68	lib/common/(
 69		inode_stat.c hardlink.c
 70		print_version.c data_reader_dump.c
 71		compress.c comp_opt.c
 72		data_writer.c
 73		get_path.c data_writer_ostream.c
 74		perror.c
 75		mkdir_p.c parse_size.c
 76		print_size.c
 77		writer/(
 78			init.c cleanup.c
 79			serialize_fstree.c
 80			finish.c
 81		)
 82	)
 83	libsquashfs.a.d
 84	libfstream.a
 85	libfstree.a.d
 86]])
 87
 88lib('libfstream.a', [[
 89	lib/fstream/(
 90		ostream.c printf.c
 91		istream.c get_line.c
 92		compressor.c
 93		compress/(
 94			ostream_compressor.c
 95			gzip.c
 96			zstd.c
 97		)
 98		uncompress/(
 99			istream_compressor.c
100			autodetect.c
101			gzip.c
102			zstd.c
103		)
104		unix/(ostream.c istream.c)
105	)
106]])
107
108lib('libfstree.a', [[
109	lib/fstree/(
110		fstree.c fstree_from_file.c
111		fstree_sort.c hardlink.c
112		post_process.c get_path.c
113		mknode.c fstree_from_dir.c
114		add_by_path.c get_by_path.c
115		source_date_epoch.c
116		canonicalize_name.c
117		filename_sane.c
118	)
119	libfstream.a
120]])
121
122lib('libtar.a', [[
123	lib/tar/(
124		read_header.c write_header.c
125		number.c checksum.c cleanup.c
126		read_sparse_map.c read_sparse_map_old.c
127		base64.c urldecode.c
128		padd_file.c record_to_memory.c
129		pax_header.c read_sparse_map_new.c
130	)
131]])
132
133lib('libutil.a', [[
134	lib/util/(
135		str_table.c alloc.c
136		rbtree.c
137		array.c
138		xxhash.c hash_table.c
139		threadpool_serial.c
140		is_memory_zero.c
141	)
142]])
143
144exe('gensquashfs', [[
145	bin/gensquashfs/(mkfs.c options.c selinux.c dirscan_xattr.c)
146	libcommon.a.d
147]])
148file('bin/gensquashfs', '755', '$outdir/gensquashfs')
149man{'bin/gensquashfs/gensquashfs.1'}
150
151exe('rdsquashfs', [[
152	bin/rdsquashfs/(
153		rdsquashfs.c
154		list_files.c options.c
155		restore_fstree.c describe.c
156		fill_files.c dump_xattrs.c
157		stat.c
158	)
159	libcommon.a.d
160]])
161file('bin/rdsquashfs', '755', '$outdir/rdsquashfs')
162man{'bin/rdsquashfs/rdsquashfs.1'}
163
164exe('sqfsdiff', [[
165	bin/sqfsdiff/(
166		sqfsdiff.c
167		util.c options.c
168		compare_dir.c node_compare.c
169		compare_files.c super.c
170		extract.c
171	)
172	libcommon.a.d
173]])
174file('bin/sqfsdiff', '755', '$outdir/sqfsdiff')
175man{'bin/sqfsdiff/sqfsdiff.1'}
176
177exe('sqfs2tar', [[
178	bin/sqfs2tar/(sqfs2tar.c options.c write_tree.c xattr.c)
179	libcommon.a.d libtar.a
180]])
181file('bin/sqfs2tar', '755', '$outdir/sqfs2tar')
182man{'bin/sqfs2tar/sqfs2tar.1'}
183
184exe('tar2sqfs', [[
185	bin/tar2sqfs/(tar2sqfs.c options.c process_tarball.c)
186	libcommon.a.d libtar.a
187]])
188file('bin/tar2sqfs', '755', '$outdir/tar2sqfs')
189man{'bin/tar2sqfs/tar2sqfs.1'}
190
191fetch 'git'