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