11.7Schristos# $NetBSD: Makefile.booters,v 1.7 2017/04/08 19:53:20 christos Exp $
21.1Spooka
31.6SchristosNOMAN=1
41.5Schristos.include <bsd.own.mk>
51.1Spooka
61.1Spooka# $S must correspond to the top of the 'sys' tree
71.1SpookaS=	${.CURDIR}/../../../..
81.1Spooka
91.1SpookaBINMODE?=	444
101.1Spooka
111.1Spooka# XXX SHOULD NOT NEED TO DEFINE THESE!
121.1SpookaLIBCRT0=
131.4StsutsuiLIBCRTI=
141.1SpookaLIBC=
151.1SpookaLIBCRTBEGIN=
161.1SpookaLIBCRTEND=
171.1Spooka
181.1Spooka.PATH:		${.CURDIR}/../common
191.1SpookaAFLAGS+=	-D_LOCORE -D_KERNEL -mno-abicalls
201.1Spooka# -I${.CURDIR}/../.. done by Makefile.inc
211.1SpookaCPPFLAGS+=	-nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES \
221.1Spooka		-I${.OBJDIR} -I${S}
231.1Spooka# compiler flags for smallest code size
241.3SchristosCFLAGS=		-ffreestanding -Os -mmemcpy -mno-abicalls -G 128
251.1SpookaLDBUG=		-T $S/arch/mips/conf/stand.ldscript
261.1Spooka
271.1SpookaNETBSD_VERS!=	${HOST_SH} ${.CURDIR}/../../../../conf/osrelease.sh
281.1SpookaCPPFLAGS+=	-DNETBSD_VERS='"${NETBSD_VERS}"'
291.1Spooka
301.1SpookaPRIMARY_LOAD_ADDRESS?=	0x80000000
311.1SpookaSECONDARY_LOAD_ADDRESS?=0x80000000
321.1Spooka
331.1SpookaNOMAN=		# defined
341.1Spooka
351.1Spooka.if defined(PRIMARY_PROG)
361.1SpookaPROG=		${PRIMARY_PROG}
371.1SpookaSRCS =		start.S bootxx.c
381.1SpookaSRCS+=		devopen.c conf.c ace.c printf.c putchar.c
391.1Spooka
401.1SpookaLOAD_ADDRESS=	${PRIMARY_LOAD_ADDRESS}
411.1Spooka# Pick a number, any number...
421.1SpookaPRIMARY_MAX_TOTAL!=	expr 16 \* 1024
431.1Spooka
441.1SpookaCPPFLAGS+=	-DPRIMARY_BOOTBLOCK \
451.1Spooka		-DPRIMARY_LOAD_ADDRESS="${PRIMARY_LOAD_ADDRESS}" \
461.1Spooka		-DNO_GETCHAR \
471.1Spooka		-DLIBSA_NO_FS_SYMLINK -DLIBSA_NO_FS_WRITE \
481.1Spooka		-DLIBSA_NO_FS_CLOSE \
491.1Spooka		-DLIBSA_NO_DEV_CLOSE \
501.1Spooka		-DLIBSA_SINGLE_DEVICE=ace \
511.1Spooka		-D"aceioctl(x,y,z)=EINVAL" -D"aceclose(f)=0" \
521.1Spooka		-DLIBSA_NO_TWIDDLE \
531.1Spooka		-DLIBSA_NO_FD_CHECKING \
541.1Spooka		-DLIBSA_NO_RAW_ACCESS \
551.1Spooka		-DLIBSA_NO_DISKLABEL_MSGS \
561.1Spooka		-DALLOC_FIRST_FIT \
571.1Spooka		-DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET
581.1Spooka
591.1SpookaCHECKSIZE_CMD?=	SIZE=${SIZE} ${HOST_SH} ${.CURDIR}/../common/checksize.sh
601.1Spooka
611.1Spooka.elif defined(SECONDARY_PROG)
621.1SpookaPROG=		${SECONDARY_PROG}
631.1SpookaLOAD_ADDRESS=	${SECONDARY_LOAD_ADDRESS}
641.1SpookaCPPFLAGS+=	-DSECONDARY_BOOTBLOCK -DHEAP_VARIABLE
651.7Schristos
661.7Schristos.include "${S}/conf/newvers_stand.mk"
671.1Spooka.else
681.1Spooka# XXX ?
691.1Spooka.endif
701.1Spooka
711.1Spooka### find out what to use for libkern
721.1SpookaKERN_AS=	library
731.1Spooka.include "${S}/lib/libkern/Makefile.inc"
741.1SpookaLIBKERN=	${KERNLIB}
751.1Spooka
761.1Spooka### find out what to use for libz
771.1Spooka.if defined(PRIMARY_PROG)
781.1SpookaLIBZ=
791.1Spooka.else
801.1SpookaZ_AS=		library
811.1Spooka.include "${S}/lib/libz/Makefile.inc"
821.1SpookaLIBZ=		${ZLIB}
831.1Spooka.endif
841.1Spooka
851.1Spooka### find out what to use for libsa
861.1SpookaSA_AS=		library
871.1Spooka.if defined(PRIMARY_PROG)
881.1SpookaSAMISCMAKEFLAGS+=SA_INCLUDE_NET=no
891.1Spooka.endif
901.1Spooka.if defined(SECONDARY_PROG)
911.1SpookaSAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes
921.1SpookaSAMISCMAKEFLAGS+=SA_INCLUDE_NET=yes
931.1Spooka.endif
941.1Spooka.include "${S}/lib/libsa/Makefile.inc"
951.1SpookaLIBSA=		${SALIB}
961.1Spooka
971.1SpookaLIBS=		${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN}
981.1Spooka
991.1Spooka.include <bsd.own.mk>
1001.1Spooka
1011.2Smatt${PROG}: ${OBJS} ${LIBS}
1021.2Smatt	${_MKTARGET_LINK}
1031.1Spooka	${LD} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} \
1041.1Spooka	    ${LDBUG} -e start -o ${PROG}.elf ${OBJS} ${LIBS}
1051.1Spooka	@${SIZE} ${PROG}.elf
1061.1Spooka.if defined(CHECKSIZE_CMD)
1071.1Spooka	@${CHECKSIZE_CMD} ${PROG}.elf ${PRIMARY_MAX_LOAD} ${PRIMARY_MAX_TOTAL} || \
1081.1Spooka	    (rm -f ${PROG}.elf ; false)
1091.1Spooka.endif
1101.1Spooka	@${OBJCOPY} --output-target=binary ${PROG}.elf ${PROG}.bin
1111.1Spooka	dd if=${PROG}.bin of=${PROG} bs=512 conv=sync
1121.1Spooka
1131.1Spooka.include <bsd.prog.mk>
1141.2Smatt.include <bsd.klinks.mk>
1151.1Spooka
1161.1SpookaCLEANFILES+=	${PROG}.map
1171.1Spooka
1181.1Spookacleandir distclean: cleanlibdir
1191.1Spooka
1201.1Spookacleanlibdir:
1211.1Spooka	-rm -rf lib
122