svn commit: r337806 - in head: share/mk stand stand/efi stand/efi/loader stand/efi/loader_4th stand/efi/loader_lua stand/efi/loader_simp stand/i386 stand/i386/loader stand/i386/loader_4th stand/i38...

Warner Losh imp at FreeBSD.org
Tue Aug 14 18:44:45 UTC 2018


Author: imp
Date: Tue Aug 14 18:44:41 2018
New Revision: 337806
URL: https://svnweb.freebsd.org/changeset/base/337806

Log:
  Create a loader for each interpreter for x86 BIOS and all EFI
  
  Create loader_{4th,lua,simp}{,.efi}. All of these are installed by
  default. Create LOADER_DEFAULT_INTERP to specify the default
  interpreter when no other is specified. LOADER_INTERP is the current
  interpreter language building. Turn building of lua on by default to
  match 4th. simploader is a simplified loader build w/o any interpreter
  language (but with a simple loader).  This is the historic behavir you
  got with WITHOUT_FORTH. Make a hard link to the default loader. This
  has to be a hard link rather than the more desirable soft link because
  older zfsboot blocks don't support symlinks.
  
  RelNotes: Yes
  Differential Revision: https://reviews.freebsd.org/D16705

Added:
  head/stand/efi/loader_4th/
  head/stand/efi/loader_4th/Makefile   (contents, props changed)
  head/stand/efi/loader_lua/
  head/stand/efi/loader_lua/Makefile   (contents, props changed)
  head/stand/efi/loader_simp/
  head/stand/efi/loader_simp/Makefile   (contents, props changed)
  head/stand/i386/loader_4th/
  head/stand/i386/loader_4th/Makefile   (contents, props changed)
  head/stand/i386/loader_lua/
  head/stand/i386/loader_lua/Makefile   (contents, props changed)
  head/stand/i386/loader_simp/
  head/stand/i386/loader_simp/Makefile   (contents, props changed)
Modified:
  head/share/mk/src.opts.mk
  head/stand/defs.mk
  head/stand/efi/Makefile
  head/stand/efi/loader/Makefile
  head/stand/i386/Makefile
  head/stand/i386/loader/Makefile
  head/stand/i386/pxeldr/Makefile
  head/stand/loader.mk

Modified: head/share/mk/src.opts.mk
==============================================================================
--- head/share/mk/src.opts.mk	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/share/mk/src.opts.mk	Tue Aug 14 18:44:41 2018	(r337806)
@@ -130,6 +130,7 @@ __DEFAULT_YES_OPTIONS = \
     LIBTHR \
     LLVM_COV \
     LOADER_GELI \
+    LOADER_LUA \
     LOADER_OFW \
     LOADER_UBOOT \
     LOCALES \
@@ -197,7 +198,6 @@ __DEFAULT_NO_OPTIONS = \
     LIBSOFT \
     LOADER_FIREWIRE \
     LOADER_FORCE_LE \
-    LOADER_LUA \
     NAND \
     OFED_EXTRA \
     OPENLDAP \

Modified: head/stand/defs.mk
==============================================================================
--- head/stand/defs.mk	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/defs.mk	Tue Aug 14 18:44:41 2018	(r337806)
@@ -146,6 +146,18 @@ CFLAGS+=	-mlittle-endian
 .endif
 .endif
 
+#
+# Have a sensible default
+#
+.if ${MK_FORTH} == "yes"
+LOADER_DEFAULT_INTERP?=4th
+.elif ${MK_LOADER_LUA} == "yes"
+LOADER_DEFAULT_INTERP?=lua
+.else
+LOADER_DEFAULT_INTERP?=simp
+.endif
+LOADER_INTERP?=${LOADER_DEFAULT_INTERP}
+
 # Make sure we use the machine link we're about to create
 CFLAGS+=-I.
 

Modified: head/stand/efi/Makefile
==============================================================================
--- head/stand/efi/Makefile	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/efi/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -9,7 +9,10 @@ NO_OBJ=t
 .if ${COMPILER_TYPE} != "gcc" || ${COMPILER_VERSION} >= 40500
 
 SUBDIR.${MK_FDT}+=	fdt
