150477Speter# $FreeBSD: stable/11/stand/loader.mk 355345 2019-12-03 18:25:16Z kevans $
238465Smsmith
3329140Skevans.PATH: ${LDRSRC} ${BOOTSRC}/libsa
4329140Skevans
5329140SkevansCFLAGS+=-I${LDRSRC}
6329140Skevans
7239058SaeSRCS+=	boot.c commands.c console.c devopen.c interp.c 
8114379SpeterSRCS+=	interp_backslash.c interp_parse.c ls.c misc.c 
9329135SkevansSRCS+=	module.c
1039178Smsmith
11211678Simp.if ${MACHINE} == "i386" || ${MACHINE_CPUARCH} == "amd64"
12136895SruSRCS+=	load_elf32.c load_elf32_obj.c reloc_elf32.c
13136895SruSRCS+=	load_elf64.c load_elf64_obj.c reloc_elf64.c
14136895Sru.elif ${MACHINE} == "pc98"
15136895SruSRCS+=	load_elf32.c load_elf32_obj.c reloc_elf32.c
16281526Sandrew.elif ${MACHINE_CPUARCH} == "aarch64"
17281526SandrewSRCS+=	load_elf64.c reloc_elf64.c
18211817Snwhitehorn.elif ${MACHINE_CPUARCH} == "arm"
19134458SiedowseSRCS+=	load_elf32.c reloc_elf32.c
20211678Simp.elif ${MACHINE_CPUARCH} == "powerpc"
21209920SnwhitehornSRCS+=	load_elf32.c reloc_elf32.c
22209920SnwhitehornSRCS+=	load_elf64.c reloc_elf64.c
23332150SkevansSRCS+=	metadata.c
24219691Smarcel.elif ${MACHINE_CPUARCH} == "sparc64"
25134458SiedowseSRCS+=	load_elf64.c reloc_elf64.c
26332150SkevansSRCS+=	metadata.c
27329144Skevans.elif ${MACHINE_ARCH:Mmips64*} != ""
28262403SrwatsonSRCS+= load_elf64.c reloc_elf64.c
29332150SkevansSRCS+=	metadata.c
30296378Ssgalabov.elif ${MACHINE} == "mips"
31296182SsgalabovSRCS+=	load_elf32.c reloc_elf32.c
32332150SkevansSRCS+=	metadata.c
33114379Speter.endif
34114379Speter
35329144Skevans.if ${LOADER_DISK_SUPPORT:Uyes} == "yes"
36329144SkevansSRCS+=	disk.c part.c
3768548Sbenno.endif
3868548Sbenno
39329144Skevans.if ${LOADER_NET_SUPPORT:Uno} == "yes"
40329144SkevansSRCS+= dev_net.c
41239058Sae.endif
42239058Sae
43163893Smarcel.if defined(HAVE_BCACHE)
44163893SmarcelSRCS+=  bcache.c
45163893Smarcel.endif
46163893Smarcel
47200460Smarcel.if defined(MD_IMAGE_SIZE)
48200460SmarcelCFLAGS+= -DMD_IMAGE_SIZE=${MD_IMAGE_SIZE}
49200460SmarcelSRCS+=	md.c
50326431Semaste.else
51326431SemasteCLEANFILES+=	md.o
52200460Smarcel.endif
53200460Smarcel
5439178Smsmith# Machine-independant ISA PnP
55125561Sru.if defined(HAVE_ISABUS)
5639178SmsmithSRCS+=	isapnp.c
5739178Smsmith.endif
58125561Sru.if defined(HAVE_PNP)
5939178SmsmithSRCS+=	pnp.c
6039178Smsmith.endif
6140875Smsmith
62344413Skevans.if ${LOADER_INTERP} == "lua"
63344413SkevansSRCS+=	interp_lua.c
64344413Skevans.include "${BOOTSRC}/lua.mk"
65344413SkevansLDR_INTERP=	${LIBLUA}
66344413SkevansLDR_INTERP32=	${LIBLUA32}
67355345SkevansCFLAGS.interp_lua.c= -DLUA_PATH=\"${LUAPATH}\" -I${FLUASRC}/modules
68344413Skevans.elif ${LOADER_INTERP} == "4th"
6940875SmsmithSRCS+=	interp_forth.c
70329140Skevans.include "${BOOTSRC}/ficl.mk"
71344220SkevansLDR_INTERP=	${LIBFICL}
72344220SkevansLDR_INTERP32=	${LIBFICL32}
73344413Skevans.elif ${LOADER_INTERP} == "simp"
74344413SkevansSRCS+=	interp_simple.c
75329183Skevans.else
76344413Skevans.error Unknown interpreter ${LOADER_INTERP}
7740875Smsmith.endif
7860704Sdcs
79199210Sattilio.if defined(BOOT_PROMPT_123)
80199210SattilioCFLAGS+=	-DBOOT_PROMPT_123
81199210Sattilio.endif
82199210Sattilio
83269621Smarcel.if defined(LOADER_INSTALL_SUPPORT)
84269621SmarcelSRCS+=	install.c
85269621Smarcel.endif
86312556Semaste
87329175Skevans# Filesystem support
88329175Skevans.if ${LOADER_CD9660_SUPPORT:Uno} == "yes"
89329175SkevansCFLAGS+=	-DLOADER_CD9660_SUPPORT
90329175Skevans.endif
91329175Skevans.if ${LOADER_EXT2FS_SUPPORT:Uno} == "yes"
92329175SkevansCFLAGS+=	-DLOADER_EXT2FS_SUPPORT
93329175Skevans.endif
94329175Skevans.if ${LOADER_MSDOS_SUPPORT:Uno} == "yes"
95329175SkevansCFLAGS+=	-DLOADER_MSDOS_SUPPORT
96329175Skevans.endif
97329175Skevans.if ${LOADER_NANDFS_SUPPORT:U${MK_NAND}} == "yes"
98329175SkevansCFLAGS+=	-DLOADER_NANDFS_SUPPORT
99329175Skevans.endif
100329175Skevans.if ${LOADER_UFS_SUPPORT:Uyes} == "yes"
101329175SkevansCFLAGS+=	-DLOADER_UFS_SUPPORT
102329175Skevans.endif
103329175Skevans
104329175Skevans# Compression
105329175Skevans.if ${LOADER_GZIP_SUPPORT:Uno} == "yes"
106329175SkevansCFLAGS+=	-DLOADER_GZIP_SUPPORT
107329175Skevans.endif
108329175Skevans.if ${LOADER_BZIP2_SUPPORT:Uno} == "yes"
109329175SkevansCFLAGS+=	-DLOADER_BZIP2_SUPPORT
110329175Skevans.endif
111329175Skevans
112329175Skevans# Network related things
113329175Skevans.if ${LOADER_NET_SUPPORT:Uno} == "yes"
114329175SkevansCFLAGS+=	-DLOADER_NET_SUPPORT
115329175Skevans.endif
116329175Skevans.if ${LOADER_NFS_SUPPORT:Uno} == "yes"
117329175SkevansCFLAGS+=	-DLOADER_NFS_SUPPORT
118329175Skevans.endif
119329175Skevans.if ${LOADER_TFTP_SUPPORT:Uno} == "yes"
120329175SkevansCFLAGS+=	-DLOADER_TFTP_SUPPORT
121329175Skevans.endif
122329175Skevans
123329175Skevans# Partition support
124329175Skevans.if ${LOADER_GPT_SUPPORT:Uyes} == "yes"
125329175SkevansCFLAGS+= -DLOADER_GPT_SUPPORT
126329175Skevans.endif
127329175Skevans.if ${LOADER_MBR_SUPPORT:Uyes} == "yes"
128329175SkevansCFLAGS+= -DLOADER_MBR_SUPPORT
129329175Skevans.endif
130329175Skevans
131344399Skevans.if ${HAVE_ZFS:Uno} == "yes"
132329140SkevansCFLAGS+=	-DLOADER_ZFS_SUPPORT
133329140SkevansCFLAGS+=	-I${ZFSSRC}
134329140SkevansCFLAGS+=	-I${SYSDIR}/cddl/boot/zfs
135332128SkevansSRCS+=		zfs_cmd.c
136329140Skevans.endif
137329140Skevans
138329175SkevansLIBFICL=	${BOOTOBJ}/ficl/libficl.a
139329175Skevans.if ${MACHINE} == "i386"
140329175SkevansLIBFICL32=	${LIBFICL}
141329175Skevans.else
142329175SkevansLIBFICL32=	${BOOTOBJ}/ficl32/libficl.a
143329175Skevans.endif
144344220Skevans
145344220SkevansLIBLUA=		${BOOTOBJ}/liblua/liblua.a
146344220Skevans.if ${MACHINE} == "i386"
147344220SkevansLIBLUA32=	${LIBLUA}
148344220Skevans.else
149344220SkevansLIBLUA32=	${BOOTOBJ}/liblua32/liblua.a
150329175Skevans.endif
151329175Skevans
152312556SemasteCLEANFILES+=	vers.c
153312556SemasteVERSION_FILE?=	${.CURDIR}/version
154312730Semaste.if ${MK_REPRODUCIBLE_BUILD} != no
155312730SemasteREPRO_FLAG=	-r
156312730Semaste.endif
157329140Skevansvers.c: ${LDRSRC}/newvers.sh ${VERSION_FILE}
158329140Skevans	sh ${LDRSRC}/newvers.sh ${REPRO_FLAG} ${VERSION_FILE} \
159312730Semaste	    ${NEWVERSWHAT}
160329140Skevans
161346482Skevans.if ${MK_LOADER_VERBOSE} != "no"
162346482SkevansCFLAGS+=	-DELF_VERBOSE
163346482Skevans.endif
164346482Skevans
165329140Skevans.if !empty(HELP_FILES)
166329175SkevansHELP_FILES+=	${LDRSRC}/help.common
167329175Skevans
168329140SkevansCLEANFILES+=	loader.help
169329140SkevansFILES+=		loader.help
170329140Skevans
171329140Skevansloader.help: ${HELP_FILES}
172329140Skevans	cat ${HELP_FILES} | awk -f ${LDRSRC}/merge_help.awk > ${.TARGET}
173329140Skevans.endif
174