Makefile revision 293903
1# $FreeBSD: head/sys/boot/arm/uboot/Makefile 293903 2016-01-14 09:22:01Z smh $
2
3.include <src.opts.mk>
4
5FILES=		ubldr ubldr.bin
6
7NEWVERSWHAT=	"U-Boot loader" ${MACHINE_ARCH}
8BINDIR?=	/boot
9INSTALLFLAGS=	-b
10WARNS?=		1
11CWARNFLAGS.gcc+=	-Wno-int-to-pointer-cast
12
13# Address at which ubldr will be loaded.
14# This varies for different boards and SOCs.
15UBLDR_LOADADDR?=	0x1000000
16
17# Architecture-specific loader code
18SRCS=		start.S conf.c self_reloc.c vers.c
19
20.if !defined(LOADER_NO_DISK_SUPPORT)
21LOADER_DISK_SUPPORT?=	yes
22.else
23LOADER_DISK_SUPPORT=	no
24.endif
25LOADER_UFS_SUPPORT?=	yes
26LOADER_CD9660_SUPPORT?=	no
27LOADER_EXT2FS_SUPPORT?=	no
28.if ${MK_NAND} != "no"
29LOADER_NANDFS_SUPPORT?= yes
30.else
31LOADER_NANDFS_SUPPORT?= no
32.endif
33LOADER_NET_SUPPORT?=	yes
34LOADER_NFS_SUPPORT?=	yes
35LOADER_TFTP_SUPPORT?=	no
36LOADER_GZIP_SUPPORT?=	no
37LOADER_BZIP2_SUPPORT?=	no
38.if ${MK_FDT} != "no"
39LOADER_FDT_SUPPORT=	yes
40.else
41LOADER_FDT_SUPPORT=	no
42.endif
43
44.if ${LOADER_DISK_SUPPORT} == "yes"
45CFLAGS+=	-DLOADER_DISK_SUPPORT
46.endif
47.if ${LOADER_UFS_SUPPORT} == "yes"
48CFLAGS+=	-DLOADER_UFS_SUPPORT
49.endif
50.if ${LOADER_CD9660_SUPPORT} == "yes"
51CFLAGS+=	-DLOADER_CD9660_SUPPORT
52.endif
53.if ${LOADER_EXT2FS_SUPPORT} == "yes"
54CFLAGS+=	-DLOADER_EXT2FS_SUPPORT
55.endif
56.if ${LOADER_NANDFS_SUPPORT} == "yes"
57CFLAGS+=	-DLOADER_NANDFS_SUPPORT
58.endif
59.if ${LOADER_GZIP_SUPPORT} == "yes"
60CFLAGS+=	-DLOADER_GZIP_SUPPORT
61.endif
62.if ${LOADER_BZIP2_SUPPORT} == "yes"
63CFLAGS+=	-DLOADER_BZIP2_SUPPORT
64.endif
65.if ${LOADER_NET_SUPPORT} == "yes"
66CFLAGS+=	-DLOADER_NET_SUPPORT
67.endif
68.if ${LOADER_NFS_SUPPORT} == "yes"
69CFLAGS+=	-DLOADER_NFS_SUPPORT
70.endif
71.if ${LOADER_TFTP_SUPPORT} == "yes"
72CFLAGS+=	-DLOADER_TFTP_SUPPORT
73.endif
74.if ${LOADER_FDT_SUPPORT} == "yes"
75CFLAGS+=	-I${.CURDIR}/../../fdt
76CFLAGS+=	-I${.OBJDIR}/../../fdt
77CFLAGS+=	-DLOADER_FDT_SUPPORT
78LIBUBOOT_FDT=	${.OBJDIR}/../../uboot/fdt/libuboot_fdt.a
79LIBFDT=		${.OBJDIR}/../../fdt/libfdt.a
80.endif
81
82CFLAGS+=	-DNETIF_OPEN_CLOSE_ONCE
83
84.if ${MK_FORTH} != "no"
85# Enable BootForth
86BOOT_FORTH=	yes
87CFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/arm
88LIBFICL=	${.OBJDIR}/../../ficl/libficl.a
89.endif
90
91# Always add MI sources
92.PATH:		${.CURDIR}/../../common
93.include	"${.CURDIR}/../../common/Makefile.inc"
94CFLAGS+=	-I${.CURDIR}/../../common
95CFLAGS+=	-I.
96
97CLEANFILES+=	vers.c loader.help
98
99CFLAGS+=	-ffreestanding -msoft-float
100
101LDFLAGS=	-nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
102
103# Pull in common loader code
104.PATH:		${.CURDIR}/../../uboot/common
105.include	"${.CURDIR}/../../uboot/common/Makefile.inc"
106CFLAGS+=	-I${.CURDIR}/../../uboot/common
107
108# U-Boot standalone support library
109LIBUBOOT=	${.OBJDIR}/../../uboot/lib/libuboot.a
110CFLAGS+=	-I${.CURDIR}/../../uboot/lib
111CFLAGS+=	-I${.OBJDIR}/../../uboot/lib
112
113# where to get libstand from
114CFLAGS+=	-I${.CURDIR}/../../../../lib/libstand/
115
116# clang doesn't understand %D as a specifier to printf
117NO_WERROR.clang=
118
119DPADD=		${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSTAND}
120LDADD=		${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} -lstand
121
122OBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
123
124vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
125	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
126
127loader.help: help.common help.uboot ${.CURDIR}/../../fdt/help.fdt
128	cat ${.ALLSRC} | \
129	    awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
130
131ldscript.abs:
132	echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET}
133
134ldscript.pie:
135	echo "UBLDR_LOADADDR = 0;" >${.TARGET}
136
137ubldr: ${OBJS} ldscript.abs ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
138	${CC} ${CFLAGS} -T ldscript.abs ${LDFLAGS} \
139	    -o ${.TARGET} ${OBJS} ${LDADD}
140
141ubldr.pie: ${OBJS} ldscript.pie ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
142	${CC} ${CFLAGS} -T ldscript.pie ${LDFLAGS} -pie -Wl,-Bsymbolic \
143	    -o ${.TARGET} ${OBJS} ${LDADD}
144
145ubldr.bin: ubldr.pie
146	${OBJCOPY} -S -O binary ubldr.pie ${.TARGET}
147
148CLEANFILES+=	ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin
149
150.if !defined(LOADER_ONLY)
151.PATH: ${.CURDIR}/../../forth
152.include	"${.CURDIR}/../../forth/Makefile.inc"
153
154# Install loader.rc.
155FILES+=	loader.rc
156# Put sample menu.rc on disk but don't enable it by default.
157FILES+=	menu.rc
158FILESNAME_menu.rc=	menu.rc.sample
159.endif
160
161.include <bsd.prog.mk>
162