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