150477Speter# $FreeBSD$
29313Ssos
3211690Simp.if ${MACHINE_CPUARCH} == "amd64"
4161312SnetchildSFX= 32
5205014SnwhitehornCFLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINUX32
6161312Snetchild.endif
770711Sobrien
8211690Simp.PATH: ${.CURDIR}/../../compat/linux ${.CURDIR}/../../${MACHINE_CPUARCH}/linux${SFX}
9161312Snetchild
1040440SpeterKMOD=	linux
11218616SdchaginSRCS=	linux_fork.c linux${SFX}_dummy.c linux_emul.c linux_file.c \
12163379Snetchild	linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
13163379Snetchild	linux${SFX}_machdep.c linux_mib.c linux_misc.c linux_signal.c \
14163379Snetchild	linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \
15163379Snetchild	linux${SFX}_sysvec.c linux_uid16.c linux_util.c linux_time.c \
16246290Sdchagin	opt_inet6.h opt_compat.h opt_kdtrace.h opt_posix.h opt_usb.h \
17246290Sdchagin	vnode_if.h device_if.h bus_if.h assym.s
189313Ssos
19169895Skib# XXX: for assym.s
20192852SdesSRCS+=  opt_kstack_pages.h opt_nfs.h opt_compat.h opt_hwpmc_hooks.h
21211690Simp.if ${MACHINE_CPUARCH} == "i386"
22192855SdesSRCS+=	opt_apic.h
23192855Sdes.endif
24169895Skib
25169895SkibOBJS=	linux${SFX}_locore.o linux${SFX}_support.o
26169895Skib
27211690Simp.if ${MACHINE_CPUARCH} == "i386"
28192855SdesSRCS+=	linux_ptrace.c imgact_linux.c opt_cpu.h
2965547Sobrien.endif
3065547Sobrien
3191072SdesEXPORT_SYMS=
3291072SdesEXPORT_SYMS+=	linux_emul_path
3391072SdesEXPORT_SYMS+=	linux_get_osname
3491072SdesEXPORT_SYMS+=	linux_get_osrelease
3591072SdesEXPORT_SYMS+=	linux_ifname
3691072SdesEXPORT_SYMS+=	linux_ioctl_register_handler
3791072SdesEXPORT_SYMS+=	linux_ioctl_unregister_handler
3891072Sdes
39161312SnetchildCLEANFILES=	linux${SFX}_assym.h linux${SFX}_genassym.o
4014333Speter
41161312Snetchildlinux${SFX}_assym.h: linux${SFX}_genassym.o
4261204Sbde.if exists(@)
43161312Snetchildlinux${SFX}_assym.h: @/kern/genassym.sh
4461204Sbde.endif
45161312Snetchild	sh @/kern/genassym.sh linux${SFX}_genassym.o > ${.TARGET}
4637461Sbde
47161312Snetchildlinux${SFX}_locore.o: linux${SFX}_locore.s linux${SFX}_assym.h
4855653Sbde	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
4970711Sobrien	    ${.IMPSRC} -o ${.TARGET}
5014333Speter
51169903Skiblinux${SFX}_support.o: linux${SFX}_support.s assym.s linux${SFX}_assym.h
52169895Skib	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
53169895Skib	    ${.IMPSRC} -o ${.TARGET}
54169895Skib
55161312Snetchildlinux${SFX}_genassym.o: linux${SFX}_genassym.c linux.h @ machine
5689181Smsmith	${CC} -c ${CFLAGS:N-fno-common} ${.IMPSRC}
5714333Speter
58151350Syar.if !defined(KERNBUILDDIR)
59110295Sumeopt_inet6.h:
60182668Simp	echo "#define INET6 1" > ${.TARGET}
61191877Sdchagin.if defined(KTR)
62191877SdchaginCFLAGS+=	-DKTR
63151350Syar.endif
64191877Sdchagin.endif
65110295Sume
6660966Speter.include <bsd.kmod.mk>
67232930Sdim
68232930Sdim# XXX: clang integrated-as doesn't grok .codeNN directives yet
69232930SdimCFLAGS.linux32_locore.s=	${CLANG_NO_IAS}
70232930SdimCFLAGS+=			${CFLAGS.${.IMPSRC:T}}
71