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