-SUBDIR.yes+=	libefi loader boot1
+SUBDIR.yes+=	libefi boot1
+SUBDIR.${MK_FORTH}+= loader_4th
+SUBDIR.${MK_LOADER_LUA}+= loader_lua
+SUBDIR.yes+=	loader_simp
 
 .endif # ${COMPILER_TYPE} != "gcc" || ${COMPILER_VERSION} >= 40500
 

Modified: head/stand/efi/loader/Makefile
==============================================================================
--- head/stand/efi/loader/Makefile	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/efi/loader/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -8,7 +8,8 @@ LOADER_EXT2FS_SUPPORT?=	no
 
 .include <bsd.init.mk>
 
-PROG=		loader.sym
+LOADER?=	loader_${LOADER_INTERP}
+PROG=		${LOADER}.sym
 INTERNALPROG=
 WARNS?=		3
 
@@ -24,6 +25,7 @@ SRCS=	autoload.c \
 	smbios.c \
 	vers.c
 
+CFLAGS+=	-I${.CURDIR}/../loader
 .if ${MK_ZFS} != "no"
 CFLAGS+=	-I${ZFSSRC}
 CFLAGS+=	-DEFI_ZFS_BOOT
@@ -41,10 +43,11 @@ CWARNFLAGS.self_reloc.c+=	-Wno-error=maybe-uninitializ
 # warnings for now.
 CWARNFLAGS.main.c+=	-Wno-format
 
-.PATH: ${.CURDIR}/arch/${MACHINE}
-# For smbios.c
+.PATH: ${.CURDIR}/../loader
+.PATH: ${.CURDIR}/../loader/arch/${MACHINE}
+# For smbios.c XXX need to abstract properly
 .PATH: ${BOOTSRC}/i386/libi386
-.include "${.CURDIR}/arch/${MACHINE}/Makefile.inc"
+.include "${.CURDIR}/../loader/arch/${MACHINE}/Makefile.inc"
 
 CFLAGS+=	-I${.CURDIR}
 CFLAGS+=	-I${.CURDIR}/arch/${MACHINE}
@@ -78,20 +81,21 @@ HAVE_BCACHE=    yes
 CFLAGS+=	-DEFI_STAGING_SIZE=${EFI_STAGING_SIZE}
 .endif
 
+NEWVERSWHAT=	"EFI loader" ${MACHINE}
+VERSION_FILE=	${.CURDIR}/../loader/version
+
 # Always add MI sources
 .include	"${BOOTSRC}/loader.mk"
 
-FILES+=	loader.efi
-FILESMODE_loader.efi=	${BINMODE}
+FILES+=	${LOADER}.efi
+FILESMODE_${LOADER}.efi=	${BINMODE}
 
-LDSCRIPT=	${.CURDIR}/arch/${MACHINE}/ldscript.${MACHINE}
+LDSCRIPT=	${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE}
 LDFLAGS+=	-Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared
 
 CLEANFILES+=	loader.efi
 
-NEWVERSWHAT=	"EFI loader" ${MACHINE}
-
-loader.efi: ${PROG}
+${LOADER}.efi: ${PROG}
 	if ${NM} ${.ALLSRC} | grep ' U '; then \
 		echo "Undefined symbols in ${.ALLSRC}"; \
 		exit 1; \

Added: head/stand/efi/loader_4th/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/efi/loader_4th/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=4th
+
+.include "../loader/Makefile"
+

Added: head/stand/efi/loader_lua/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/efi/loader_lua/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=lua
+
+.include "../loader/Makefile"
+

Added: head/stand/efi/loader_simp/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/efi/loader_simp/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=simp
+
+.include "../loader/Makefile"
+

Modified: head/stand/i386/Makefile
==============================================================================
--- head/stand/i386/Makefile	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/i386/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -9,7 +9,9 @@ SUBDIR.yes=	mbr pmbr boot0 boot0sio btx boot2 cdboot g
 
 SUBDIR.${MK_LOADER_FIREWIRE}+=	libfirewire
 
