1.PATH: ${LDRSRC} ${BOOTSRC}/libsa 2 3CFLAGS+=-I${LDRSRC} 4 5SRCS+= boot.c commands.c console.c devopen.c interp.c 6SRCS+= interp_backslash.c interp_parse.c ls.c misc.c 7SRCS+= modinfo.c 8SRCS+= module.c nvstore.c pnglite.c tslog.c 9 10CFLAGS.module.c += -I$(SRCTOP)/sys/teken -I${SRCTOP}/contrib/pnglite 11 12.PATH: ${SRCTOP}/contrib/pnglite 13CFLAGS.pnglite.c+= -I${SRCTOP}/contrib/pnglite 14CFLAGS.pnglite.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib 15 16.if ${MACHINE} == "i386" || ${MACHINE_CPUARCH} == "amd64" 17SRCS+= load_elf32.c load_elf32_obj.c reloc_elf32.c 18SRCS+= load_elf64.c load_elf64_obj.c reloc_elf64.c 19.elif ${MACHINE_CPUARCH} == "aarch64" 20SRCS+= load_elf64.c reloc_elf64.c 21.elif ${MACHINE_CPUARCH} == "arm" 22SRCS+= load_elf32.c reloc_elf32.c 23.elif ${MACHINE_CPUARCH} == "powerpc" 24SRCS+= load_elf32.c reloc_elf32.c 25SRCS+= load_elf64.c reloc_elf64.c 26SRCS+= metadata.c 27.elif ${MACHINE_CPUARCH} == "riscv" 28SRCS+= load_elf64.c reloc_elf64.c 29SRCS+= metadata.c 30.endif 31 32# 33# LOADER_*_SUPPORT variables are used to subset the boot loader in the various 34# configurations each platform supports. These are typically used to omit broken 35# options, or to size optimize for space constrained instances. These are set in 36# loader Makefiles (which include loader.mk) to control which subset of features 37# are enabled. These cannot generally be set in src.conf since that would affect 38# all loaders, but also not all loaders are setup for overrides like that and 39# not all combinations of the following have been tested or even work. Sometimes 40# non-default values won't work due to buggy support for that component being 41# optional. 42# 43# LOADER_BZIP2_SUPPORT Add support for bzip2 compressed files 44# LOADER_CD9660_SUPPORT Add support for iso9660 filesystems 45# LOADER_DISK_SUPPORT Adds support for disks and mounting filesystems on it 46# LOADER_EXT2FS_SUPPORT Add support for ext2 Linux filesystems 47# LOADER_GPT_SUPPORT Add support for GPT partitions 48# LOADER_GZIP_SUPPORT Add support for gzip compressed files 49# LOADER_INSTALL_SUPPORT Add support for booting off of installl ISOs 50# LOADER_MBR_SUPPORT Add support for MBR partitions 51# LOADER_MSDOS_SUPPORT Add support for FAT filesystems 52# LOADER_NET_SUPPORT Adds networking support (useless w/o net drivers sometimes) 53# LOADER_NFS_SUPPORT Add NFS support 54# LOADER_TFTP_SUPPORT Add TFTP support 55# LOADER_UFS_SUPPORT Add support for UFS filesystems 56# LOADER_ZFS_SUPPORT Add support for ZFS filesystems 57# 58 59.if ${LOADER_DISK_SUPPORT:Uyes} == "yes" 60CFLAGS.part.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib 61SRCS+= disk.c part.c vdisk.c 62.endif 63 64.if ${LOADER_NET_SUPPORT:Uno} == "yes" 65SRCS+= dev_net.c 66.endif 67 68.if defined(HAVE_BCACHE) 69SRCS+= bcache.c 70.endif 71 72.if defined(MD_IMAGE_SIZE) 73CFLAGS+= -DMD_IMAGE_SIZE=${MD_IMAGE_SIZE} 74SRCS+= md.c 75.else 76CLEANFILES+= md.o 77.endif 78 79# Machine-independent ISA PnP 80.if defined(HAVE_ISABUS) 81SRCS+= isapnp.c 82.endif 83.if defined(HAVE_PNP) 84SRCS+= pnp.c 85.endif 86 87.if ${LOADER_INTERP} == "lua" 88SRCS+= interp_lua.c 89.include "${BOOTSRC}/lua.mk" 90LDR_INTERP= ${LIBLUA} 91LDR_INTERP32= ${LIBLUA32} 92CFLAGS.interp_lua.c= -DLUA_PATH=\"${LUAPATH}\" -I${FLUASRC}/modules 93.elif ${LOADER_INTERP} == "4th" 94SRCS+= interp_forth.c 95.include "${BOOTSRC}/ficl.mk" 96LDR_INTERP= ${LIBFICL} 97LDR_INTERP32= ${LIBFICL32} 98.elif ${LOADER_INTERP} == "simp" 99SRCS+= interp_simple.c 100.else 101.error Unknown interpreter ${LOADER_INTERP} 102.endif 103 104.if defined(BOOT_PROMPT_123) 105CFLAGS+= -DBOOT_PROMPT_123 106.endif 107 108.if defined(LOADER_INSTALL_SUPPORT) 109SRCS+= install.c 110.endif 111 112# Filesystem support 113.if ${LOADER_CD9660_SUPPORT:Uno} == "yes" 114CFLAGS+= -DLOADER_CD9660_SUPPORT 115.endif 116.if ${LOADER_EXT2FS_SUPPORT:Uno} == "yes" 117CFLAGS+= -DLOADER_EXT2FS_SUPPORT 118.endif 119.if ${LOADER_MSDOS_SUPPORT:Uno} == "yes" 120CFLAGS+= -DLOADER_MSDOS_SUPPORT 121.endif 122.if ${LOADER_UFS_SUPPORT:Uyes} == "yes" 123CFLAGS+= -DLOADER_UFS_SUPPORT 124.endif 125 126# Compression 127.if ${LOADER_GZIP_SUPPORT:Uno} == "yes" 128CFLAGS+= -DLOADER_GZIP_SUPPORT 129.endif 130.if ${LOADER_BZIP2_SUPPORT:Uno} == "yes" 131CFLAGS+= -DLOADER_BZIP2_SUPPORT 132.endif 133 134# Network related things 135.if ${LOADER_NET_SUPPORT:Uno} == "yes" 136CFLAGS+= -DLOADER_NET_SUPPORT 137.endif 138.if ${LOADER_NFS_SUPPORT:Uno} == "yes" 139CFLAGS+= -DLOADER_NFS_SUPPORT 140.endif 141.if ${LOADER_TFTP_SUPPORT:Uno} == "yes" 142CFLAGS+= -DLOADER_TFTP_SUPPORT 143.endif 144 145# Partition support 146.if ${LOADER_GPT_SUPPORT:Uyes} == "yes" 147CFLAGS+= -DLOADER_GPT_SUPPORT 148.endif 149.if ${LOADER_MBR_SUPPORT:Uyes} == "yes" 150CFLAGS+= -DLOADER_MBR_SUPPORT 151.endif 152 153.if ${HAVE_ZFS:Uno} == "yes" 154CFLAGS+= -DLOADER_ZFS_SUPPORT 155CFLAGS+= -I${ZFSSRC} 156CFLAGS+= -I${SYSDIR}/cddl/boot/zfs 157CFLAGS+= -I${SYSDIR}/cddl/contrib/opensolaris/uts/common 158SRCS+= zfs_cmd.c 159.endif 160 161LIBFICL= ${BOOTOBJ}/ficl/libficl.a 162.if ${MACHINE} == "i386" 163LIBFICL32= ${LIBFICL} 164.else 165LIBFICL32= ${BOOTOBJ}/ficl32/libficl.a 166.endif 167 168LIBLUA= ${BOOTOBJ}/liblua/liblua.a 169.if ${MACHINE} == "i386" 170LIBLUA32= ${LIBLUA} 171.else 172LIBLUA32= ${BOOTOBJ}/liblua32/liblua.a 173.endif 174 175CLEANFILES+= vers.c 176VERSION_FILE?= ${.CURDIR}/version 177.if ${MK_REPRODUCIBLE_BUILD} != no 178REPRO_FLAG= -r 179.endif 180vers.c: ${LDRSRC}/newvers.sh ${VERSION_FILE} 181 sh ${LDRSRC}/newvers.sh ${REPRO_FLAG} ${VERSION_FILE} \ 182 ${NEWVERSWHAT} 183 184.if ${MK_LOADER_VERBOSE} != "no" 185CFLAGS+= -DELF_VERBOSE 186.endif 187 188# Each loader variant defines their own help filename. Optional or 189# build-specific commands are included by augmenting HELP_FILES. 190.if !defined(HELP_FILENAME) 191.error Define HELP_FILENAME before including loader.mk 192.endif 193 194HELP_FILES+= ${LDRSRC}/help.common 195 196CFLAGS+= -DHELP_FILENAME=\"${HELP_FILENAME}\" 197.if ${INSTALL_LOADER_HELP_FILE:Uyes} == "yes" 198CLEANFILES+= ${HELP_FILENAME} 199FILES+= ${HELP_FILENAME} 200.endif 201 202${HELP_FILENAME}: ${HELP_FILES} 203 cat ${HELP_FILES} | awk -f ${LDRSRC}/merge_help.awk > ${.TARGET} 204