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 ChaginKMOD= linux64 933178488SMitchell HorneSRCS= linux_dummy_machdep.c \ 1033178488SMitchell Horne linux_elf64.c \ 1133178488SMitchell Horne linux_event.c \ 1233178488SMitchell Horne linux_file.c \ 1333178488SMitchell Horne linux_fork.c \ 1433178488SMitchell Horne linux_futex.c \ 1533178488SMitchell Horne linux_getcwd.c \ 1633178488SMitchell Horne linux_ioctl.c \ 1733178488SMitchell Horne linux_ipc.c \ 1833178488SMitchell Horne linux_machdep.c \ 1933178488SMitchell Horne linux_misc.c \ 2033178488SMitchell Horne linux_ptrace.c \ 2133178488SMitchell Horne linux_rseq.c \ 2233178488SMitchell Horne linux_signal.c \ 2333178488SMitchell Horne linux_socket.c \ 2433178488SMitchell Horne linux_stats.c \ 25f396f9b6SMitchell Horne linux_syscalls.c \ 2633178488SMitchell Horne linux_sysctl.c \ 2733178488SMitchell Horne linux_sysent.c \ 2833178488SMitchell Horne linux_sysvec.c \ 2933178488SMitchell Horne linux_time.c \ 3033178488SMitchell Horne linux_vdso.c \ 3133178488SMitchell Horne linux_timer.c \ 32*22dca7acSDmitry Chagin linux_xattr.c \ 33010175a7SWarner Losh opt_ktrace.h \ 3433178488SMitchell Horne opt_inet6.h \ 3533178488SMitchell Horne opt_posix.h \ 3633178488SMitchell Horne bus_if.h \ 3733178488SMitchell Horne device_if.h \ 3833178488SMitchell Horne vnode_if.h \ 39ccd9b49fSElliott Mitchell linux_support.S 4088588c4bSDmitry Chagin.if ${MACHINE_CPUARCH} == "amd64" 412b378d59SDmitry ChaginSRCS+= linux_dummy_x86.c 42e9b13c66SConrad Meyer.endif 43fc2a8776SEd MasteDPSRCS= assym.inc linux_genassym.c 44b2f58791SDmitry Chagin 45fc2a8776SEd Maste# XXX: for assym.inc 46ce859641SBryan DrewerySRCS+= opt_kstack_pages.h opt_nfs.h opt_hwpmc_hooks.h 47b2f58791SDmitry Chagin 487c28c7e8SDmitry ChaginCLEANFILES= linux_assym.h linux_genassym.o linux_locore.o \ 499931033bSDmitry Chagin genassym.o linux_vdso_gtod.o linux_vdso.so.o 50b2f58791SDmitry Chagin 519931033bSDmitry ChaginOBJS= linux_vdso.so 52b2f58791SDmitry Chagin 53b2f58791SDmitry Chaginlinux_assym.h: linux_genassym.o 54b2f58791SDmitry Chagin sh ${SYSDIR}/kern/genassym.sh linux_genassym.o > ${.TARGET} 55b2f58791SDmitry Chagin 569931033bSDmitry Chagin.if ${MACHINE_CPUARCH} == "amd64" 57b0fa09a0SDmitry ChaginVDSOFLAGS=-mcmodel=small -msoft-float 589931033bSDmitry ChaginVDSODEPS=linux_vdso_gettc_x86.inc 599931033bSDmitry Chagin.elif ${MACHINE_CPUARCH} == "aarch64" 609931033bSDmitry Chagin# The Linux uses tiny memory model, but our ld does not know about 619931033bSDmitry Chagin# some of relocation types which is generated by cc 629931033bSDmitry ChaginVDSOFLAGS=-mgeneral-regs-only -mcmodel=small -ffixed-x18 639931033bSDmitry Chagin.endif 649931033bSDmitry Chagin 659931033bSDmitry Chaginlinux_locore.o: linux_assym.h assym.inc 669931033bSDmitry Chagin ${CC} -c -x assembler-with-cpp -DLOCORE \ 679931033bSDmitry Chagin -fPIC -pipe -O2 -Werror ${VDSOFLAGS} \ 689931033bSDmitry Chagin -nostdinc -fasynchronous-unwind-tables \ 699931033bSDmitry Chagin -fno-omit-frame-pointer -foptimize-sibling-calls \ 709931033bSDmitry Chagin -fno-stack-protector -I. -I${SYSDIR} -I${SRCTOP}/include \ 71b2f58791SDmitry Chagin ${.IMPSRC} -o ${.TARGET} 72b2f58791SDmitry Chagin 739931033bSDmitry Chaginlinux_vdso_gtod.o: linux_vdso_gtod.inc ${VDSODEPS} 749931033bSDmitry Chagin ${CC} -c -fPIC -pipe -O2 -Werror ${VDSOFLAGS} \ 759931033bSDmitry Chagin -nostdinc -fasynchronous-unwind-tables \ 769931033bSDmitry Chagin -fno-omit-frame-pointer -foptimize-sibling-calls \ 779931033bSDmitry Chagin -fno-stack-protector -I. -I${SYSDIR} -I${SRCTOP}/include \ 789931033bSDmitry Chagin ${.IMPSRC} -o ${.TARGET} 799931033bSDmitry Chagin 809931033bSDmitry Chaginlinux_vdso.so.o: linux_locore.o linux_vdso_gtod.o 819931033bSDmitry Chagin ${LD} --shared --eh-frame-hdr -soname=linux-vdso.so.1 \ 829931033bSDmitry Chagin --no-undefined --hash-style=both -warn-common -nostdlib \ 839931033bSDmitry Chagin --strip-debug -s --build-id=sha1 -Bsymbolic \ 849931033bSDmitry Chagin -T${SRCTOP}/sys/${MACHINE}/linux/linux_vdso.lds.s \ 859931033bSDmitry Chagin -o ${.TARGET} ${.ALLSRC:M*.o} 869931033bSDmitry Chagin 87d3b03d74SEd Maste.if ${MACHINE_CPUARCH} == "aarch64" 88d3b03d74SEd MasteOBJCOPY_TARGET=--output-target elf64-littleaarch64 --binary-architecture aarch64 89d3b03d74SEd Maste.elif ${MACHINE_CPUARCH} == "amd64" 90d3b03d74SEd MasteOBJCOPY_TARGET=--output-target elf64-x86-64 --binary-architecture i386:x86-64 91d3b03d74SEd Maste.else 92d3b03d74SEd Maste.error ${MACHINE_CPUARCH} not yet supported by linux64 93d3b03d74SEd Maste.endif 949931033bSDmitry Chagin 959931033bSDmitry Chaginlinux_vdso.so: linux_vdso.so.o 96513c5cd8SJessica Clarke ${OBJCOPY} --input-target binary ${OBJCOPY_TARGET} \ 979931033bSDmitry Chagin linux_vdso.so.o ${.TARGET} 989931033bSDmitry Chagin ${STRIPBIN} -N _binary_linux_vdso_so_o_size ${.TARGET} 99b2f58791SDmitry Chagin 10035548e48SEd Mastelinux_support.o: linux_support.S assym.inc linux_assym.h 101b2f58791SDmitry Chagin ${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \ 10235548e48SEd Maste ${.ALLSRC:M*.S:u} -o ${.TARGET} 103b2f58791SDmitry Chagin 104ccca101fSBryan Drewerylinux_genassym.o: offset.inc 1054db3ef4cSAlex Richardson ${CC} -c ${CFLAGS:N-flto:N-fno-common} -fcommon ${.IMPSRC} 106b2f58791SDmitry Chagin 1076e4cf32eSDmitry Chagin.if !defined(KERNBUILDDIR) 1086e4cf32eSDmitry Chagin.warning Building Linuxulator outside of a kernel does not make sense 1096e4cf32eSDmitry Chagin.endif 1106e4cf32eSDmitry Chagin 1115bb3134aSKonstantin BelousovEXPORT_SYMS= YES 1125bb3134aSKonstantin Belousov 113b2f58791SDmitry Chagin.include <bsd.kmod.mk> 114