master hovercats/oakiss / pkg / file / gen.lua
 1local version = '5.45'
 2cflags{
 3	'-Wall',
 4	'-Wno-maybe-uninitialized',  -- false positive in src/readelf.c
 5	'-D HAVE_CONFIG_H',
 6	([[-D 'MAGIC="%s/share/file/magic"']]):format(config.prefix),
 7	'-D _GNU_SOURCE',
 8	'-I $dir',
 9	'-I $outdir/include',
10	'-isystem $builddir/pkg/zlib/include',
11}
12
13build('sed', '$outdir/include/magic.h', '$srcdir/src/magic.h.in', {
14	expr='s,X.YY,'..version:gsub('%.', '')..',',
15})
16
17build('sed', '$outdir/file.1', '$srcdir/doc/file.man', {
18	expr={
19		'-e s,__CSECTION__,1,g',
20		'-e s,__FSECTION__,5,g',
21		'-e s,__VERSION__,'..version..',g',
22		'-e s,__MAGIC__,/share/file/magic,g',
23	},
24})
25
26pkg.hdrs = {'$outdir/include/magic.h'}
27pkg.deps = {'$gendir/headers', 'pkg/zlib/headers'}
28
29lib('libmagic.a', [[src/(
30	buffer.c magic.c apprentice.c softmagic.c ascmagic.c
31	encoding.c compress.c is_csv.c is_json.c is_simh.c is_tar.c readelf.c
32	print.c fsmagic.c funcs.c apptype.c der.c
33	cdf.c cdf_time.c readcdf.c
34
35	fmtcheck.c
36)]])
37
38exe('file', {'src/file.c', 'src/seccomp.c', 'libmagic.a', '$builddir/pkg/zlib/libz.a'})
39file('bin/file', '755', '$outdir/file')
40man{'$outdir/file.1'}
41
42sub('host.ninja', function()
43	toolchain(config.host)
44	cflags{
45		'-I $outdir/include',
46		'-D HAVE_STDINT_H',
47		'-D HAVE_INTTYPES_H',
48		'-D HAVE_UNISTD_H',
49		'-D COMPILE_ONLY',
50		([[-D 'VERSION="%s"']]):format(version),
51	}
52	set('outdir', '$outdir/host')
53	exe('magic', 'src/(magic.c apprentice.c encoding.c print.c funcs.c cdf_time.c strlcpy.c)')
54end)
55
56rule('magic', 'cd $outdir && ./host/magic magic')
57build('magic', '$outdir/magic.mgc', {'|',
58	'$outdir/host/magic',
59	copy('$outdir/magic', '$srcdir/magic/Magdir', lines('magic.txt')),
60	copy('$outdir/magic', '$srcdir/magic', {'Header', 'Localstuff'}),
61})
62file('share/file/magic.mgc', '644', '$outdir/magic.mgc')
63
64fetch 'git'