1# $FreeBSD$
2
3LOADER_UFS_SUPPORT?=	yes
4LOADER_CD9660_SUPPORT?=	no
5LOADER_MSDOS_SUPPORT?=	no
6LOADER_EXT2FS_SUPPORT?=	no
7LOADER_NET_SUPPORT?=	yes
8LOADER_NFS_SUPPORT?=	yes
9LOADER_TFTP_SUPPORT?=	no
10LOADER_GZIP_SUPPORT?=	no
11LOADER_BZIP2_SUPPORT?=	no
12
13.include <bsd.init.mk>
14
15FILES+=		ubldr ubldr.bin
16
17NEWVERSWHAT=	"U-Boot loader" ${MACHINE_ARCH}
18INSTALLFLAGS=	-b
19WARNS?=		1
20# Address at which ubldr will be loaded.
21# This varies for different boards and SOCs.
22UBLDR_LOADADDR?=	0x1000000
23
24# Architecture-specific loader code
25SRCS=		start.S conf.c self_reloc.c vers.c
26
27.if ${COMPILER_TYPE} == "gcc"
28CWARNFLAGS.self_reloc.c+=	-Wno-error=maybe-uninitialized
29.endif
30
31HELP_FILES=	 ${.CURDIR}/help.uboot ${BOOTSRC}/fdt/help.fdt
32
33# Always add MI sources
34.include	"${BOOTSRC}/loader.mk"
35
36LDFLAGS=	-nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
37LDFLAGS+=	-Wl,-znotext
38
39# Pull in common loader code
40.include	"${BOOTSRC}/uboot.mk"
41
42CFLAGS+=	-fPIC
43
44DPADD=		${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
45LDADD=		${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
46
47OBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
48
49ldscript.abs:
50	echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET}
51
52ldscript.pie:
53	echo "UBLDR_LOADADDR = 0;" >${.TARGET}
54
55ubldr: ${OBJS} ldscript.abs ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
56	${CC} ${CFLAGS} -T ldscript.abs ${LDFLAGS} \
57	    -o ${.TARGET} ${OBJS} ${LDADD}
58
59ubldr.pie: ${OBJS} ldscript.pie ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
60	${CC} ${CFLAGS} -T ldscript.pie ${LDFLAGS} -pie -Wl,-Bsymbolic \
61	    -o ${.TARGET} ${OBJS} ${LDADD}
62
63ubldr.bin: ubldr.pie
64	${OBJCOPY} -S -O binary ubldr.pie ${.TARGET}
65
66CLEANFILES+=	ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin
67
68.include <bsd.prog.mk>
69