When building kernel code on a non-FreeBSD system, kernel source still expects pre-processor macros to be those of a FreeBSD system. If __linux__ is defined, build will break. If __FreeBSD__ isn't defined, build will break too.
This small patch "fakes" the pre-processor macros of FreeBSD so that non-FreeBSD systems such as GNU/Linux can build the kernel of FreeBSD too. -- Robert Millan
--- a/sys/conf/kern.pre.mk +++ b/sys/conf/kern.pre.mk @@ -90,6 +90,14 @@ .endif WERROR?= -Werror +.if !defined(OPSYS) +OPSYS!= uname -s +.endif + +.if ${OPSYS} != "FreeBSD" +CFLAGS+= -Ulinux -U__linux__ -D__FreeBSD__ +.endif + # XXX LOCORE means "don't declare C stuff" not "for locore.s". ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} --- a/sys/conf/kmod.mk +++ b/sys/conf/kmod.mk @@ -96,6 +96,14 @@ CFLAGS+= -D_KERNEL CFLAGS+= -DKLD_MODULE +.if !defined(OPSYS) +OPSYS!= uname -s +.endif + +.if ${OPSYS} != "FreeBSD" +CFLAGS+= -Ulinux -U__linux__ -D__FreeBSD__ +.endif + # Don't use any standard or source-relative include directories. CSTD= c99 NOSTDINC= -nostdinc
_______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"