Makefile.bootprogs revision 1.6
11.6Sandvar# $NetBSD: Makefile.bootprogs,v 1.6 2022/05/28 22:16:43 andvar Exp $ 21.3Schristos 31.3SchristosNOSSP=yes 41.3SchristosNOPIE=yes 51.1Smrg 61.1Smrg.include <bsd.own.mk> 71.1Smrg.include <bsd.klinks.mk> 81.1Smrg 91.2SmrgS= ${.CURDIR}/../../../../.. 101.2SmrgCOMMON= ${.CURDIR}/../common 111.1Smrg 121.2Smrg.PATH: ${COMMON} 131.1Smrg 141.4Schristos.if ${MACHINE_ARCH:M*64*} 151.4Schristos. if ${MACHINE_ARCH:M*eb} 161.4SchristosLDABI= -melf32btsmipn32 171.4Schristos. else 181.4SchristosLDABI= -melf32ltsmipn32 191.4Schristos. endif 201.5SchristosCPUFLAGS+= -mabi=n32 211.4Schristos.endif 221.4Schristos 231.1SmrgSTRIPFLAG= 241.1SmrgBINMODE= 444 251.1Smrg 261.1Smrg# XXX SHOULD NOT NEED TO DEFINE THESE! 271.1SmrgLIBCRT0= 281.1SmrgLIBCRTI= 291.1SmrgLIBC= 301.1SmrgLIBCRTBEGIN= 311.1SmrgLIBCRTEND= 321.1Smrg 331.1SmrgSTRIP?= strip 341.1Smrg 351.2SmrgCHECKSIZE_CMD= SIZE=${SIZE} ${HOST_SH} ${COMMON}/checksize.sh 361.1Smrg 371.5SchristosAFLAGS+= -DASSEMBLER -D_LOCORE -mno-abicalls -mips64 -msoft-float 381.1Smrg# -I${.CURDIR}/../.. done by Makefile.inc 391.1SmrgCPPFLAGS+= -nostdinc -I${.OBJDIR} -D_STANDALONE -I${S} 401.1SmrgCFLAGS= -Os -g -ffreestanding -mno-abicalls -msoft-float -G 0 411.1SmrgCFLAGS+= -mips64 421.1SmrgCFLAGS+= -Werror ${CWARNFLAGS} 431.1Smrg 441.2SmrgNETBSD_VERS!=${HOST_SH} ${S}/conf/osrelease.sh 451.1SmrgCPPFLAGS+= -DNETBSD_VERS='"${NETBSD_VERS}"' 461.1Smrg 471.1SmrgCWARNFLAGS+= -Wno-main 481.1SmrgCWARNFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith 491.1SmrgCWARNFLAGS+= -Wno-pointer-sign 501.1Smrg 511.1SmrgVERSIONFLAGS+=-n 521.1Smrg.include "${S}/conf/newvers_stand.mk" 531.1Smrg 541.1Smrg# 551.1Smrg# Refer to CFE documentation for a description of these regions. 561.1Smrg# 571.1Smrg 581.1SmrgREGION1_START= 0x20000000 # "Region 1 start" 591.1SmrgREGION1_SIZE!= expr 256 \* 1024 # 256k 601.1Smrg 611.2SmrgLDSCRIPT= ${COMMON}/boot.ldscript 621.1Smrg 631.1Smrg# our memory lauout: 641.1Smrg 651.1Smrg# 'unified' boot loaders (e.g. netboot) can consume all of region 661.1Smrg# 1 for their text+data, or text+data+bss. 671.1Smrg 681.1SmrgUNIFIED_LOAD_ADDRESS= ${REGION1_START} 691.1SmrgUNIFIED_MAX_LOAD!= expr ${REGION1_SIZE} 701.1SmrgUNIFIED_MAX_TOTAL!= expr ${REGION1_SIZE} 711.1Smrg 721.1Smrg#UNIFIED_HEAP_START= right after secondary bss 731.1SmrgUNIFIED_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 741.1Smrg 751.1Smrg# two-stage boot loaders must share region 1. The first stage 761.6Sandvar# loads into the lowest portion, and uses the highest portion 771.1Smrg# for its heap. The second stage loads in between the primary image 781.1Smrg# and the heap, and can reuse the memory after it (i.e. the primary's 791.1Smrg# heap) for its own heap. 801.1Smrg 811.1SmrgPRIMARY_LOAD_ADDRESS= ${REGION1_START} 821.1Smrg#PRIMARY_MAX_LOAD= booter dependent, no more than ${PRIMARY_MAX_TOTAL} 831.1SmrgPRIMARY_MAX_TOTAL!= expr 16 \* 1024 841.1Smrg 851.1Smrg# XXX SECONDARY_LOAD_ADDRESS should be 861.1Smrg# XXX (${PRIMARY_LOAD_ADDRESS} + ${PRIMARY_MAX_TOTAL}) bt there's no easy 871.1Smrg# XXX way to do that calculation and 'ld' wants a single number. 881.1SmrgSECONDARY_LOAD_ADDRESS= 0x20004000 # XXX 891.1SmrgSECONDARY_MAX_LOAD!= expr 112 \* 1024 901.1SmrgSECONDARY_MAX_TOTAL!= expr ${REGION1_SIZE} - ${PRIMARY_MAX_TOTAL} 911.1Smrg 921.1SmrgPRIMARY_HEAP_START= (${SECONDARY_LOAD_ADDRESS} + ${SECONDARY_MAX_LOAD}) 931.1SmrgPRIMARY_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 941.1Smrg 951.1Smrg#SECONDARY_HEAP_START= right after secondary bss 961.1SmrgSECONDARY_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 971.1Smrg 981.1Smrg# standalone programs are like kernels. They load at 991.1Smrg# 0xfffffc0000300000 and can use the rest of memory. 1001.1Smrg 1011.1SmrgSTANDPROG_LOAD_ADDRESS= 0xfffffc0000300000 1021.1Smrg 1031.1Smrg 1041.1SmrgFILE_FORMAT_CPPFLAGS= -DBOOT_ELF 1051.1Smrg 1061.1SmrgUNIFIED_CPPFLAGS= -DUNIFIED_BOOTBLOCK \ 1071.1Smrg -DHEAP_LIMIT="${UNIFIED_HEAP_LIMIT}" \ 1081.1Smrg ${FILE_FORMAT_CPPFLAGS} 1091.1Smrg 1101.1SmrgPRIMARY_CPPFLAGS= -DPRIMARY_BOOTBLOCK \ 1111.1Smrg -DSECONDARY_LOAD_ADDRESS="${SECONDARY_LOAD_ADDRESS}" \ 1121.1Smrg -DSECONDARY_MAX_LOAD="${SECONDARY_MAX_LOAD}" \ 1131.1Smrg -DHEAP_LIMIT="${PRIMARY_HEAP_LIMIT}" \ 1141.1Smrg -DHEAP_START="${PRIMARY_HEAP_START}" 1151.1Smrg 1161.1SmrgSECONDARY_CPPFLAGS= -DSECONDARY_BOOTBLOCK \ 1171.1Smrg -DHEAP_LIMIT="${SECONDARY_HEAP_LIMIT}" \ 1181.1Smrg ${FILE_FORMAT_CPPFLAGS} 1191.1Smrg 1201.1SmrgSTANDPROG_CPPFLAGS= -DSTANDALONE_PROGRAM 1211.1Smrg 1221.1Smrg.include <bsd.prog.mk> 1231.1Smrg 1241.1Smrg### find out what to use for libkern 1251.1SmrgKERN_AS= library 1261.1Smrg.include "${S}/lib/libkern/Makefile.inc" 1271.1SmrgLIBKERN= ${KERNLIB} 1281.1Smrg 1291.1Smrg### find out what to use for libz 1301.1SmrgZ_AS= library 1311.1Smrg.include "${S}/lib/libz/Makefile.inc" 1321.1SmrgLIBZ= ${ZLIB} 1331.1Smrg 1341.1Smrg### find out what to use for libsa 1351.1SmrgSA_AS= library 1361.1SmrgSAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes" 1371.1Smrg.include "${S}/lib/libsa/Makefile.inc" 1381.1SmrgLIBSA= ${SALIB} 1391.1Smrg 1401.1Smrg/usr/lib/crt0.o: 1411.1Smrg true 1421.1Smrg 1431.1Smrg/usr/lib/crtbegin.o: 1441.1Smrg true 1451.1Smrg 1461.1Smrg/usr/lib/crtend.o: 1471.1Smrg true 1481.1Smrg 1491.1Smrgcleandir: .WAIT cleandirlocal 1501.1Smrgcleandirlocal: 1511.1Smrg -rm -rf lib 152