Home | History | Annotate | Line # | Download | only in mk
bsd.kmodule.mk revision 1.6
      1 #	$NetBSD: bsd.kmodule.mk,v 1.6 2008/05/20 12:18:45 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 ${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 KMODSCRIPT=	${DESTDIR}/usr/share/ldscripts/kmodule
     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} -T ${KMODSCRIPT} -r -d -o ${.TARGET} ${OBJS}
     38 
     39 ##### Install rules
     40 .if !target(kmodinstall)
     41 KMODINSTDIR=	${DESTDIR}${KMODULEDIR}/${KMOD}
     42 _PROG:=		${KMODINSTDIR}/${PROG} # installed path
     43 
     44 .if ${MKUPDATE} == "no"
     45 ${_PROG}! ${PROG}					# install rule
     46 .if !defined(BUILD) && !make(all) && !make(${PROG})
     47 ${_PROG}!	.MADE					# no build at install
     48 .endif
     49 .else
     50 ${_PROG}: ${PROG}					# install rule
     51 .if !defined(BUILD) && !make(all) && !make(${PROG})
     52 ${_PROG}:	.MADE					# no build at install
     53 .endif
     54 .endif
     55 	${_MKTARGET_INSTALL}
     56 	${INSTALL_DIR} ${KMODINSTDIR}
     57 	${INSTALL_FILE} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
     58 		${.ALLSRC} ${.TARGET}
     59 
     60 kmodinstall::	${_PROG}
     61 .PHONY:		kmodinstall
     62 .PRECIOUS:	${_PROG}				# keep if install fails
     63 
     64 .undef _PROG
     65 .endif # !target(kmodinstall)
     66 
     67 ##### Clean rules
     68 cleankmod: .PHONY
     69 	rm -f a.out [Ee]rrs mklog core *.core \
     70 		${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
     71 
     72 ##### Custom rules
     73 lint: ${LOBJS}
     74 .if defined(LOBJS) && !empty(LOBJS)
     75 	${LINT} ${LINTFLAGS} ${LDFLAGS:C/-L[  ]*/-L/Wg:M-L*} ${LOBJS} ${LDADD}
     76 .endif
     77 
     78 ##### Pull in related .mk logic
     79 .include <bsd.man.mk>
     80 .include <bsd.links.mk>
     81 .include <bsd.sys.mk>
     82 .include <bsd.dep.mk>
     83 
     84 .-include "$S/arch/${MACHINE_CPU}/include/Makefile.inc"
     85 .-include "$S/arch/${MACHINE}/include/Makefile.inc"
     86