Makefile.efiboot revision 1.6
11.6Sjmcneill# $NetBSD: Makefile.efiboot,v 1.6 2018/10/12 22:08:04 jmcneill Exp $
21.1Sjmcneill
31.1SjmcneillS=		${.CURDIR}/../../..
41.1Sjmcneill
51.1SjmcneillNOMAN=		# defined
61.1SjmcneillNOPIE=		# defined
71.1SjmcneillNOLIBCSANITIZER=# defined
81.1SjmcneillNOSANITIZER=	# defined
91.1SjmcneillNORELRO=	# defined
101.1SjmcneillPROG?=		boot.efi
111.1SjmcneillNEWVERSWHAT?=	"EFI Boot"
121.1Sjmcneill
131.1SjmcneillEFIDIR= ${S}/external/bsd/gnu-efi/dist
141.1SjmcneillGNUEFIARCH?= ${MACHINE_CPU}
151.1SjmcneillCPPFLAGS+= -I${EFIDIR}/inc -I${EFIDIR}/inc/${GNUEFIARCH}
161.1SjmcneillCPPFLAGS+= -I${EFIDIR}/inc/protocol
171.1Sjmcneill
181.1SjmcneillLDSCRIPT?= ${EFIDIR}/gnuefi/elf_${GNUEFIARCH}_efi.lds
191.1Sjmcneill
201.1SjmcneillAFLAGS.start.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:}
211.1Sjmcneill
221.1Sjmcneill.PATH: ${EFIDIR}/gnuefi
231.1SjmcneillSOURCES=	crt0-efi-${GNUEFIARCH}.S reloc_${GNUEFIARCH}.c
241.3SjmcneillSOURCES+=	boot.c conf.c console.c dev_net.c devopen.c exec.c panic.c prompt.c
251.6SjmcneillSOURCES+=	efiboot.c efichar.c efidev.c efienv.c efigetsecs.c efifdt.c efifile.c efiblock.c efinet.c efipxe.c efiacpi.c
261.1Sjmcneill
271.1Sjmcneill.PATH: ${S}/external/bsd/libfdt/dist
281.1SjmcneillCPPFLAGS+=	-I${S}/external/bsd/libfdt/dist
291.1SjmcneillSOURCES+=	fdt.c fdt_addresses.c fdt_empty_tree.c
301.1SjmcneillSOURCES+=	fdt_ro.c fdt_rw.c fdt_strerror.c fdt_sw.c fdt_wip.c
311.1Sjmcneill
321.1SjmcneillSRCS= ${SOURCES} ${EXTRA_SOURCES}
331.1Sjmcneill
341.1Sjmcneill.include <bsd.init.mk>
351.1Sjmcneill
361.1SjmcneillSTRIPFLAG=	# nothing
371.1Sjmcneill
381.1SjmcneillLIBCRT0=	# nothing
391.1SjmcneillLIBCRTI=	# nothing
401.1SjmcneillLIBCRTBEGIN=	# nothing
411.1SjmcneillLIBCRTEND=	# nothing
421.1SjmcneillLIBC=		# nothing
431.1Sjmcneill
441.1SjmcneillBINDIR=/usr/mdec
451.1SjmcneillBINMODE=444
461.1Sjmcneill
471.1Sjmcneill.PATH:	${.CURDIR} ${.CURDIR}/..
481.1Sjmcneill.PATH:	${.CURDIR}/../../lib
491.1Sjmcneill
501.1SjmcneillLDFLAGS+= -nostdlib -T${LDSCRIPT} -Bsymbolic -shared
511.1SjmcneillCPPFLAGS+= -I$S -I${.CURDIR} -I${.CURDIR}/../common -I$S/lib/libsa
521.1SjmcneillCPPFLAGS+= -I${.OBJDIR}
531.1SjmcneillCPPFLAGS+= -I${.CURDIR}/../../lib
541.1Sjmcneill
551.1SjmcneillCOPTS+=	-fpic -g -O2
561.1SjmcneillCOPTS+=	-fshort-wchar -fno-strict-aliasing
571.1SjmcneillCOPTS+=	-ffreestanding -fno-stack-protector
581.1SjmcneillLDFLAGS+= --defsym=EFI_SUBSYSTEM=0xa
591.1Sjmcneill
601.1Sjmcneill
611.1SjmcneillCOPTS+= ${${ACTIVE_CC} == "gcc":? -Wno-error=unused-but-set-variable :}
621.1SjmcneillCPPFLAGS+= -nostdinc -D_STANDALONE
631.1SjmcneillCPPFLAGS+= -DEFIBOOT
641.5SjmcneillCPPFLAGS+= -DPROGRESS_FN=efi_progress
651.1Sjmcneill
661.1SjmcneillCPPFLAGS+= -Wall -Wmissing-prototypes
671.1SjmcneillCPPFLAGS+= -Wno-pointer-sign
681.1Sjmcneill
691.1SjmcneillCPPFLAGS+= -DHEAP_VARIABLE
701.1Sjmcneill#CPPFLAGS+= -DSUPPORT_CD9660
711.1SjmcneillCPPFLAGS+= -D"devb2cdb(bno)=(bno)"
721.3SjmcneillCPPFLAGS+= -DSUPPORT_DOSFS
731.1Sjmcneill#CPPFLAGS+= -DSUPPORT_EXT2FS
741.3SjmcneillCPPFLAGS+= -DSUPPORT_BOOTP
751.3SjmcneillCPPFLAGS+= -DSUPPORT_DHCP
761.1Sjmcneill#CPPFLAGS+= -DSUPPORT_NFS
771.3SjmcneillCPPFLAGS+= -DSUPPORT_TFTP
781.2SjmcneillCPPFLAGS+= -DLIBSA_ENABLE_LS_OP
791.1Sjmcneill
801.1Sjmcneill#CPPFLAGS+= -DARP_DEBUG
811.1Sjmcneill#CPPFLAGS+= -DBOOTP_DEBUG
821.1Sjmcneill#CPPFLAGS+= -DNET_DEBUG
831.1Sjmcneill#CPPFLAGS+= -DNETIF_DEBUG
841.1Sjmcneill#CPPFLAGS+= -DNFS_DEBUG
851.1Sjmcneill#CPPFLAGS+= -DRARP_DEBUG
861.1Sjmcneill#CPPFLAGS+= -DRPC_DEBUG
871.1Sjmcneill
881.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT
891.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_WIDTH_SUPPORT
901.1SjmcneillSAMISCCPPFLAGS+= -D"cdb2devb(bno)=(bno)"
911.1Sjmcneill
921.1Sjmcneill### find out what to use for libsa
931.1SjmcneillSA_AS= library
941.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
951.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_CREAD=yes"
961.3SjmcneillSAMISCMAKEFLAGS+="SA_INCLUDE_NET=yes"
971.2SjmcneillSAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
981.1Sjmcneill.include "${S}/lib/libsa/Makefile.inc"
991.1SjmcneillLIBSA= ${SALIB}
1001.1Sjmcneill
1011.1Sjmcneill### find out what to use for libkern
1021.1SjmcneillKERN_AS= library
1031.1SjmcneillLIBKERN_ARCH?= ${MACHINE_ARCH}
1041.1SjmcneillKERNMISCMAKEFLAGS+="LIBKERN_ARCH=${LIBKERN_ARCH}"
1051.1Sjmcneill.include "${S}/lib/libkern/Makefile.inc"
1061.1SjmcneillLIBKERN= ${KERNLIB}
1071.1Sjmcneill
1081.1Sjmcneill### find out what to use for libz
1091.1SjmcneillZ_AS= library
1101.1Sjmcneill.include "${S}/lib/libz/Makefile.inc"
1111.1SjmcneillLIBZ= ${ZLIB}
1121.1Sjmcneill
1131.1Sjmcneill### find out what to use for libgnuefi
1141.1SjmcneillGNUEFI_AS= library
1151.1SjmcneillLIBGNUEFI_ARCH?= ${MACHINE_ARCH}
1161.1SjmcneillGNUEFIMISCMAKEFLAGS+="LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH}"
1171.1SjmcneillGNUEFIMISCCPPFLAGS+= -I${EFIDIR}/lib
1181.1Sjmcneill.include "${S}/lib/libgnuefi/Makefile.inc"
1191.1SjmcneillLIBGNUEFI= ${GNUEFILIB}
1201.1Sjmcneill
1211.1Sjmcneillcleandir distclean: .WAIT cleanlibdir
1221.1Sjmcneill
1231.1Sjmcneillcleanlibdir:
1241.1Sjmcneill	-rm -rf lib
1251.1Sjmcneill
1261.1SjmcneillLIBLIST= ${LIBGNUEFI} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBSA}
1271.1Sjmcneill
1281.1SjmcneillVERSIONMACHINE=evbarm
1291.1Sjmcneill.include "${S}/conf/newvers_stand.mk"
1301.1Sjmcneill
1311.1SjmcneillCLEANFILES+=	${PROG}.so ${PROG}.tmp
1321.1Sjmcneill
1331.1Sjmcneill${PROG}: ${PROG}.so
1341.1Sjmcneill	${OBJCOPY} -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
1351.1Sjmcneill	    -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
1361.1Sjmcneill	    -j .reloc -O binary ${PROG}.so ${.TARGET}
1371.1Sjmcneill
1381.1Sjmcneill.include <bsd.prog.mk>
1391.1Sjmcneill
1401.1Sjmcneill${PROG}.so: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.efiboot
1411.1Sjmcneill	${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LIBLIST}
1421.1Sjmcneill	@if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then		\
1431.1Sjmcneill	    (echo Undefined symbols; false);				\
1441.1Sjmcneill	fi
1451.1Sjmcneill	rm -f ${.TARGET}
1461.1Sjmcneill	mv ${.TARGET}.tmp ${.TARGET}
1471.1Sjmcneill
1481.1SjmcneillKLINK_MACHINE?=	${MACHINE}
1491.1Sjmcneill.include <bsd.klinks.mk>
150