18bc78518SEd Schouten# $FreeBSD$
28bc78518SEd Schouten
3193d9e76SEnji CooperSYSDIR?=${SRCTOP}/sys
413b4b4dfSEd Schouten
513b4b4dfSEd Schouten.PATH: ${SYSDIR}/compat/cloudabi64
6fb90d864SEd Schouten.PATH: ${SYSDIR}/${MACHINE_CPUARCH}/cloudabi64
7bab6a051SEd Schouten.PATH: ${SYSDIR}/${MACHINE}/cloudabi64
88bc78518SEd Schouten
98bc78518SEd SchoutenKMOD=	cloudabi64
10b78ef4bdSEd SchoutenSRCS=	cloudabi64_fd.c cloudabi64_module.c cloudabi64_poll.c \
11b78ef4bdSEd Schouten	cloudabi64_sock.c cloudabi64_syscalls.c cloudabi64_sysent.c \
12b78ef4bdSEd Schouten	cloudabi64_sysvec.c cloudabi64_thread.c
138bc78518SEd Schouten
1413b4b4dfSEd SchoutenOBJS=	cloudabi64_vdso_blob.o
1513b4b4dfSEd SchoutenCLEANFILES=cloudabi64_vdso.o
1613b4b4dfSEd Schouten
1713b4b4dfSEd Schouten.if ${MACHINE_CPUARCH} == "aarch64"
187ce07161SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_aarch64.S
1913b4b4dfSEd SchoutenOUTPUT_TARGET=elf64-littleaarch64
2013b4b4dfSEd SchoutenBINARY_ARCHITECTURE=aarch64
2113b4b4dfSEd Schouten.elif ${MACHINE_CPUARCH} == "amd64"
227ce07161SEd SchoutenVDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_x86_64.S
2313b4b4dfSEd SchoutenOUTPUT_TARGET=elf64-x86-64-freebsd
2413b4b4dfSEd SchoutenBINARY_ARCHITECTURE=i386
2513b4b4dfSEd Schouten.endif
2613b4b4dfSEd Schouten
2713b4b4dfSEd Schoutencloudabi64_vdso.o: ${VDSO_SRCS}
28*2b6ee34cSAlex Richardson	${CC} ${CCLDFLAGS} -x assembler-with-cpp -shared -nostdinc -nostdlib \
294fbc9065SEd Schouten	    -Wl,-T${SYSDIR}/compat/cloudabi/cloudabi_vdso.lds \
3013b4b4dfSEd Schouten	    ${VDSO_SRCS} -o ${.TARGET}
3113b4b4dfSEd Schouten
3213b4b4dfSEd Schoutencloudabi64_vdso_blob.o: cloudabi64_vdso.o
3313b4b4dfSEd Schouten	${OBJCOPY} --input-target binary \
3413b4b4dfSEd Schouten	    --output-target ${OUTPUT_TARGET} \
3513b4b4dfSEd Schouten	    --binary-architecture ${BINARY_ARCHITECTURE} \
3613b4b4dfSEd Schouten	    cloudabi64_vdso.o ${.TARGET}
3713b4b4dfSEd Schouten
388bc78518SEd Schouten.include <bsd.kmod.mk>
39