xref: /freebsd/release/Makefile.vm (revision 99e908c904c8dd9487ec3fb702fa7024ea00f86e)
16513e474SGlen Barber#
26513e474SGlen Barber# $FreeBSD$
36513e474SGlen Barber#
46513e474SGlen Barber#
56513e474SGlen Barber# Makefile for building virtual machine and cloud provider disk images.
66513e474SGlen Barber#
76513e474SGlen Barber
81e7c1f17SGlen BarberVMTARGETS=	vm-image
96513e474SGlen BarberVMFORMATS?=	vhd vmdk qcow2 raw
106513e474SGlen BarberVMSIZE?=	20G
116513e474SGlen BarberVMBASE?=	vm
12d08ce983SGlen Barber
13573e7ccaSGlen BarberCLOUDWARE?=	AZURE \
14573e7ccaSGlen Barber		OPENSTACK
15f27438c7SGlen BarberAZURE_FORMAT=	vhdf
16*99e908c9SGlen BarberAZURE_DESC=	Microsoft Azure platform image
17573e7ccaSGlen BarberOPENSTACK_FORMAT=qcow2
18*99e908c9SGlen BarberOPENSTACK_DESC=	OpenStack platform image
19d08ce983SGlen Barber
20d08ce983SGlen Barber.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
21d08ce983SGlen Barber. for _CW in ${CLOUDWARE}
22d08ce983SGlen BarberCLOUDTARGETS+=	vm-${_CW:tl}
23d08ce983SGlen BarberCLEANDIRS+=	vm-${_CW:tl}
24d08ce983SGlen BarberCLEANFILES+=	${_CW:tl}.img \
25d08ce983SGlen Barber		${_CW:tl}.${${_CW:tu}_FORMAT} \
26d08ce983SGlen Barber		${_CW:tl}.${${_CW:tu}_FORMAT}.raw
27f27438c7SGlen Barber${_CW:tu}IMAGE=	${_CW:tl}.${${_CW:tu}_FORMAT}
28d08ce983SGlen Barber.  if exists(${.CURDIR}/tools/${_CW:tl}.conf) && !defined(${_CW:tu}CONF)
29d08ce983SGlen Barber${_CW:tu}CONF?=	${.CURDIR}/tools/${_CW:tl}.conf
30d08ce983SGlen Barber.  endif
3148096f81SColin Percival
3248096f81SColin Percivalvm-${_CW:tl}:
3348096f81SColin Percival	mkdir -p ${.OBJDIR}/${.TARGET}
3448096f81SColin Percival	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
3548096f81SColin Percival		${.CURDIR}/scripts/mk-vmimage.sh \
3648096f81SColin Percival		-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
3748096f81SColin Percival		-i ${.OBJDIR}/${_CW:tl}.img -s ${VMSIZE} -f ${${_CW}_FORMAT} \
3848096f81SColin Percival		-S ${WORLDDIR} -o ${.OBJDIR}/${${_CW}IMAGE} -c ${${_CW}CONF}
3948096f81SColin Percival	touch ${.TARGET}
40d08ce983SGlen Barber. endfor
41d08ce983SGlen Barber.endif
426513e474SGlen Barber
436513e474SGlen Barber.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
446513e474SGlen BarberCLEANDIRS+=	${VMTARGETS}
456513e474SGlen BarberCLEANFILES+=	${VMBASE}.img
466513e474SGlen Barber. for FORMAT in ${VMFORMATS}
476513e474SGlen BarberCLEANFILES+=	${VMBASE}.${FORMAT}
486513e474SGlen Barber. endfor
496513e474SGlen Barber.endif
506513e474SGlen Barber
511e7c1f17SGlen Barbervm-base:	vm-image
526513e474SGlen Barber
531e7c1f17SGlen Barbervm-image:
546513e474SGlen Barber.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
556513e474SGlen Barber. for FORMAT in ${VMFORMATS}
561c34bf95SGlen Barber	mkdir -p ${.OBJDIR}/${.TARGET}
576513e474SGlen Barber	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
5826bb2a60SGlen Barber		${.CURDIR}/scripts/mk-vmimage.sh \
591c34bf95SGlen Barber		-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
6026bb2a60SGlen Barber		-i ${.OBJDIR}/${VMBASE}.img -s ${VMSIZE} -f ${FORMAT} \
6126bb2a60SGlen Barber		-S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FORMAT}
626513e474SGlen Barber. endfor
636513e474SGlen Barber.endif
646513e474SGlen Barber	touch ${.TARGET}
656513e474SGlen Barber
667d2ef961SGlen Barbervm-cloudware:	${CLOUDTARGETS}
67*99e908c9SGlen Barber
68*99e908c9SGlen Barberlist-cloudware:
69*99e908c9SGlen Barber.if !empty(CLOUDWARE)
70*99e908c9SGlen Barber. for _CW in ${CLOUDWARE}
71*99e908c9SGlen Barber	@${ECHO} "${_CW:tu}: ${${_CW:tu}_DESC}"
72*99e908c9SGlen Barber. endfor
73*99e908c9SGlen Barber.endif
74