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