# # $FreeBSD$ # BOARDS?= BEAGLEBONE \ RPI-B \ PANDABOARD \ WANDBOARD-QUAD \ ZEDBOARD ARMTARGETS?= ARMSIZE?= 1G BOOTSIZE?= 4m ARM_WFLAGS?= CROSS_TOOLCHAIN=armv6-gcc ARMPORTS?= WITH_ARM_IMAGES?=1 CLEANFILES+= arm-all .if defined(WITH_ARM_IMAGES) && !empty(WITH_ARM_IMAGES) && !empty(BOARDS) . for BOARD in ${BOARDS} ARMTARGETS+= arm-${BOARD:tl} ARMBEFORECLEAN+= arm-mdclean${BOARD:tl} CLEANDIRS+= arm-${BOARD:tl} \ arm-${BOARD:tl}-boot CLEANFILES+= arm-buildworld${BOARD:tl} \ arm-buildkernel${BOARD:tl} \ arm-installworld${BOARD:tl} \ arm-installkernel${BOARD:tl} \ ${${BOARD:tu}IMAGE} \ ${${BOARD:tu}MDDEV} \ ${${BOARD:tu}MDFILE} \ ${${BOARD:tu}BOOTDEV} \ ${${BOARD:tu}BOOTFILE} \ build-arm-${BOARD:tl} \ build-arm-ports${BOARD:tl} ${BOARD:tu}IMAGE= arm-${BOARD:tu}.img ${BOARD:tu}MDDEV= arm-${BOARD:tu}.mddev ${BOARD:tu}MDFILE= arm-${BOARD:tu}.raw ${BOARD:tu}BOOTDEV= arm-${BOARD:tu}.bootdev ${BOARD:tu}BOOTFILE= arm-${BOARD:tu}.boot . if exists(${.CURDIR}/arm/Makefile.${BOARD}) . include "${.CURDIR}/arm/Makefile.${BOARD}" . endif arm-mdclean${BOARD:tl}: .if exists(${${BOARD:tu}MDDEV}) umount ${${BOARD:tu}MDFILE} || true mdconfig -d -u $$(cat ${${BOARD:tu}MDDEV}) .endif .if exists(${${BOARD:tu}BOOTDEV}) umount ${${BOARD:tu}BOOTFILE} || true mdconfig -d -u $$(cat ${${BOARD:tu}BOOTDEV}) .endif arm-${BOARD:tl}: arm-buildworld${BOARD:tl} arm-buildkernel${BOARD:tl} \ arm-installworld${BOARD:tl} arm-installkernel${BOARD:tl} ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} build-${.TARGET} arm-buildworld${BOARD:tl}: @echo ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${ARM_WFLAGS} \ buildworld touch ${.TARGET} arm-buildkernel${BOARD:tl}: @echo ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${ARM_WFLAGS} \ KERNCONF=${BOARD} buildkernel touch ${.TARGET} arm-installworld${BOARD:tl}: arm-mkfs${BOARD:tl} @echo ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${ARM_WFLAGS} \ DESTDIR=${.OBJDIR}/arm-${BOARD:tl} installworld distribution touch ${.TARGET} arm-installkernel${BOARD:tl}: @echo ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${ARM_WFLAGS} \ DESTDIR=${.OBJDIR}/arm-${BOARD:tl} KERNCONF=${BOARD} \ installkernel touch ${.TARGET} arm-mkfs${BOARD:tl}: .if !exists(${${BOARD:tu}MDDEV}) mkdir -p ${.OBJDIR}/arm-${BOARD:tl} truncate -s ${ARMSIZE} ${.OBJDIR}/${${BOARD:tu}MDFILE} echo $$(mdconfig -f ${.OBJDIR}/${${BOARD:tu}MDFILE}) > \ ${.OBJDIR}/${${BOARD:tu}MDDEV} newfs -S 4096 /dev/$$(cat ${.OBJDIR}/${${BOARD:tu}MDDEV}) mount /dev/$$(cat ${.OBJDIR}/${${BOARD:tu}MDDEV}) \ ${.OBJDIR}/arm-${BOARD:tl} .endif .if !exists(${${BOARD:tu}BOOTDEV}) mkdir -p ${.OBJDIR}/arm-${BOARD:tl}-boot truncate -s ${BOOTSIZE} ${.OBJDIR}/${${BOARD:tu}BOOTFILE} echo $$(mdconfig -f ${.OBJDIR}/${${BOARD:tu}BOOTFILE}) > \ ${.OBJDIR}/${${BOARD:tu}BOOTDEV} newfs_msdos -S 4096 /dev/$$(cat ${.OBJDIR}/${${BOARD:tu}BOOTDEV}) mount_msdosfs /dev/$$(cat ${.OBJDIR}/${${BOARD:tu}BOOTDEV}) \ ${.OBJDIR}/arm-${BOARD:tl}-boot .endif arm-mkimage${BOARD:tl}: .if exists(/dev/$$(cat ${.OBJDIR}/${${BOARD:tu}BOOTDEV}) umount ${.OBJDIR}/arm-${BOARD:tl}-boot .endif .if exists(/dev/$$(cat ${.OBJDIR}/${${BOARD:tu}MDDEV}) umount ${.OBJDIR}/arm-${BOARD:tl} .endif # FIXME: # Do these things need to be MBR? # I'm also not entirely sure this is correct, anyway. # mkimg -s ${${BOARD}PARTSCHEME} \ -b ${${BOARD:tu}BOOTFILE} \ -p freebsd/rootfs:=${${BOARD:tu}MDFILE} \ -o ${${BOARD:tu}IMAGE} build-arm-ports${BOARD:tl}: . if defined(ARMPORTS) && !empty(ARMPORTS) . if !exists(${PORTSDIR}/Makefile) . error "Ports tree (${PORTSDIR}) is required." . endif . for AP in ${ARMPORTS} @echo ${MAKE} -C ${PORTSDIR}/${AP} all install clean distclean . endfor . endif touch ${.TARGET} . endfor # main loop .endif # !WITH_ARM_IMAGES beforeclean: ${ARMBEFORECLEAN} arm-all: ${ARMTARGETS} touch ${.TARGET}