Makefile.bootprogs revision 1.3
11.3Schristos# $NetBSD: Makefile.bootprogs,v 1.3 2017/08/21 16:36:00 christos 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.1SmrgSTRIPFLAG= 151.1SmrgBINMODE= 444 161.1Smrg 171.1Smrg# XXX SHOULD NOT NEED TO DEFINE THESE! 181.1SmrgLIBCRT0= 191.1SmrgLIBCRTI= 201.1SmrgLIBC= 211.1SmrgLIBCRTBEGIN= 221.1SmrgLIBCRTEND= 231.1Smrg 241.1SmrgSTRIP?= strip 251.1Smrg 261.2SmrgCHECKSIZE_CMD= SIZE=${SIZE} ${HOST_SH} ${COMMON}/checksize.sh 271.1Smrg 281.1SmrgAFLAGS+= -DASSEMBLER -D_LOCORE -mno-abicalls -mips64 291.1Smrg# -I${.CURDIR}/../.. done by Makefile.inc 301.1SmrgCPPFLAGS+= -nostdinc -I${.OBJDIR} -D_STANDALONE -I${S} 311.1SmrgCFLAGS= -Os -g -ffreestanding -mno-abicalls -msoft-float -G 0 321.1SmrgCFLAGS+= -mips64 331.1SmrgCFLAGS+= -Werror ${CWARNFLAGS} 341.1Smrg 351.2SmrgNETBSD_VERS!=${HOST_SH} ${S}/conf/osrelease.sh 361.1SmrgCPPFLAGS+= -DNETBSD_VERS='"${NETBSD_VERS}"' 371.1Smrg 381.1SmrgCWARNFLAGS+= -Wno-main 391.1SmrgCWARNFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith 401.1SmrgCWARNFLAGS+= -Wno-pointer-sign 411.1Smrg 421.1SmrgVERSIONFLAGS+=-n 431.1Smrg.include "${S}/conf/newvers_stand.mk" 441.1Smrg 451.1Smrg# 461.1Smrg# Refer to CFE documentation for a description of these regions. 471.1Smrg# 481.1Smrg 491.1SmrgREGION1_START= 0x20000000 # "Region 1 start" 501.1SmrgREGION1_SIZE!= expr 256 \* 1024 # 256k 511.1Smrg 521.2SmrgLDSCRIPT= ${COMMON}/boot.ldscript 531.1Smrg 541.1Smrg# our memory lauout: 551.1Smrg 561.1Smrg# 'unified' boot loaders (e.g. netboot) can consume all of region 571.1Smrg# 1 for their text+data, or text+data+bss. 581.1Smrg 591.1SmrgUNIFIED_LOAD_ADDRESS= ${REGION1_START} 601.1SmrgUNIFIED_MAX_LOAD!= expr ${REGION1_SIZE} 611.1SmrgUNIFIED_MAX_TOTAL!= expr ${REGION1_SIZE} 621.1Smrg 631.1Smrg#UNIFIED_HEAP_START= right after secondary bss 641.1SmrgUNIFIED_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 651.1Smrg 661.1Smrg# two-stage boot loaders must share region 1. The first stage 671.1Smrg# loads into the lowest portion, and uses the higest portion 681.1Smrg# for its heap. The second stage loads in between the primary image 691.1Smrg# and the heap, and can reuse the memory after it (i.e. the primary's 701.1Smrg# heap) for its own heap. 711.1Smrg 721.1SmrgPRIMARY_LOAD_ADDRESS= ${REGION1_START} 731.1Smrg#PRIMARY_MAX_LOAD= booter dependent, no more than ${PRIMARY_MAX_TOTAL} 741.1SmrgPRIMARY_MAX_TOTAL!= expr 16 \* 1024 751.1Smrg 761.1Smrg# XXX SECONDARY_LOAD_ADDRESS should be 771.1Smrg# XXX (${PRIMARY_LOAD_ADDRESS} + ${PRIMARY_MAX_TOTAL}) bt there's no easy 781.1Smrg# XXX way to do that calculation and 'ld' wants a single number. 791.1SmrgSECONDARY_LOAD_ADDRESS= 0x20004000 # XXX 801.1SmrgSECONDARY_MAX_LOAD!= expr 112 \* 1024 811.1SmrgSECONDARY_MAX_TOTAL!= expr ${REGION1_SIZE} - ${PRIMARY_MAX_TOTAL} 821.1Smrg 831.1SmrgPRIMARY_HEAP_START= (${SECONDARY_LOAD_ADDRESS} + ${SECONDARY_MAX_LOAD}) 841.1SmrgPRIMARY_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 851.1Smrg 861.1Smrg#SECONDARY_HEAP_START= right after secondary bss 871.1SmrgSECONDARY_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE}) 881.1Smrg 891.1Smrg# standalone programs are like kernels. They load at 901.1Smrg# 0xfffffc0000300000 and can use the rest of memory. 911.1Smrg 921.1SmrgSTANDPROG_LOAD_ADDRESS= 0xfffffc0000300000 931.1Smrg 941.1Smrg 951.1SmrgFILE_FORMAT_CPPFLAGS= -DBOOT_ELF 961.1Smrg 971.1SmrgUNIFIED_CPPFLAGS= -DUNIFIED_BOOTBLOCK \ 981.1Smrg -DHEAP_LIMIT="${UNIFIED_HEAP_LIMIT}" \ 991.1Smrg ${FILE_FORMAT_CPPFLAGS} 1001.1Smrg 1011.1SmrgPRIMARY_CPPFLAGS= -DPRIMARY_BOOTBLOCK \ 1021.1Smrg -DSECONDARY_LOAD_ADDRESS="${SECONDARY_LOAD_ADDRESS}" \ 1031.1Smrg -DSECONDARY_MAX_LOAD="${SECONDARY_MAX_LOAD}" \ 1041.1Smrg -DHEAP_LIMIT="${PRIMARY_HEAP_LIMIT}" \ 1051.1Smrg -DHEAP_START="${PRIMARY_HEAP_START}" 1061.1Smrg 1071.1SmrgSECONDARY_CPPFLAGS= -DSECONDARY_BOOTBLOCK \ 1081.1Smrg -DHEAP_LIMIT="${SECONDARY_HEAP_LIMIT}" \ 1091.1Smrg ${FILE_FORMAT_CPPFLAGS} 1101.1Smrg 1111.1SmrgSTANDPROG_CPPFLAGS= -DSTANDALONE_PROGRAM 1121.1Smrg 1131.1Smrg.include <bsd.prog.mk> 1141.1Smrg 1151.1Smrg### find out what to use for libkern 1161.1SmrgKERN_AS= library 1171.1Smrg.include "${S}/lib/libkern/Makefile.inc" 1181.1SmrgLIBKERN= ${KERNLIB} 1191.1Smrg 1201.1Smrg### find out what to use for libz 1211.1SmrgZ_AS= library 1221.1Smrg.include "${S}/lib/libz/Makefile.inc" 1231.1SmrgLIBZ= ${ZLIB} 1241.1Smrg 1251.1Smrg### find out what to use for libsa 1261.1SmrgSA_AS= library 1271.1SmrgSAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes" 1281.1Smrg.include "${S}/lib/libsa/Makefile.inc" 1291.1SmrgLIBSA= ${SALIB} 1301.1Smrg 1311.1Smrg/usr/lib/crt0.o: 1321.1Smrg true 1331.1Smrg 1341.1Smrg/usr/lib/crtbegin.o: 1351.1Smrg true 1361.1Smrg 1371.1Smrg/usr/lib/crtend.o: 1381.1Smrg true 1391.1Smrg 1401.1Smrgcleandir: .WAIT cleandirlocal 1411.1Smrgcleandirlocal: 1421.1Smrg -rm -rf lib 143