Makefile.efiboot revision 1.30
11.30Skre# $NetBSD: Makefile.efiboot,v 1.30 2024/01/20 11:04:53 kre 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.30SkreCPPFLAGS+= -I${S}/../common/include/libc 1311.1SjmcneillLIBKERN= ${KERNLIB} 1321.1Sjmcneill 1331.1Sjmcneill### find out what to use for libz 1341.1SjmcneillZ_AS= library 1351.1Sjmcneill.include "${S}/lib/libz/Makefile.inc" 1361.29SrinCPPFLAGS+= -I${S}/lib/libz -I${S}/../common/dist/zlib 1371.1SjmcneillLIBZ= ${ZLIB} 1381.1Sjmcneill 1391.1Sjmcneill### find out what to use for libgnuefi 1401.1SjmcneillGNUEFI_AS= library 1411.1SjmcneillLIBGNUEFI_ARCH?= ${MACHINE_ARCH} 1421.1SjmcneillGNUEFIMISCMAKEFLAGS+="LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH}" 1431.1SjmcneillGNUEFIMISCCPPFLAGS+= -I${EFIDIR}/lib 1441.1Sjmcneill.include "${S}/lib/libgnuefi/Makefile.inc" 1451.1SjmcneillLIBGNUEFI= ${GNUEFILIB} 1461.1Sjmcneill 1471.1Sjmcneillcleandir distclean: .WAIT cleanlibdir 1481.1Sjmcneill 1491.1Sjmcneillcleanlibdir: 1501.1Sjmcneill -rm -rf lib 1511.1Sjmcneill 1521.1SjmcneillLIBLIST= ${LIBGNUEFI} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBSA} 1531.1Sjmcneill 1541.20SjmcneillVERSIONMACHINE=${MACHINE} 1551.1Sjmcneill.include "${S}/conf/newvers_stand.mk" 1561.1Sjmcneill 1571.1SjmcneillCLEANFILES+= ${PROG}.so ${PROG}.tmp 1581.1Sjmcneill 1591.1Sjmcneill${PROG}: ${PROG}.so 1601.24Sjmcneill ${OBJCOPY} -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ 1611.1Sjmcneill -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \ 1621.24Sjmcneill -j .reloc ${OBJCOPY_FORMAT} ${PROG}.so ${.TARGET} 1631.1Sjmcneill 1641.1Sjmcneill.include <bsd.prog.mk> 1651.1Sjmcneill 1661.1Sjmcneill${PROG}.so: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.efiboot 1671.1Sjmcneill ${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LIBLIST} 1681.1Sjmcneill @if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then \ 1691.1Sjmcneill (echo Undefined symbols; false); \ 1701.1Sjmcneill fi 1711.1Sjmcneill rm -f ${.TARGET} 1721.1Sjmcneill mv ${.TARGET}.tmp ${.TARGET} 1731.1Sjmcneill 1741.1SjmcneillKLINK_MACHINE?= ${MACHINE} 1751.1Sjmcneill.include <bsd.klinks.mk> 176