Changeset View
Changeset View
Standalone View
Standalone View
sys/boot/i386/zfsboot/Makefile
# $FreeBSD$ | # $FreeBSD$ | ||||
.PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common \ | .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common \ | ||||
${.CURDIR}/../../common ${.CURDIR}/../../../crypto/skein | ${.CURDIR}/../../common | ||||
FILES= zfsboot | FILES= zfsboot | ||||
MAN= zfsboot.8 | MAN= zfsboot.8 | ||||
NM?= nm | NM?= nm | ||||
BOOT_COMCONSOLE_PORT?= 0x3f8 | BOOT_COMCONSOLE_PORT?= 0x3f8 | ||||
BOOT_COMCONSOLE_SPEED?= 9600 | BOOT_COMCONSOLE_SPEED?= 9600 | ||||
B2SIOFMT?= 0x3 | B2SIOFMT?= 0x3 | ||||
REL1= 0x700 | REL1= 0x700 | ||||
ORG1= 0x7c00 | ORG1= 0x7c00 | ||||
ORG2= 0x2000 | ORG2= 0x2000 | ||||
CFLAGS= -DBOOTPROG=\"zfsboot\" \ | CFLAGS= -DBOOTPROG=\"zfsboot\" \ | ||||
-O1 \ | -O1 \ | ||||
-DBOOT2 \ | -DBOOT2 \ | ||||
-DSIOPRT=${BOOT_COMCONSOLE_PORT} \ | -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ | ||||
-DSIOFMT=${B2SIOFMT} \ | -DSIOFMT=${B2SIOFMT} \ | ||||
-DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ | -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ | ||||
-I${.CURDIR}/../../common \ | -I${.CURDIR}/../../common \ | ||||
-I${.CURDIR}/../common \ | -I${.CURDIR}/../common \ | ||||
-I${.CURDIR}/../../zfs \ | -I${.CURDIR}/../../zfs \ | ||||
-I${.CURDIR}/../../../cddl/boot/zfs \ | -I${.CURDIR}/../../../cddl/boot/zfs \ | ||||
-I${.CURDIR}/../../../crypto/skein \ | -I${.CURDIR}/../../.. \ | ||||
-I${.CURDIR}/../btx/lib -I. \ | -I${.CURDIR}/../btx/lib -I. \ | ||||
-I${.CURDIR}/../boot2 \ | -I${.CURDIR}/../boot2 \ | ||||
-Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \ | -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \ | ||||
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ | -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ | ||||
-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ | -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ | ||||
-Winline | -Winline | ||||
CFLAGS.gcc+= --param max-inline-insns-single=100 | CFLAGS.gcc+= --param max-inline-insns-single=100 | ||||
LD_FLAGS=-static -N --gc-sections | LD_FLAGS=-static -N --gc-sections | ||||
.if !defined(LOADER_NO_GELI_SUPPORT) | |||||
CFLAGS+= -DLOADER_GELI_SUPPORT | |||||
LIBGELIBOOT= ${.OBJDIR}/../../geli/libgeliboot.a | |||||
.PATH: ${.CURDIR}/../../../opencrypto | |||||
SRCS+= xform_aes_xts.c | |||||
OPENCRYPTO_XTS= xform_aes_xts.o | |||||
CFLAGS+= -I${.CURDIR}/../../geli | |||||
.endif | |||||
LIBBOOTCRYPTO= ${.OBJDIR}/../../libbootcrypto/libbootcrypto.a | |||||
LIBSTAND= ${.OBJDIR}/../../libstand32/libstand.a | LIBSTAND= ${.OBJDIR}/../../libstand32/libstand.a | ||||
# Pick up ../Makefile.inc early. | # Pick up ../Makefile.inc early. | ||||
.include <bsd.init.mk> | .include <bsd.init.mk> | ||||
CLEANFILES= zfsboot | CLEANFILES= zfsboot | ||||
zfsboot: zfsboot1 zfsboot2 | zfsboot: zfsboot1 zfsboot2 | ||||
cat zfsboot1 zfsboot2 > zfsboot | cat zfsboot1 zfsboot2 > zfsboot | ||||
CLEANFILES+= zfsboot1 zfsldr.out zfsldr.o | CLEANFILES+= zfsboot1 zfsldr.out zfsldr.o | ||||
zfsboot1: zfsldr.out | zfsboot1: zfsldr.out | ||||
${OBJCOPY} -S -O binary zfsldr.out ${.TARGET} | ${OBJCOPY} -S -O binary zfsldr.out ${.TARGET} | ||||
zfsldr.out: zfsldr.o | zfsldr.out: zfsldr.o | ||||
${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o | ${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o | ||||
CLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ | CLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ | ||||
zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o \ | zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o \ | ||||
skein.o skein_block.o | ${OPENCRYPTO_XTS} | ||||
# We currently allow 128k bytes for zfsboot - in practice it could be | # We currently allow 256k bytes for zfsboot - in practice it could be | ||||
# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. | # any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. | ||||
# | # | ||||
BOOT2SIZE= 131072 | BOOT2SIZE= 262144 | ||||
zfsboot2: zfsboot.ld | zfsboot2: zfsboot.ld | ||||
@set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \ | @set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \ | ||||
echo "$$x bytes available"; test $$x -ge 0 | echo "$$x bytes available"; test $$x -ge 0 | ||||
dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync status=none | dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync status=none | ||||
zfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} | zfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} | ||||
btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ | btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ | ||||
-o ${.TARGET} -P 1 zfsboot.bin | -o ${.TARGET} -P 1 zfsboot.bin | ||||
zfsboot.ldr: | zfsboot.ldr: | ||||
cp /dev/null ${.TARGET} | cp /dev/null ${.TARGET} | ||||
zfsboot.bin: zfsboot.out | zfsboot.bin: zfsboot.out | ||||
${OBJCOPY} -S -O binary zfsboot.out ${.TARGET} | ${OBJCOPY} -S -O binary zfsboot.out ${.TARGET} | ||||
zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o skein.o skein_block.o | zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o ${OPENCRYPTO_XTS} | ||||
${LD} ${LD_FLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND} | ${LD} ${LD_FLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} \ | ||||
${LIBGELIBOOT} ${LIBBOOTCRYPTO} ${LIBSTAND} | |||||
SRCS= zfsboot.c | SRCS= zfsboot.c | ||||
.if ${MACHINE_CPUARCH} == "amd64" | .if ${MACHINE_CPUARCH} == "amd64" | ||||
beforedepend zfsboot.o: machine | beforedepend zfsboot.o: machine | ||||
CLEANFILES+= machine | CLEANFILES+= machine | ||||
machine: .NOMETA | machine: .NOMETA | ||||
ln -sf ${.CURDIR}/../../../i386/include machine | ln -sf ${.CURDIR}/../../../i386/include machine | ||||
.endif | .endif | ||||
.include <bsd.prog.mk> | .include <bsd.prog.mk> | ||||
# XXX: clang integrated-as doesn't grok .codeNN directives yet | # XXX: clang integrated-as doesn't grok .codeNN directives yet | ||||
CFLAGS.zfsldr.S= ${CLANG_NO_IAS} | CFLAGS.zfsldr.S= ${CLANG_NO_IAS} |