xref: /freebsd/sys/modules/linux64/Makefile (revision 45d99014ca3a57fcc6b603cf4494516b4dadda1b)
1b2f58791SDmitry Chagin# $FreeBSD$
2b2f58791SDmitry Chagin
348bc159fSEd Maste.PATH: ${SRCTOP}/sys/compat/linux ${SRCTOP}/sys/${MACHINE}/linux
488588c4bSDmitry Chagin.if ${MACHINE_CPUARCH} == "amd64"
5e9b13c66SConrad Meyer.PATH: ${SRCTOP}/sys/x86/linux
6e9b13c66SConrad Meyer.endif
7b2f58791SDmitry Chagin
8b2f58791SDmitry ChaginVDSO=	linux_vdso
9b2f58791SDmitry Chagin
10b2f58791SDmitry ChaginKMOD=	linux64
11*45d99014SEdward Tomasz NapieralaSRCS=	linux_elf64.c linux_fork.c linux_dummy_machdep.c linux_file.c \
12*45d99014SEdward Tomasz Napierala	linux_event.c linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
13d82de054SEdward Tomasz Napierala	linux_machdep.c linux_misc.c linux_ptrace.c linux_signal.c \
14b2f58791SDmitry Chagin	linux_socket.c linux_stats.c linux_sysctl.c linux_sysent.c \
15b2f58791SDmitry Chagin	linux_sysvec.c linux_time.c linux_vdso.c linux_timer.c \
166469bdcdSBrooks Davis	opt_compat.h opt_inet6.h opt_posix.h opt_usb.h \
1785059bc4SEd Maste	vnode_if.h device_if.h bus_if.h \
18b2f58791SDmitry Chagin	linux_support.s
1988588c4bSDmitry Chagin.if ${MACHINE_CPUARCH} == "amd64"
20e9b13c66SConrad MeyerSRCS+=	linux_dummy_x86.c
21e9b13c66SConrad Meyer.endif
22fc2a8776SEd MasteDPSRCS=	assym.inc linux_genassym.c
23b2f58791SDmitry Chagin
24fc2a8776SEd Maste# XXX: for assym.inc
25ce859641SBryan DrewerySRCS+=  opt_kstack_pages.h opt_nfs.h opt_hwpmc_hooks.h
26b2f58791SDmitry Chagin
277c28c7e8SDmitry ChaginCLEANFILES=	linux_assym.h linux_genassym.o linux_locore.o \
287c28c7e8SDmitry Chagin		genassym.o
29b2f58791SDmitry Chagin
30b2f58791SDmitry ChaginOBJS=	${VDSO}.so
31b2f58791SDmitry Chagin
32b2f58791SDmitry Chaginlinux_assym.h: linux_genassym.o
33b2f58791SDmitry Chagin	sh ${SYSDIR}/kern/genassym.sh linux_genassym.o > ${.TARGET}
34b2f58791SDmitry Chagin
35305b9efeSEd Mastelinux_locore.o: linux_locore.asm linux_assym.h
362b6ee34cSAlex Richardson	${CC} ${CCLDFLAGS} -x assembler-with-cpp -DLOCORE -shared -mcmodel=small	\
3732e6af46SWarner Losh	-pipe -I. -I${SYSDIR} ${WERROR} -Wall -fno-common -fPIC -nostdinc	\
3848bc159fSEd Maste	-Wl,-T${SRCTOP}/sys/${MACHINE}/linux/${VDSO}.lds.s	\
39621a9c54SEd Maste	-Wl,-soname=${VDSO}.so.1,-warn-common -nostdlib			\
40b2f58791SDmitry Chagin	    ${.IMPSRC} -o ${.TARGET}
41b2f58791SDmitry Chagin
42d3b03d74SEd Maste.if ${MACHINE_CPUARCH} == "aarch64"
43d3b03d74SEd MasteOBJCOPY_TARGET=--output-target elf64-littleaarch64 --binary-architecture aarch64
44d3b03d74SEd Maste.elif ${MACHINE_CPUARCH} == "amd64"
45d3b03d74SEd MasteOBJCOPY_TARGET=--output-target elf64-x86-64 --binary-architecture i386:x86-64
46d3b03d74SEd Maste.else
47d3b03d74SEd Maste.error ${MACHINE_CPUARCH} not yet supported by linux64
48d3b03d74SEd Maste.endif
49b2f58791SDmitry Chagin${VDSO}.so: linux_locore.o
50513c5cd8SJessica Clarke	${OBJCOPY} --input-target binary ${OBJCOPY_TARGET} \
51d3b03d74SEd Maste	    linux_locore.o ${.TARGET}
521a18ab42SAlex Richardson	${STRIPBIN} -N _binary_linux_locore_o_size ${.TARGET}
53b2f58791SDmitry Chagin
54fc2a8776SEd Mastelinux_support.o: assym.inc linux_assym.h
55b2f58791SDmitry Chagin	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
56b2f58791SDmitry Chagin	    ${.IMPSRC} -o ${.TARGET}
57b2f58791SDmitry Chagin
58ccca101fSBryan Drewerylinux_genassym.o: offset.inc
594db3ef4cSAlex Richardson	${CC} -c ${CFLAGS:N-flto:N-fno-common} -fcommon ${.IMPSRC}
60b2f58791SDmitry Chagin
616e4cf32eSDmitry Chagin.if !defined(KERNBUILDDIR)
626e4cf32eSDmitry Chagin.warning Building Linuxulator outside of a kernel does not make sense
636e4cf32eSDmitry Chagin.endif
646e4cf32eSDmitry Chagin
65b2f58791SDmitry Chagin.include <bsd.kmod.mk>
66