xref: /netbsd-src/sys/arch/landisk/stand/bootxx/Makefile.bootxx (revision a6b3901fad1f081693bb10747adf89e9f329db83)
1#	$NetBSD: Makefile.bootxx,v 1.4 2013/08/21 07:08:30 matt Exp $
2
3PROG?=		bootxx_${FS}
4
5BOOTXX_SECTORS?= 15
6BOOTXX_MAXSIZE?= (( ${BOOTXX_SECTORS} * 512 ))
7
8SRCS=		pbr.S label.S bootxx.S boot1.c
9
10.if ${FS} == ustarfs
11SRCS+=		bios.S
12.endif
13
14LDFLAGS+=	-e start
15
16CFLAGS=
17CPPFLAGS+=	-DBOOTXX
18CPPFLAGS+=	-DBOOTXX_SECTORS=${BOOTXX_SECTORS}
19CPPFLAGS+=	-DPRIMARY_LOAD_ADDRESS=${PRIMARY_LOAD_ADDRESS}
20CPPFLAGS+=	-DSECONDARY_LOAD_ADDRESS=${SECONDARY_LOAD_ADDRESS}
21CPPFLAGS+=	-DXXfs_open=${FS}_open
22CPPFLAGS+=	-DXXfs_close=${FS}_close
23CPPFLAGS+=	-DXXfs_read=${FS}_read
24CPPFLAGS+=	-DXXfs_stat=${FS}_stat
25CPPFLAGS+=	-DFS=${FS}
26
27CPPFLAGS+= -DLIBSA_SINGLE_FILESYSTEM=xxfs \
28		-DLIBSA_NO_TWIDDLE \
29		-DLIBSA_NO_FD_CHECKING \
30		-DLIBSA_NO_RAW_ACCESS \
31		-DLIBSA_NO_FS_WRITE \
32		-DLIBSA_NO_FS_SEEK \
33		-DLIBSA_SINGLE_DEVICE=blkdev \
34		-DLIBKERN_OPTIMISE_SPACE \
35		-D"blkdevioctl(x,y,z)=EINVAL" \
36		-D"blkdevclose(f)=0" \
37		-D"devopen(f,n,fl)=(*(fl)=(void *)n,0)" \
38		-DLIBSA_NO_DISKLABEL_MSGS
39
40SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
41
42.include "../Makefile.bootprogs"
43
44LIBLIST=	${LIBSA} ${LIBKERN}
45
46CLEANFILES+=	${PROG}.sym ${PROG}.map
47
48${PROG}: ${OBJS} ${LIBLIST}
49	${_MKTARGET_LINK}
50	${LD} -o ${PROG}.sym ${LDFLAGS} -Ttext ${PRIMARY_LOAD_ADDRESS} \
51		-Map ${PROG}.map -cref ${OBJS} ${LIBLIST}
52	${OBJCOPY} -O binary ${PROG}.sym ${PROG}
53	@ sz=$$(ls -ln ${PROG} | tr -s ' ' | cut -d' ' -f5); \
54	if [ "$$sz" -gt "$$${BOOTXX_MAXSIZE}" ]; then \
55		echo "### ${PROG} size $$sz is larger than ${BOOTXX_MAXSIZE}" >&2 \
56		rm -f ${PROG}; \
57		! :; \
58	else \
59		: pad to sector boundary; \
60		pad=$$(( 512 - ( $$sz & 511 ) )); \
61		[ $$pad = 512 ] || \
62		    dd if=/dev/zero bs=1 count=$$pad >>${PROG} 2>/dev/null; \
63		echo "${PROG} size $$sz, $$((${BOOTXX_MAXSIZE} - $$sz)) free"; \
64	fi
65
66.include <bsd.prog.mk>
67