Makefile.efiboot revision 1.29
11.29Srin# $NetBSD: Makefile.efiboot,v 1.29 2023/06/15 03:20:58 rin 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.10SjmcneillNEWVERSWHAT?=	"efiboot"
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.15SjmcneillSOURCES+=	boot.c bootmenu.c conf.c console.c dev_net.c devopen.c exec.c \
251.26Sjmcneill		module.c panic.c prompt.c userconf.c
261.24SjmcneillSOURCES+=	efiboot.c efichar.c efidev.c efigetsecs.c \
271.24Sjmcneill		efifile.c efiblock.c efinet.c efipxe.c efirng.c \
281.23Sjmcneill		efiwatchdog.c efigop.c smbios.c
291.1Sjmcneill
301.24Sjmcneill.if ${EFIBOOT_FDT:Uno} == "yes"
311.24SjmcneillCPPFLAGS+=	-DEFIBOOT_FDT
321.24SjmcneillSOURCES+=	efifdt.c overlay.c
331.1Sjmcneill.PATH: ${S}/external/bsd/libfdt/dist
341.1SjmcneillCPPFLAGS+=	-I${S}/external/bsd/libfdt/dist
351.7SthorpejSOURCES+=	fdt.c fdt_addresses.c fdt_empty_tree.c fdt_overlay.c
361.1SjmcneillSOURCES+=	fdt_ro.c fdt_rw.c fdt_strerror.c fdt_sw.c fdt_wip.c
371.24Sjmcneill.endif
381.24Sjmcneill
391.24Sjmcneill.if ${EFIBOOT_ACPI:Uno} == "yes"
401.24SjmcneillCPPFLAGS+=	-DEFIBOOT_ACPI
411.24SjmcneillSOURCES+=	efiacpi.c
421.24Sjmcneill.endif
431.1Sjmcneill
441.1SjmcneillSRCS= ${SOURCES} ${EXTRA_SOURCES}
451.1Sjmcneill
461.1Sjmcneill.include <bsd.init.mk>
471.1Sjmcneill
481.1SjmcneillSTRIPFLAG=	# nothing
491.1Sjmcneill
501.1SjmcneillLIBCRT0=	# nothing
511.1SjmcneillLIBCRTI=	# nothing
521.1SjmcneillLIBCRTBEGIN=	# nothing
531.1SjmcneillLIBCRTEND=	# nothing
541.1SjmcneillLIBC=		# nothing
551.1Sjmcneill
561.1SjmcneillBINDIR=/usr/mdec
571.1SjmcneillBINMODE=444
581.1Sjmcneill
591.1Sjmcneill.PATH:	${.CURDIR} ${.CURDIR}/..
601.1Sjmcneill.PATH:	${.CURDIR}/../../lib
611.1Sjmcneill
621.12SrinLDFLAGS+= --no-dynamic-linker --noinhibit-exec
631.1SjmcneillLDFLAGS+= -nostdlib -T${LDSCRIPT} -Bsymbolic -shared
641.1SjmcneillCPPFLAGS+= -I$S -I${.CURDIR} -I${.CURDIR}/../common -I$S/lib/libsa
651.1SjmcneillCPPFLAGS+= -I${.OBJDIR}
661.1SjmcneillCPPFLAGS+= -I${.CURDIR}/../../lib
671.7SthorpejCPPFLAGS+= -I${S}/../common/include
681.1Sjmcneill
691.1SjmcneillCOPTS+=	-fpic -g -O2
701.1SjmcneillCOPTS+=	-fshort-wchar -fno-strict-aliasing
711.1SjmcneillCOPTS+=	-ffreestanding -fno-stack-protector
721.1SjmcneillLDFLAGS+= --defsym=EFI_SUBSYSTEM=0xa
731.1Sjmcneill
741.1Sjmcneill
751.1SjmcneillCOPTS+= ${${ACTIVE_CC} == "gcc":? -Wno-error=unused-but-set-variable :}
761.1SjmcneillCPPFLAGS+= -nostdinc -D_STANDALONE
771.1SjmcneillCPPFLAGS+= -DEFIBOOT
781.5SjmcneillCPPFLAGS+= -DPROGRESS_FN=efi_progress
791.1Sjmcneill
801.1SjmcneillCPPFLAGS+= -Wall -Wmissing-prototypes
811.1SjmcneillCPPFLAGS+= -Wno-pointer-sign
821.1Sjmcneill
831.1SjmcneillCPPFLAGS+= -DHEAP_VARIABLE
841.19SjmcneillCPPFLAGS+= -DSUPPORT_CD9660
851.1SjmcneillCPPFLAGS+= -D"devb2cdb(bno)=(bno)"
861.3SjmcneillCPPFLAGS+= -DSUPPORT_DOSFS
871.1Sjmcneill#CPPFLAGS+= -DSUPPORT_EXT2FS
881.3SjmcneillCPPFLAGS+= -DSUPPORT_BOOTP
891.3SjmcneillCPPFLAGS+= -DSUPPORT_DHCP
901.1Sjmcneill#CPPFLAGS+= -DSUPPORT_NFS
911.3SjmcneillCPPFLAGS+= -DSUPPORT_TFTP
921.2SjmcneillCPPFLAGS+= -DLIBSA_ENABLE_LS_OP
931.21SmrgCPPFLAGS+= -DLIBSA_FFS_EI
941.21SmrgCPPFLAGS+= -DLIBSA_DISKLABEL_EI
951.25SjmcneillCPPFLAGS+= -DDEFAULT_TIMEOUT=5
961.1Sjmcneill
971.7Sthorpej#CPPFLAGS+= -DEFIBOOT_DEBUG
981.1Sjmcneill#CPPFLAGS+= -DARP_DEBUG
991.1Sjmcneill#CPPFLAGS+= -DBOOTP_DEBUG
1001.1Sjmcneill#CPPFLAGS+= -DNET_DEBUG
1011.1Sjmcneill#CPPFLAGS+= -DNETIF_DEBUG
1021.1Sjmcneill#CPPFLAGS+= -DNFS_DEBUG
1031.1Sjmcneill#CPPFLAGS+= -DRARP_DEBUG
1041.1Sjmcneill#CPPFLAGS+= -DRPC_DEBUG
1051.1Sjmcneill
1061.11Stnn# Follow the suit of Makefile.kern.inc; needed for the lfs64 union
1071.11Stnn# accessors -- they don't actually dereference the resulting pointer,
1081.11Stnn# just use it for type-checking.
1091.28SlukemCWARNFLAGS+=		${CC_WNO_ADDRESS_OF_PACKED_MEMBER}
1101.11Stnn
1111.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT
1121.1SjmcneillSAMISCCPPFLAGS+= -DLIBSA_PRINTF_WIDTH_SUPPORT
1131.1SjmcneillSAMISCCPPFLAGS+= -D"cdb2devb(bno)=(bno)"
1141.1Sjmcneill
1151.1Sjmcneill### find out what to use for libsa
1161.1SjmcneillSA_AS= library
1171.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
1181.1SjmcneillSAMISCMAKEFLAGS+="SA_USE_CREAD=yes"
1191.3SjmcneillSAMISCMAKEFLAGS+="SA_INCLUDE_NET=yes"
1201.2SjmcneillSAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
1211.8SrinSAMISCMAKEFLAGS+="SA_ENABLE_BIENDIAN=yes"
1221.1Sjmcneill.include "${S}/lib/libsa/Makefile.inc"
1231.1SjmcneillLIBSA= ${SALIB}
1241.1Sjmcneill
1251.1Sjmcneill### find out what to use for libkern
1261.1SjmcneillKERN_AS= library
1271.1SjmcneillLIBKERN_ARCH?= ${MACHINE_ARCH}
1281.1SjmcneillKERNMISCMAKEFLAGS+="LIBKERN_ARCH=${LIBKERN_ARCH}"
1291.1Sjmcneill.include "${S}/lib/libkern/Makefile.inc"
1301.1SjmcneillLIBKERN= ${KERNLIB}
1311.1Sjmcneill
1321.1Sjmcneill### find out what to use for libz
1331.1SjmcneillZ_AS= library
1341.1Sjmcneill.include "${S}/lib/libz/Makefile.inc"
1351.29SrinCPPFLAGS+=	-I${S}/lib/libz -I${S}/../common/dist/zlib
1361.1SjmcneillLIBZ= ${ZLIB}
1371.1Sjmcneill
1381.1Sjmcneill### find out what to use for libgnuefi
1391.1SjmcneillGNUEFI_AS= library
1401.1SjmcneillLIBGNUEFI_ARCH?= ${MACHINE_ARCH}
1411.1SjmcneillGNUEFIMISCMAKEFLAGS+="LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH}"
1421.1SjmcneillGNUEFIMISCCPPFLAGS+= -I${EFIDIR}/lib
1431.1Sjmcneill.include "${S}/lib/libgnuefi/Makefile.inc"
1441.1SjmcneillLIBGNUEFI= ${GNUEFILIB}
1451.1Sjmcneill
1461.1Sjmcneillcleandir distclean: .WAIT cleanlibdir
1471.1Sjmcneill
1481.1Sjmcneillcleanlibdir:
1491.1Sjmcneill	-rm -rf lib
1501.1Sjmcneill
1511.1SjmcneillLIBLIST= ${LIBGNUEFI} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBSA}
1521.1Sjmcneill
1531.20SjmcneillVERSIONMACHINE=${MACHINE}
1541.1Sjmcneill.include "${S}/conf/newvers_stand.mk"
1551.1Sjmcneill
1561.1SjmcneillCLEANFILES+=	${PROG}.so ${PROG}.tmp
1571.1Sjmcneill
1581.1Sjmcneill${PROG}: ${PROG}.so
1591.24Sjmcneill	${OBJCOPY} -j .text -j .sdata -j .data -j .dynamic -j .dynsym \
1601.1Sjmcneill	    -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
1611.24Sjmcneill	    -j .reloc ${OBJCOPY_FORMAT} ${PROG}.so ${.TARGET}
1621.1Sjmcneill
1631.1Sjmcneill.include <bsd.prog.mk>
1641.1Sjmcneill
1651.1Sjmcneill${PROG}.so: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.efiboot
1661.1Sjmcneill	${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LIBLIST}
1671.1Sjmcneill	@if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then		\
1681.1Sjmcneill	    (echo Undefined symbols; false);				\
1691.1Sjmcneill	fi
1701.1Sjmcneill	rm -f ${.TARGET}
1711.1Sjmcneill	mv ${.TARGET}.tmp ${.TARGET}
1721.1Sjmcneill
1731.1SjmcneillKLINK_MACHINE?=	${MACHINE}
1741.1Sjmcneill.include <bsd.klinks.mk>
175