diff options
Diffstat (limited to 'release/Makefile.arm')
-rw-r--r-- | release/Makefile.arm | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/release/Makefile.arm b/release/Makefile.arm new file mode 100644 index 000000000000..b7092c32bbc1 --- /dev/null +++ b/release/Makefile.arm @@ -0,0 +1,134 @@ +# +# $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} |