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