summaryrefslogtreecommitdiff
path: root/pkg/syslinux/gen.rc
blob: e3b5c9faf2ec642344947835c84a44e3ab5593d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
cflags\
	-I '$dir' \
	-I '$outdir' \
	-I '$srcdir'/libinstaller\
	-I '$srcdir'/com32/include/syslinux
# NOTE: we should only have to include $srcdir/libinstaller, but BSD pax/tar
# transforms symlink targets as well as filenames, trashing the
# libinstaller/advconst.h symlink.

build '$outdir'/version.h awk '$srcdir'/version '|' '$dir'/version.awk ; with\
	expr '-f $dir/version.awk -v fmt=''#define %s %s'''

{
	toolchain host
	cflags '-std=c99' -pedantic -Wall -Wextra
	set srcdir '$dir'
	exe bin2c bin2c.c
} >tools.ninja ; subninja tools.ninja

rule bin2c '$outdir/bin2c $args <$in >$out.tmp && mv $out.tmp $out'
fn bin2c {
	bin=$1
	name=$2
	shift
	build '$outdir'/$name.c bin2c '$srcdir'/$bin '|' '$outdir'/bin2c
	with args $"*
}

bin2c bios/core/ldlinux.bss syslinux_bootsect
bin2c bios/core/ldlinux.sys syslinux_ldlinux 512
bin2c bios/com32/elflink/ldlinux/ldlinux.c32 syslinux_ldlinuxc32

exe bin/extlinux -d '$outdir'/version.h\
	extlinux/^(main.c mountinfo.c)\
	libinstaller/^(\
		syslxmod.c\
		syslxopt.c\
		syslxcom.c\
		setadv.c\
		advio.c\
	)\
	'$outdir'/syslinux_^(bootsect ldlinux ldlinuxc32)^.c
file bin/extlinux '$outdir'/bin/extlinux 755

file lib/syslinux/bios/mbr.bin '$srcdir'/bios/mbr/mbr.bin 644

fetch curl