1 1.3.4.2 yamt # $NetBSD: bsd.kmodule.mk,v 1.3.4.2 2008/05/18 12:31:18 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.2 yamt 6 1.3.4.2 yamt ##### Basic targets 7 1.3.4.2 yamt clean: cleankmod 8 1.3.4.2 yamt realinstall: kmodinstall 9 1.3.4.2 yamt 10 1.3.4.2 yamt KERN= $S/kern 11 1.3.4.2 yamt 12 1.3.4.2 yamt CFLAGS+= -ffreestanding -fno-zero-initialized-in-bss ${COPTS} 13 1.3.4.2 yamt CPPFLAGS+= -nostdinc -I. -I${.CURDIR} -isystem $S -isystem $S/arch 14 1.3.4.2 yamt CPPFLAGS+= -isystem ${S}/../common/include 15 1.3.4.2 yamt CPPFLAGS+= -D_KERNEL -D_LKM -D_MODULE 16 1.3.4.2 yamt 17 1.3.4.2 yamt # XXX until the kernel is fixed again... 18 1.3.4.2 yamt .if ${HAVE_GCC} == 4 19 1.3.4.2 yamt CFLAGS+= -fno-strict-aliasing -Wno-pointer-sign 20 1.3.4.2 yamt .endif 21 1.3.4.2 yamt 22 1.3.4.2 yamt _YKMSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS:M*.y:.y=.h}} 23 1.3.4.2 yamt DPSRCS+= ${_YKMSRCS} 24 1.3.4.2 yamt CLEANFILES+= ${_YKMSRCS} 25 1.3.4.2 yamt CLEANFILES+= tmp.o 26 1.3.4.2 yamt 27 1.3.4.2 yamt .if \ 28 1.3.4.2 yamt ${MACHINE_CPU} == "arm" || \ 29 1.3.4.2 yamt ${MACHINE_CPU} == "hppa" || \ 30 1.3.4.2 yamt ${MACHINE_CPU} == "powerpc" 31 1.3.4.2 yamt CLEANFILES+= ${KMOD}_tramp.o ${KMOD}_tramp.S tmp.S ${KMOD}_tmp.o 32 1.3.4.2 yamt .endif 33 1.3.4.2 yamt 34 1.3.4.2 yamt OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g} 35 1.3.4.2 yamt PROG?= ${KMOD}.kmod 36 1.3.4.2 yamt 37 1.3.4.2 yamt ##### Build rules 38 1.3.4.2 yamt realall: ${PROG} 39 1.3.4.2 yamt 40 1.3.4.2 yamt ${OBJS} ${LOBJS}: ${DPSRCS} 41 1.3.4.2 yamt 42 1.3.4.2 yamt .if \ 43 1.3.4.2 yamt ${MACHINE_CPU} == "arm" || \ 44 1.3.4.2 yamt ${MACHINE_CPU} == "hppa" || \ 45 1.3.4.2 yamt ${MACHINE_CPU} == "powerpc" 46 1.3.4.2 yamt ${KMOD}_tmp.o: ${OBJS} ${DPADD} 47 1.3.4.2 yamt ${_MKTARGET_COMPILE} 48 1.3.4.2 yamt ${LD} -r -d -o tmp.o ${OBJS} 49 1.3.4.2 yamt mv tmp.o ${.TARGET} 50 1.3.4.2 yamt 51 1.3.4.2 yamt ${KMOD}_tramp.S: ${KMOD}_tmp.o $S/lkm/arch/${MACHINE_CPU}/lkmtramp.awk 52 1.3.4.2 yamt ${_MKTARGET_CREATE} 53 1.3.4.2 yamt ${OBJDUMP} --syms --reloc ${KMOD}_tmp.o | \ 54 1.3.4.2 yamt awk -f $S/lkm/arch/${MACHINE_CPU}/lkmtramp.awk > tmp.S 55 1.3.4.2 yamt mv tmp.S ${.TARGET} 56 1.3.4.2 yamt 57 1.3.4.2 yamt ${PROG}: ${KMOD}_tmp.o ${KMOD}_tramp.o 58 1.3.4.2 yamt ${_MKTARGET_LINK} 59 1.3.4.2 yamt ${LD} -r -d \ 60 1.3.4.2 yamt `${OBJDUMP} --syms --reloc ${KMOD}_tmp.o | \ 61 1.3.4.2 yamt awk -f $S/lkm/arch/${MACHINE_CPU}/lkmwrap.awk` \ 62 1.3.4.2 yamt -o tmp.o ${KMOD}_tmp.o ${KMOD}_tramp.o 63 1.3.4.2 yamt .if exists($S/lkm/arch/${MACHINE_CPU}/lkmhide.awk) 64 1.3.4.2 yamt ${OBJCOPY} \ 65 1.3.4.2 yamt `${NM} tmp.o | awk -f $S/lkm/arch/${MACHINE_CPU}/lkmhide.awk` \ 66 1.3.4.2 yamt tmp.o tmp1.o 67 1.3.4.2 yamt mv tmp1.o tmp.o 68 1.3.4.2 yamt .endif 69 1.3.4.2 yamt mv tmp.o ${.TARGET} 70 1.3.4.2 yamt .else 71 1.3.4.2 yamt ${PROG}: ${OBJS} ${DPADD} 72 1.3.4.2 yamt ${_MKTARGET_LINK} 73 1.3.4.2 yamt ${LD} -r -d -o tmp.o ${OBJS} 74 1.3.4.2 yamt mv tmp.o ${.TARGET} 75 1.3.4.2 yamt .endif 76 1.3.4.2 yamt 77 1.3.4.2 yamt ##### Install rules 78 1.3.4.2 yamt .if !target(kmodinstall) 79 1.3.4.2 yamt KMODINSTDIR= ${DESTDIR}${KMODULEDIR}/${KMOD} 80 1.3.4.2 yamt _PROG:= ${KMODINSTDIR}/${PROG} # installed path 81 1.3.4.2 yamt 82 1.3.4.2 yamt .if ${MKUPDATE} == "no" 83 1.3.4.2 yamt ${_PROG}! ${PROG} # install rule 84 1.3.4.2 yamt .if !defined(BUILD) && !make(all) && !make(${PROG}) 85 1.3.4.2 yamt ${_PROG}! .MADE # no build at install 86 1.3.4.2 yamt .endif 87 1.3.4.2 yamt .else 88 1.3.4.2 yamt ${_PROG}: ${PROG} # install rule 89 1.3.4.2 yamt .if !defined(BUILD) && !make(all) && !make(${PROG}) 90 1.3.4.2 yamt ${_PROG}: .MADE # no build at install 91 1.3.4.2 yamt .endif 92 1.3.4.2 yamt .endif 93 1.3.4.2 yamt ${_MKTARGET_INSTALL} 94 1.3.4.2 yamt ${INSTALL_DIR} ${KMODINSTDIR} 95 1.3.4.2 yamt ${INSTALL_FILE} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \ 96 1.3.4.2 yamt ${.ALLSRC} ${.TARGET} 97 1.3.4.2 yamt 98 1.3.4.2 yamt kmodinstall:: ${_PROG} 99 1.3.4.2 yamt .PHONY: kmodinstall 100 1.3.4.2 yamt .PRECIOUS: ${_PROG} # keep if install fails 101 1.3.4.2 yamt 102 1.3.4.2 yamt .undef _PROG 103 1.3.4.2 yamt .endif # !target(kmodinstall) 104 1.3.4.2 yamt 105 1.3.4.2 yamt ##### Clean rules 106 1.3.4.2 yamt cleankmod: .PHONY 107 1.3.4.2 yamt rm -f a.out [Ee]rrs mklog core *.core \ 108 1.3.4.2 yamt ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES} 109 1.3.4.2 yamt 110 1.3.4.2 yamt ##### Custom rules 111 1.3.4.2 yamt lint: ${LOBJS} 112 1.3.4.2 yamt .if defined(LOBJS) && !empty(LOBJS) 113 1.3.4.2 yamt ${LINT} ${LINTFLAGS} ${LDFLAGS:C/-L[ ]*/-L/Wg:M-L*} ${LOBJS} ${LDADD} 114 1.3.4.2 yamt .endif 115 1.3.4.2 yamt 116 1.3.4.2 yamt .if !target(load) 117 1.3.4.2 yamt load: ${PROG} 118 1.3.4.2 yamt /sbin/modload ${KMOD_LOADFLAGS} -o ${KMOD} ${PROG} 119 1.3.4.2 yamt .endif 120 1.3.4.2 yamt .PHONY: load 121 1.3.4.2 yamt 122 1.3.4.2 yamt .if !target(unload) 123 1.3.4.2 yamt unload: 124 1.3.4.2 yamt /sbin/modunload -n ${KMOD} 125 1.3.4.2 yamt .endif 126 1.3.4.2 yamt .PHONY: unload 127 1.3.4.2 yamt 128 1.3.4.2 yamt ##### Pull in related .mk logic 129 1.3.4.2 yamt .include <bsd.man.mk> 130 1.3.4.2 yamt .include <bsd.links.mk> 131 1.3.4.2 yamt .include <bsd.sys.mk> 132 1.3.4.2 yamt .include <bsd.dep.mk> 133 1.3.4.2 yamt 134 1.3.4.2 yamt .-include "$S/arch/${MACHINE_CPU}/include/Makefile.inc" 135 1.3.4.2 yamt .-include "$S/arch/${MACHINE}/include/Makefile.inc" 136