1183878Sraj# $FreeBSD$
2183878Sraj
3209125Sraj.include <bsd.own.mk>
4209125Sraj
5183878SrajPROG=		ubldr
6183878SrajNEWVERSWHAT=	"U-Boot loader" ${MACHINE_ARCH}
7183878SrajBINDIR?=	/boot
8183878SrajINSTALLFLAGS=	-b
9183878SrajWARNS?=		1
10236159Skientzle# Address at which ubldr will be loaded.
11236159Skientzle# This varies for different boards and SOCs.
12236159SkientzleUBLDR_LOADADDR?=	0x1000000
13183878Sraj
14183878Sraj# Architecture-specific loader code
15183878SrajSRCS=		start.S conf.c vers.c
16183878Sraj
17240277Sae.if !defined(LOADER_NO_DISK_SUPPORT)
18185099SrajLOADER_DISK_SUPPORT?=	yes
19240277Sae.else
20240277SaeLOADER_DISK_SUPPORT=	no
21240277Sae.endif
22185099SrajLOADER_UFS_SUPPORT?=	yes
23183878SrajLOADER_CD9660_SUPPORT?=	no
24183878SrajLOADER_EXT2FS_SUPPORT?=	no
25235537Sgber.if ${MK_NAND} != "no"
26235537SgberLOADER_NANDFS_SUPPORT?= yes
27235537Sgber.else
28235537SgberLOADER_NANDFS_SUPPORT?= no
29235537Sgber.endif
30183878SrajLOADER_NET_SUPPORT?=	yes
31183878SrajLOADER_NFS_SUPPORT?=	yes
32183878SrajLOADER_TFTP_SUPPORT?=	no
33183878SrajLOADER_GZIP_SUPPORT?=	no
34183878SrajLOADER_BZIP2_SUPPORT?=	no
35209125Sraj.if ${MK_FDT} != "no"
36208538SrajLOADER_FDT_SUPPORT=	yes
37208538Sraj.else
38208538SrajLOADER_FDT_SUPPORT=	no
39208538Sraj.endif
40183878Sraj
41183878Sraj.if ${LOADER_DISK_SUPPORT} == "yes"
42183878SrajCFLAGS+=	-DLOADER_DISK_SUPPORT
43183878Sraj.endif
44183878Sraj.if ${LOADER_UFS_SUPPORT} == "yes"
45183878SrajCFLAGS+=	-DLOADER_UFS_SUPPORT
46183878Sraj.endif
47183878Sraj.if ${LOADER_CD9660_SUPPORT} == "yes"
48183878SrajCFLAGS+=	-DLOADER_CD9660_SUPPORT
49183878Sraj.endif
50183878Sraj.if ${LOADER_EXT2FS_SUPPORT} == "yes"
51183878SrajCFLAGS+=	-DLOADER_EXT2FS_SUPPORT
52183878Sraj.endif
53235537Sgber.if ${LOADER_NANDFS_SUPPORT} == "yes"
54235537SgberCFLAGS+=	-DLOADER_NANDFS_SUPPORT
55235537Sgber.endif
56183878Sraj.if ${LOADER_GZIP_SUPPORT} == "yes"
57183878SrajCFLAGS+=	-DLOADER_GZIP_SUPPORT
58183878Sraj.endif
59183878Sraj.if ${LOADER_BZIP2_SUPPORT} == "yes"
60183878SrajCFLAGS+=	-DLOADER_BZIP2_SUPPORT
61183878Sraj.endif
62183878Sraj.if ${LOADER_NET_SUPPORT} == "yes"
63183878SrajCFLAGS+=	-DLOADER_NET_SUPPORT
64183878Sraj.endif
65183878Sraj.if ${LOADER_NFS_SUPPORT} == "yes"
66183878SrajCFLAGS+=	-DLOADER_NFS_SUPPORT
67183878Sraj.endif
68183878Sraj.if ${LOADER_TFTP_SUPPORT} == "yes"
69183878SrajCFLAGS+=	-DLOADER_TFTP_SUPPORT
70183878Sraj.endif
71208538Sraj.if ${LOADER_FDT_SUPPORT} == "yes"
72208538SrajCFLAGS+=	-I${.CURDIR}/../../fdt
73208538SrajCFLAGS+=	-I${.OBJDIR}/../../fdt
74208538SrajCFLAGS+=	-DLOADER_FDT_SUPPORT
75208538SrajLIBFDT=		${.OBJDIR}/../../fdt/libfdt.a
76208538Sraj.endif
77183878Sraj
78183878Sraj.if !defined(NO_FORTH)
79183878Sraj# Enable BootForth
80183878SrajBOOT_FORTH=	yes
81183878SrajCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/arm
82183878SrajLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
83183878Sraj.endif
84183878Sraj
85183878Sraj# Always add MI sources
86183878Sraj.PATH:		${.CURDIR}/../../common
87183878Sraj.include	"${.CURDIR}/../../common/Makefile.inc"
88183878SrajCFLAGS+=	-I${.CURDIR}/../../common
89183878SrajCFLAGS+=	-I.
90183878Sraj
91185375SrajCLEANFILES+=	vers.c loader.help
92183878Sraj
93265064SianCFLAGS+=	-ffreestanding -msoft-float
94183878Sraj
95236159SkientzleLDFLAGS=	-nostdlib -static
96236159SkientzleLDFLAGS+=	-T ldscript.generated
97236159SkientzleLDFLAGS+=	-T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
98183878Sraj
99183878Sraj# Pull in common loader code
100183878Sraj.PATH:		${.CURDIR}/../../uboot/common
101183878Sraj.include	"${.CURDIR}/../../uboot/common/Makefile.inc"
102183878SrajCFLAGS+=	-I${.CURDIR}/../../uboot/common
103183878Sraj
104183878Sraj# U-Boot standalone support library
105183878SrajLIBUBOOT=	${.OBJDIR}/../../uboot/lib/libuboot.a
106183878SrajCFLAGS+=	-I${.CURDIR}/../../uboot/lib
107183878SrajCFLAGS+=	-I${.OBJDIR}/../../uboot/lib
108183878Sraj
109183878Sraj# where to get libstand from
110183878SrajCFLAGS+=	-I${.CURDIR}/../../../../lib/libstand/
111183878Sraj
112244278Sandrew# clang doesn't understand %D as a specifier to printf
113244278SandrewNO_WERROR.clang=
114244278Sandrew
115246369SandrewDPADD=		${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBSTAND}
116246369SandrewLDADD=		${LIBFICL} ${LIBUBOOT} ${LIBFDT} -lstand
117183878Sraj
118183878Srajvers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
119183878Sraj	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
120183878Sraj
121246647Skientzleloader.help: help.common help.uboot ${.CURDIR}/../../fdt/help.fdt
122183878Sraj	cat ${.ALLSRC} | \
123183878Sraj	    awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
124183878Sraj
125236159Skientzle${PROG}: ldscript.generated ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
126236159Skientzle
127236159Skientzleldscript.generated::
128236159Skientzle	rm -f ldscript.generated.tmp
129236159Skientzle	echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >ldscript.generated.tmp
130236159Skientzle	if diff ldscript.generated ldscript.generated.tmp > /dev/null; then \
131236159Skientzle		true; \
132236159Skientzle	else \
133236159Skientzle		rm -f ldscript.generated; \
134236159Skientzle		mv ldscript.generated.tmp ldscript.generated; \
135236159Skientzle	fi
136236159Skientzle
137253714Skientzle.if !defined(LOADER_ONLY)
138183878Sraj.PATH: ${.CURDIR}/../../forth
139253714SkientzleFILES+=	loader.help loader.4th support.4th loader.conf
140253714SkientzleFILES+=	screen.4th frames.4th beastie.4th
141253714SkientzleFILES+=	brand.4th check-password.4th color.4th delay.4th
142253714SkientzleFILES+=	menu.4th menu-commands.4th menusets.4th shortcuts.4th version.4th
143253714SkientzleFILESDIR_loader.conf=	/boot/defaults
144183878Sraj
145253714Skientzle# Put sample loader.rc and menu.rc on disk but don't enable them
146253714Skientzle# by default.
147253714SkientzleFILES+=	loader.rc
148253714SkientzleFILESNAME_loader.rc=	loader.rc.sample
149253714SkientzleFILES+=	menu.rc
150253714SkientzleFILESNAME_menu.rc=	menu.rc.sample
151253714Skientzle.endif
152253714Skientzle
153183878Sraj.include <bsd.prog.mk>
154