1 1.4 ad # $NetBSD: bsd.kmodule.mk,v 1.4 2008/05/20 12:08:05 ad Exp $ 2 1.1 ad 3 1.1 ad .include <bsd.init.mk> 4 1.1 ad .include <bsd.klinks.mk> 5 1.1 ad 6 1.1 ad ##### Basic targets 7 1.1 ad clean: cleankmod 8 1.1 ad realinstall: kmodinstall 9 1.1 ad 10 1.1 ad KERN= $S/kern 11 1.1 ad 12 1.1 ad CFLAGS+= -ffreestanding -fno-zero-initialized-in-bss ${COPTS} 13 1.1 ad CPPFLAGS+= -nostdinc -I. -I${.CURDIR} -isystem $S -isystem $S/arch 14 1.1 ad CPPFLAGS+= -isystem ${S}/../common/include 15 1.1 ad CPPFLAGS+= -D_KERNEL -D_LKM -D_MODULE 16 1.1 ad 17 1.1 ad # XXX until the kernel is fixed again... 18 1.1 ad .if ${HAVE_GCC} == 4 19 1.1 ad CFLAGS+= -fno-strict-aliasing -Wno-pointer-sign 20 1.1 ad .endif 21 1.1 ad 22 1.1 ad _YKMSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS:M*.y:.y=.h}} 23 1.1 ad DPSRCS+= ${_YKMSRCS} 24 1.1 ad CLEANFILES+= ${_YKMSRCS} 25 1.1 ad CLEANFILES+= tmp.o 26 1.1 ad 27 1.1 ad OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g} 28 1.1 ad PROG?= ${KMOD}.kmod 29 1.1 ad 30 1.1 ad ##### Build rules 31 1.1 ad realall: ${PROG} 32 1.1 ad 33 1.1 ad ${OBJS} ${LOBJS}: ${DPSRCS} 34 1.1 ad 35 1.1 ad ${PROG}: ${OBJS} ${DPADD} 36 1.1 ad ${_MKTARGET_LINK} 37 1.3 ad ${LD} -r -d -o tmp.o ${OBJS} 38 1.1 ad mv tmp.o ${.TARGET} 39 1.1 ad 40 1.1 ad ##### Install rules 41 1.1 ad .if !target(kmodinstall) 42 1.2 ad KMODINSTDIR= ${DESTDIR}${KMODULEDIR}/${KMOD} 43 1.2 ad _PROG:= ${KMODINSTDIR}/${PROG} # installed path 44 1.1 ad 45 1.1 ad .if ${MKUPDATE} == "no" 46 1.1 ad ${_PROG}! ${PROG} # install rule 47 1.1 ad .if !defined(BUILD) && !make(all) && !make(${PROG}) 48 1.1 ad ${_PROG}! .MADE # no build at install 49 1.1 ad .endif 50 1.1 ad .else 51 1.1 ad ${_PROG}: ${PROG} # install rule 52 1.1 ad .if !defined(BUILD) && !make(all) && !make(${PROG}) 53 1.1 ad ${_PROG}: .MADE # no build at install 54 1.1 ad .endif 55 1.1 ad .endif 56 1.1 ad ${_MKTARGET_INSTALL} 57 1.2 ad ${INSTALL_DIR} ${KMODINSTDIR} 58 1.1 ad ${INSTALL_FILE} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \ 59 1.1 ad ${.ALLSRC} ${.TARGET} 60 1.1 ad 61 1.1 ad kmodinstall:: ${_PROG} 62 1.1 ad .PHONY: kmodinstall 63 1.1 ad .PRECIOUS: ${_PROG} # keep if install fails 64 1.1 ad 65 1.1 ad .undef _PROG 66 1.1 ad .endif # !target(kmodinstall) 67 1.1 ad 68 1.1 ad ##### Clean rules 69 1.1 ad cleankmod: .PHONY 70 1.1 ad rm -f a.out [Ee]rrs mklog core *.core \ 71 1.1 ad ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES} 72 1.1 ad 73 1.1 ad ##### Custom rules 74 1.1 ad lint: ${LOBJS} 75 1.1 ad .if defined(LOBJS) && !empty(LOBJS) 76 1.1 ad ${LINT} ${LINTFLAGS} ${LDFLAGS:C/-L[ ]*/-L/Wg:M-L*} ${LOBJS} ${LDADD} 77 1.1 ad .endif 78 1.1 ad 79 1.1 ad ##### Pull in related .mk logic 80 1.1 ad .include <bsd.man.mk> 81 1.1 ad .include <bsd.links.mk> 82 1.1 ad .include <bsd.sys.mk> 83 1.1 ad .include <bsd.dep.mk> 84 1.1 ad 85 1.1 ad .-include "$S/arch/${MACHINE_CPU}/include/Makefile.inc" 86 1.1 ad .-include "$S/arch/${MACHINE}/include/Makefile.inc" 87