-SUBDIR.yes+=	loader
+SUBDIR.${MK_FORTH}+= loader_4th
+SUBDIR.${MK_LOADER_LUA}+= loader_lua
+SUBDIR.yes+=	loader_simp
 
 # special boot programs, 'self-extracting boot2+loader'
 SUBDIR.yes+=	pxeldr

Modified: head/stand/i386/loader/Makefile
==============================================================================
--- head/stand/i386/loader/Makefile	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/i386/loader/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -14,7 +14,7 @@ LOADER_BZIP2_SUPPORT?=	yes
 
 .include <bsd.init.mk>
 
-LOADER?=	loader
+LOADER?=	loader_${LOADER_INTERP}
 PROG=		${LOADER}.sym
 INTERNALPROG=
 NEWVERSWHAT?=	"bootstrap loader" x86
@@ -64,11 +64,13 @@ ${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
 ${LOADER}.bin: ${LOADER}.sym
 	strip -R .comment -R .note -o ${.TARGET} ${.ALLSRC}
 
-.if ${MK_ZFS} == "yes"
-LINKS=		${BINDIR}/${LOADER} ${BINDIR}/zfs${LOADER}
+.if ${MK_ZFS} == "yes" && ${LOADER_INTERP} == ${LOADER_DEFAULT_INTERP}
+LINKS+=		${BINDIR}/${LOADER} ${BINDIR}/zfsloader
 .endif
+.if ${LOADER_INTERP} == ${LOADER_DEFAULT_INTERP}
+LINKS+=		${BINDIR}/${LOADER} ${BINDIR}/loader
+.endif
 FILES+=	${LOADER}
-# XXX INSTALLFLAGS_loader= -b
 FILESMODE_${LOADER}= ${BINMODE} -b
 
 # XXX crt0.o needs to be first for pxeboot(8) to work

Added: head/stand/i386/loader_4th/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/i386/loader_4th/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=4th
+
+.include "../loader/Makefile"
+

Added: head/stand/i386/loader_lua/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/i386/loader_lua/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=lua
+
+.include "../loader/Makefile"
+

Added: head/stand/i386/loader_simp/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/stand/i386/loader_simp/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+LOADER_INTERP=simp
+
+.include "../loader/Makefile"
+

Modified: head/stand/i386/pxeldr/Makefile
==============================================================================
--- head/stand/i386/pxeldr/Makefile	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/i386/pxeldr/Makefile	Tue Aug 14 18:44:41 2018	(r337806)
@@ -24,7 +24,8 @@ CFLAGS+=-DALWAYS_SERIAL
 
 CFLAGS+=-I${BOOTSRC}/i386/common
 
-LOADERBIN= ${BOOTOBJ}/i386/loader/loader.bin
+L=${LOADER_DEFAULT_INTERP}
+LOADERBIN= ${BOOTOBJ}/i386/loader_${L}/loader_${L}.bin
 
 CLEANFILES+= ${BOOT}.tmp
 

Modified: head/stand/loader.mk
==============================================================================
--- head/stand/loader.mk	Tue Aug 14 18:35:33 2018	(r337805)
+++ head/stand/loader.mk	Tue Aug 14 18:44:41 2018	(r337806)
@@ -57,19 +57,20 @@ SRCS+=	isapnp.c
 SRCS+=	pnp.c
 .endif
 
-# Forth interpreter
-.if ${MK_LOADER_LUA} != "no"
+.if ${LOADER_INTERP} == "lua"
 SRCS+=	interp_lua.c
 .include "${BOOTSRC}/lua.mk"
 LDR_INTERP=	${LIBLUA}
 LDR_INTERP32=	${LIBLUA32}
-.elif ${MK_FORTH} != "no"
+.elif ${LOADER_INTERP} == "4th"
 SRCS+=	interp_forth.c
 .include "${BOOTSRC}/ficl.mk"
 LDR_INTERP=	${LIBFICL}
 LDR_INTERP32=	${LIBFICL32}
-.else
+.elif ${LOADER_INTERP} == "simp"
 SRCS+=	interp_simple.c
+.else
+.error Unknown interpreter ${LOADER_INTERP}
 .endif
 
 .if defined(BOOT_PROMPT_123)


More information about the svn-src-all mailing list