freebsd-skq/sys/modules/cloudabi32/Makefile
Ed Schouten 39202638bc Pick the right vDSO file/linker flags when building cloudabi32.ko on ARM64.
The recently imported cloudabi_vdso_armv6_on_64bit.S should be the vDSO
for 32-bit processes when being run on FreeBSD/arm64. This vDSO ensures
that all system call arguments are padded to 64 bits, so that they can
be used by the kernel to call into most of the native implementations
directly.
2017-11-24 14:02:32 +00:00

47 lines
1.4 KiB
Makefile

# $FreeBSD$
SYSDIR?=${SRCTOP}/sys
.PATH: ${SYSDIR}/compat/cloudabi32
.PATH: ${SYSDIR}/${MACHINE_CPUARCH}/cloudabi32
.PATH: ${SYSDIR}/${MACHINE}/cloudabi32
KMOD= cloudabi32
SRCS= cloudabi32_fd.c cloudabi32_module.c cloudabi32_poll.c \
cloudabi32_sock.c cloudabi32_syscalls.c cloudabi32_sysent.c \
cloudabi32_sysvec.c cloudabi32_thread.c
OBJS= cloudabi32_vdso_blob.o
CLEANFILES=cloudabi32_vdso.o
.if ${MACHINE_CPUARCH} == "aarch64"
VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6_on_64bit.S
OUTPUT_TARGET=elf64-littleaarch64
BINARY_ARCHITECTURE=aarch64
.elif ${MACHINE_CPUARCH} == "amd64"
VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
OUTPUT_TARGET=elf64-x86-64-freebsd
BINARY_ARCHITECTURE=i386
.elif ${MACHINE_ARCH:Marmv[67]*} != ""
VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_armv6.S
OUTPUT_TARGET=elf32-littlearm
BINARY_ARCHITECTURE=arm
.elif ${MACHINE_CPUARCH} == "i386"
VDSO_SRCS=${SYSDIR}/contrib/cloudabi/cloudabi_vdso_i686.S
OUTPUT_TARGET=elf32-i386-freebsd
BINARY_ARCHITECTURE=i386
.endif
cloudabi32_vdso.o: ${VDSO_SRCS}
${CC} -x assembler-with-cpp -m32 -shared -nostdinc -nostdlib \
-Wl,-T${SYSDIR}/compat/cloudabi/cloudabi_vdso.lds \
${VDSO_SRCS} -o ${.TARGET}
cloudabi32_vdso_blob.o: cloudabi32_vdso.o
${OBJCOPY} --input-target binary \
--output-target ${OUTPUT_TARGET} \
--binary-architecture ${BINARY_ARCHITECTURE} \
cloudabi32_vdso.o ${.TARGET}
.include <bsd.kmod.mk>