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_MD_SUPPORT Add support for Memory disks 52# LOADER_MSDOS_SUPPORT Add support for FAT filesystems 53# LOADER_NET_SUPPORT Adds networking support (useless w/o net drivers sometimes) 54# LOADER_NFS_SUPPORT Add NFS support 55# LOADER_TFTP_SUPPORT Add TFTP support 56# LOADER_UFS_SUPPORT Add support for UFS filesystems 57# LOADER_XZ_SUPPORT Add support for xz compressed files 58# LOADER_ZFS_SUPPORT Add support for ZFS filesystems 59# 60 61.if ${LOADER_DISK_SUPPORT:Uyes} == "yes" 62CFLAGS.part.c+= ${ZLIB_CFLAGS} 63SRCS+= disk.c part.c vdisk.c 64.endif 65 66.if ${LOADER_NET_SUPPORT:Uno} == "yes" 67SRCS+= dev_net.c 68.endif 69 70.if defined(HAVE_BCACHE) 71SRCS+= bcache.c 72.endif 73 74.if ${LOADER_MD_SUPPORT:Uno} == "yes" 75.if defined(MD_IMAGE_SIZE) 76CFLAGS+= -DMD_IMAGE_SIZE=${MD_IMAGE_SIZE} 77.endif 78CFLAGS+= -DLOADER_MD_SUPPORT 79SRCS+= md.c 80CLEANFILES+= md.o 81.endif 82 83# Machine-independent ISA PnP 84.if defined(HAVE_ISABUS) 85SRCS+= isapnp.c 86.endif 87.if defined(HAVE_PNP) 88SRCS+= pnp.c 89.endif 90 91.if ${LOADER_INTERP} == "lua" 92SRCS+= interp_lua.c 93.include "${BOOTSRC}/lua.mk" 94LDR_INTERP= ${LIBLUA} 95LDR_INTERP32= ${LIBLUA32} 96CFLAGS.interp_lua.c= -DLUA_PATH=\"${LUAPATH}\" -I${FLUASRC}/lfs 97.elif ${LOADER_INTERP} == "4th" 98SRCS+= interp_forth.c 99.include "${BOOTSRC}/ficl.mk" 100LDR_INTERP= ${LIBFICL} 101LDR_INTERP32= ${LIBFICL32} 102.elif ${LOADER_INTERP} == "simp" 103SRCS+= interp_simple.c 104.else 105.error Unknown interpreter ${LOADER_INTERP} 106.endif 107 108.if defined(BOOT_PROMPT_123) 109CFLAGS+= -DBOOT_PROMPT_123 110.endif 111 112.if defined(LOADER_INSTALL_SUPPORT) 113SRCS+= install.c 114.endif 115 116# Filesystem support 117.if ${LOADER_CD9660_SUPPORT:Uno} == "yes" 118CFLAGS+= -DLOADER_CD9660_SUPPORT 119.endif 120.if ${LOADER_EXT2FS_SUPPORT:Uno} == "yes" 121CFLAGS+= -DLOADER_EXT2FS_SUPPORT 122.endif 123.if ${LOADER_MSDOS_SUPPORT:Uno} == "yes" 124CFLAGS+= -DLOADER_MSDOS_SUPPORT 125.endif 126.if ${LOADER_UFS_SUPPORT:Uyes} == "yes" 127CFLAGS+= -DLOADER_UFS_SUPPORT 128.endif 129 130# Compression 131.if ${LOADER_GZIP_SUPPORT:Uno} == "yes" 132CFLAGS+= -DLOADER_GZIP_SUPPORT 133.endif 134.if ${LOADER_BZIP2_SUPPORT:Uno} == "yes" 135CFLAGS+= -DLOADER_BZIP2_SUPPORT 136.endif 137.if ${LOADER_XZ_SUPPORT:Uno} == "yes" 138CFLAGS+= -DLOADER_XZ_SUPPORT 139.endif 140 141# Network related things 142.if ${LOADER_NET_SUPPORT:Uno} == "yes" 143CFLAGS+= -DLOADER_NET_SUPPORT 144.endif 145.if ${LOADER_NFS_SUPPORT:Uno} == "yes" 146CFLAGS+= -DLOADER_NFS_SUPPORT 147.endif 148.if ${LOADER_TFTP_SUPPORT:Uno} == "yes" 149CFLAGS+= -DLOADER_TFTP_SUPPORT 150.endif 151 152# Partition support 153.if ${LOADER_GPT_SUPPORT:Uyes} == "yes" 154CFLAGS+= -DLOADER_GPT_SUPPORT 155.endif 156.if ${LOADER_MBR_SUPPORT:Uyes} == "yes" 157CFLAGS+= -DLOADER_MBR_SUPPORT 158.endif 159 160.if ${HAVE_ZFS:Uno} == "yes" 161CFLAGS+= -DLOADER_ZFS_SUPPORT 162CFLAGS+= -I${SAZFSSRC} 163CFLAGS+= -I${SYSDIR}/cddl/boot/zfs 164CFLAGS+= -I${SYSDIR}/cddl/contrib/opensolaris/uts/common 165SRCS+= zfs_cmd.c 166.endif 167 168LIBFICL= ${BOOTOBJ}/ficl/libficl.a 169.if ${MACHINE} == "i386" 170LIBFICL32= ${LIBFICL} 171.else 172LIBFICL32= ${BOOTOBJ}/${"${LOADER}" == "loader_ia32":?efi/ficl32efi:ficl32}/libficl.a 173.endif 174 175LIBLUA= ${BOOTOBJ}/liblua/liblua.a 176.if ${MACHINE} == "i386" 177LIBLUA32= ${LIBLUA} 178.else 179LIBLUA32= ${BOOTOBJ}/${"${LOADER}" == "loader_ia32":?efi/liblua32efi:liblua32}/liblua.a 180.endif 181 182CLEANFILES+= vers.c 183VERSION_FILE?= ${.CURDIR}/version 184.if ${MK_REPRODUCIBLE_BUILD} != no 185REPRO_FLAG= -r 186.endif 187vers.c: ${LDRSRC}/newvers.sh ${VERSION_FILE} 188 sh ${LDRSRC}/newvers.sh ${REPRO_FLAG} ${VERSION_FILE} \ 189 ${NEWVERSWHAT} 190 191.if ${MK_LOADER_VERBOSE} != "no" 192CFLAGS+= -DELF_VERBOSE 193.endif 194 195# Each loader variant defines their own help filename. Optional or 196# build-specific commands are included by augmenting HELP_FILES. 197.if !defined(HELP_FILENAME) 198.error Define HELP_FILENAME before including loader.mk 199.endif 200 201HELP_FILES+= ${LDRSRC}/help.common 202 203CFLAGS+= -DHELP_FILENAME=\"${HELP_FILENAME}\" 204.if ${INSTALL_LOADER_HELP_FILE:Uyes} == "yes" 205CLEANFILES+= ${HELP_FILENAME} 206FILES+= ${HELP_FILENAME} 207.endif 208 209${HELP_FILENAME}: ${HELP_FILES} 210 cat ${HELP_FILES} | awk -f ${LDRSRC}/merge_help.awk > ${.TARGET} 211