Makefile.efiboot revision 1.3
11.3Sjmcneill# $NetBSD: Makefile.efiboot,v 1.3 2018/09/03 00:04:02 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.3SjmcneillSOURCES+=	efiboot.c efichar.c efidev.c efigetsecs.c efifdt.c efifile.c efiblock.c efinet.c efipxe.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.1Sjmcneill
651.1SjmcneillCPPFLAGS+= -Wall -Wmissing-prototypes
661.1SjmcneillCPPFLAGS+= -Wno-pointer-sign
671.1Sjmcneill
681.1SjmcneillCPPFLAGS+= -DHEAP_VARIABLE
691.1Sjmcneill#CPPFLAGS+= -DSUPPORT_CD9660
701.1SjmcneillCPPFLAGS+= -D"devb2cdb(bno)=(bno)"
711.3SjmcneillCPPFLAGS+= -DSUPPORT_DOSFS
721.1Sjmcneill#CPPFLAGS+= -DSUPPORT_EXT2FS
731.3SjmcneillCPPFLAGS+= -DSUPPORT_BOOTP
741.3SjmcneillCPPFLAGS+= -DSUPPORT_DHCP
751.1Sjmcneill#CPPFLAGS+= -DSUPPORT_NFS
761.3SjmcneillCPPFLAGS+= -DSUPPORT_TFTP
771.2SjmcneillCPPFLAGS+= -DLIBSA_ENABLE_LS_OP
781.1Sjmcneill
791.1Sjmcneill#CPPFLAGS+= -DARP_DEBUG
801.1Sjmcneill#CPPFLAGS+= -DBOOTP_DEBUG
811.1Sjmcneill#CPPFLAGS+= -DNET_DEBUG
821.1Sjmcneill#CPPFLAGS+= -DNETIF_DEBUG
831.1Sjmcneill#CPPFLAGS+= -DNFS_DEBUG
841.1Sjmcneill#CPPFLAGS+= -DRARP_DEBUG
851.1Sjmcneill#CPPFLAGS+= -DRPC_DEBUG
861.1Sjmcneill
871.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT
881.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_WIDTH_SUPPORT
891.1SjmcneillSAMISCCPPFLAGS+= -D"cdb2devb(bno)=(bno)"
901.1Sjmcneill
911.1Sjmcneill### find out what to use for libsa
921.1SjmcneillSA_AS= library
931.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
941.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_CREAD=yes"
951.3SjmcneillSAMISCMAKEFLAGS+="SA_INCLUDE_NET=yes"
961.2SjmcneillSAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
971.1Sjmcneill.include "${S}/lib/libsa/Makefile.inc"
981.1SjmcneillLIBSA= ${SALIB}
991.1Sjmcneill
1001.1Sjmcneill### find out what to use for libkern
1011.1SjmcneillKERN_AS= library
1021.1SjmcneillLIBKERN_ARCH?= ${MACHINE_ARCH}
1031.1SjmcneillKERNMISCMAKEFLAGS+="LIBKERN_ARCH=${LIBKERN_ARCH}"
1041.1Sjmcneill.include "${S}/lib/libkern/Makefile.inc"
1051.1SjmcneillLIBKERN= ${KERNLIB}
1061.1Sjmcneill
1071.1Sjmcneill### find out what to use for libz
1081.1SjmcneillZ_AS= library
1091.1Sjmcneill.include "${S}/lib/libz/Makefile.inc"
1101.1SjmcneillLIBZ= ${ZLIB}
1111.1Sjmcneill
1121.1Sjmcneill### find out what to use for libgnuefi
1131.1SjmcneillGNUEFI_AS= library
1141.1SjmcneillLIBGNUEFI_ARCH?= ${MACHINE_ARCH}
1151.1SjmcneillGNUEFIMISCMAKEFLAGS+="LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH}"
1161.1SjmcneillGNUEFIMISCCPPFLAGS+= -I${EFIDIR}/lib
1171.1Sjmcneill.include "${S}/lib/libgnuefi/Makefile.inc"
1181.1SjmcneillLIBGNUEFI= ${GNUEFILIB}
1191.1Sjmcneill
1201.1Sjmcneillcleandir distclean: .WAIT cleanlibdir
1211.1Sjmcneill
1221.1Sjmcneillcleanlibdir:
1231.1Sjmcneill	-rm -rf lib
1241.1Sjmcneill
1251.1SjmcneillLIBLIST= ${LIBGNUEFI} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBSA}
1261.1Sjmcneill
1271.1SjmcneillVERSIONMACHINE=evbarm
1281.1Sjmcneill.include "${S}/conf/newvers_stand.mk"
1291.1Sjmcneill
1301.1SjmcneillCLEANFILES+=	${PROG}.so ${PROG}.tmp
1311.1Sjmcneill
1321.1Sjmcneill${PROG}: ${PROG}.so
1331.1Sjmcneill	${OBJCOPY} -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
1341.1Sjmcneill	    -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
1351.1Sjmcneill	    -j .reloc -O binary ${PROG}.so ${.TARGET}
1361.1Sjmcneill
1371.1Sjmcneill.include <bsd.prog.mk>
1381.1Sjmcneill
1391.1Sjmcneill${PROG}.so: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.efiboot
1401.1Sjmcneill	${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LIBLIST}
1411.1Sjmcneill	@if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then		\
1421.1Sjmcneill	    (echo Undefined symbols; false);				\
1431.1Sjmcneill	fi
1441.1Sjmcneill	rm -f ${.TARGET}
1451.1Sjmcneill	mv ${.TARGET}.tmp ${.TARGET}
1461.1Sjmcneill
1471.1SjmcneillKLINK_MACHINE?=	${MACHINE}
1481.1Sjmcneill.include <bsd.klinks.mk>
149