1e4df2955SEd Schouten# $FreeBSD$
2e4df2955SEd Schouten
3193d9e76SEnji CooperSYSDIR?=${SRCTOP}/sys
4e4df2955SEd Schouten
5e4df2955SEd Schouten.PATH: ${SYSDIR}/compat/cloudabi32
6fb90d864SEd Schouten.PATH: ${SYSDIR}/${MACHINE_CPUARCH}/cloudabi32
7bab6a051SEd Schouten.PATH: ${SYSDIR}/${MACHINE}/cloudabi32
8e4df2955SEd Schouten
9e4df2955SEd SchoutenKMOD=	cloudabi32
10e4df2955SEd SchoutenSRCS=	cloudabi32_fd.c cloudabi32_module.c cloudabi32_poll.c \
11e4df2955SEd Schouten	cloudabi32_sock.c cloudabi32_syscalls.c cloudabi32_sysent.c \
12e4df2955SEd Schouten	cloudabi32_sysvec.c cloudabi32_thread.c
13e4df2955SEd Schouten
14e4df2955SEd SchoutenOBJS=	cloudabi32_vdso_blob.o
15e4df2955SEd SchoutenCLEANFILES=cloudabi32_vdso.o
16e4df2955SEd Schouten
1739202638SEd Schouten.if ${MACHINE_CPUARCH} == "aarch64"
1839202638SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6_on_64bit.S
1939202638SEd SchoutenOUTPUT_TARGET=elf64-littleaarch64
2039202638SEd SchoutenBINARY_ARCHITECTURE=aarch64
2139202638SEd Schouten.elif ${MACHINE_CPUARCH} == "amd64"
22e4df2955SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
23e4df2955SEd SchoutenOUTPUT_TARGET=elf64-x86-64-freebsd
24e4df2955SEd SchoutenBINARY_ARCHITECTURE=i386
250b972ac9SWarner Losh.elif ${MACHINE_ARCH:Marmv[67]*} != ""
262885e9e8SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6.S
272885e9e8SEd SchoutenOUTPUT_TARGET=elf32-littlearm
282885e9e8SEd SchoutenBINARY_ARCHITECTURE=arm
292885e9e8SEd Schouten.elif ${MACHINE_CPUARCH} == "i386"
302885e9e8SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686.S
312885e9e8SEd SchoutenOUTPUT_TARGET=elf32-i386-freebsd
322885e9e8SEd SchoutenBINARY_ARCHITECTURE=i386
33e4df2955SEd Schouten.endif
34e4df2955SEd Schouten
35e4df2955SEd Schoutencloudabi32_vdso.o: ${VDSO_SRCS}
36*2b6ee34cSAlex Richardson	${CC} ${CCLDFLAGS} -x assembler-with-cpp -m32 -shared -nostdinc -nostdlib \
37e4df2955SEd Schouten	    -Wl,-T${SYSDIR}/compat/cloudabi/cloudabi_vdso.lds \
38e4df2955SEd Schouten	    ${VDSO_SRCS} -o ${.TARGET}
39e4df2955SEd Schouten
40e4df2955SEd Schoutencloudabi32_vdso_blob.o: cloudabi32_vdso.o
41e4df2955SEd Schouten	${OBJCOPY} --input-target binary \
42e4df2955SEd Schouten	    --output-target ${OUTPUT_TARGET} \
43e4df2955SEd Schouten	    --binary-architecture ${BINARY_ARCHITECTURE} \
44e4df2955SEd Schouten	    cloudabi32_vdso.o ${.TARGET}
45e4df2955SEd Schouten
46e4df2955SEd Schouten.include <bsd.kmod.mk>
47