aboutsummaryrefslogblamecommitdiff
path: root/release/Makefile.arm
blob: b7092c32bbc14a62a409c95c58a8e1ca5b1d3f61 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                
                        


                  
                  
                                         
          
 
                  
                       



                                                                         
                                              

                                            



                                                      


                                              

                                                

                                                  


                                             

                                               



                                              




                                                  



                                                    
 

                                                                       
                                                            
 









                                                                 
                                                
                                                                 
                                                                            



                                                                 

                                                                      

                        
                    
                                
                                           





                                                                 
      





                                                                         
                                                                     

                                               
 















                                                         
                           




                                                  
                                                                      

          
                        

                                   

                                          
                              
 

                        
#
# $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}