1# $FreeBSD$
2
3SYSDIR?=${SRCTOP}/sys
4
5.PATH: ${SYSDIR}/compat/cloudabi32
6.PATH: ${SYSDIR}/${MACHINE_CPUARCH}/cloudabi32
7.PATH: ${SYSDIR}/${MACHINE}/cloudabi32
8
9KMOD=	cloudabi32
10SRCS=	cloudabi32_fd.c cloudabi32_module.c cloudabi32_poll.c \
11	cloudabi32_sock.c cloudabi32_syscalls.c cloudabi32_sysent.c \
12	cloudabi32_sysvec.c cloudabi32_thread.c
13
14OBJS=	cloudabi32_vdso_blob.o
15CLEANFILES=cloudabi32_vdso.o
16
17.if ${MACHINE_CPUARCH} == "aarch64"
18VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6_on_64bit.S
19OUTPUT_TARGET=elf64-littleaarch64
20BINARY_ARCHITECTURE=aarch64
21.elif ${MACHINE_CPUARCH} == "amd64"
22VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
23OUTPUT_TARGET=elf64-x86-64-freebsd
24BINARY_ARCHITECTURE=i386
25.elif ${MACHINE_ARCH:Marmv[67]*} != ""
26VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6.S
27OUTPUT_TARGET=elf32-littlearm
28BINARY_ARCHITECTURE=arm
29.elif ${MACHINE_CPUARCH} == "i386"
30VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686.S
31OUTPUT_TARGET=elf32-i386-freebsd
32BINARY_ARCHITECTURE=i386
33.endif
34
35cloudabi32_vdso.o: ${VDSO_SRCS}
36	${CC} -x assembler-with-cpp -m32 -shared -nostdinc -nostdlib \
37	    -Wl,-T${SYSDIR}/compat/cloudabi/cloudabi_vdso.lds \
38	    ${VDSO_SRCS} -o ${.TARGET}
39
40cloudabi32_vdso_blob.o: cloudabi32_vdso.o
41	${OBJCOPY} --input-target binary \
42	    --output-target ${OUTPUT_TARGET} \
43	    --binary-architecture ${BINARY_ARCHITECTURE} \
44	    cloudabi32_vdso.o ${.TARGET}
45
46.include <bsd.kmod.mk>
47