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