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'