kmod.mk revision 18777
1227652Sgrehan# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 2253132Sbryanv# $Id: bsd.kmod.mk,v 1.26 1996/09/18 06:09:13 swallace Exp $ 3227652Sgrehan# 4227652Sgrehan# The include file <bsd.kmod.mk> handles installing Loadable Kernel Modules. 5227652Sgrehan# <bsd.kmod.mk> includes the file named "../Makefile.inc" if it exists, 6227652Sgrehan# as well as the include file <bsd.obj.mk>, <bsd.dep.mk>, and 7227652Sgrehan# may be <bsd.man.mk> 8227652Sgrehan# 9227652Sgrehan# 10227652Sgrehan# +++ variables +++ 11227652Sgrehan# 12227652Sgrehan# CLEANFILES Additional files to remove for the clean and cleandir targets. 13227652Sgrehan# 14227652Sgrehan# DISTRIBUTION Name of distribution. [bin] 15227652Sgrehan# 16227652Sgrehan# EXPORT_SYMS ??? 17227652Sgrehan# 18227652Sgrehan# KERN Main Kernel source directory. [${.CURDIR}/../../sys/kern] 19227652Sgrehan# 20227652Sgrehan# KMOD The name of the loadable kernel module to build. 21227652Sgrehan# 22227652Sgrehan# KMODDIR Base path for loadable kernel modules 23227652Sgrehan# (see lkm(4)). [/lkm] 24227652Sgrehan# 25227652Sgrehan# KMODOWN LKM owner. [${BINOWN}] 26227652Sgrehan# 27227652Sgrehan# KMODGRP LKM group. [${BINGRP}] 28227652Sgrehan# 29227652Sgrehan# KMODMODE LKM mode. [${BINMODE}] 30227652Sgrehan# 31227652Sgrehan# LINKS The list of LKM links; should be full pathnames, the 32227652Sgrehan# linked-to file coming first, followed by the linked 33227652Sgrehan# file. The files are hard-linked. For example, to link 34227652Sgrehan# /lkm/master and /lkm/meister, use: 35227652Sgrehan# 36227652Sgrehan# LINKS= /lkm/master /lkm/meister 37227652Sgrehan# 38227652Sgrehan# LN_FLAGS Flags for ln(1) (see variable LINKS) 39253132Sbryanv# 40227652Sgrehan# MODLOAD Command to load a kernel module [/sbin/modload] 41227652Sgrehan# 42227652Sgrehan# MODUNLOAD Command to unload a kernel module [/sbin/modunload] 43227652Sgrehan# 44227652Sgrehan# NOMAN LKM does not have a manual page if set. 45227652Sgrehan# 46227652Sgrehan# PROG The name of the loadable kernel module to build. 47227652Sgrehan# If not supplied, ${KMOD}.o is used. 48227652Sgrehan# 49227652Sgrehan# PSEUDO_LKM ??? 50227652Sgrehan# 51227652Sgrehan# SRCS List of source files 52227652Sgrehan# 53227652Sgrehan# SUBDIR A list of subdirectories that should be built as well. 54227652Sgrehan# Each of the targets will execute the same target in the 55227652Sgrehan# subdirectories. 56227652Sgrehan# 57227652Sgrehan# DESTDIR, DISTDIR are set by other Makefiles (e.g. bsd.own.mk) 58227652Sgrehan# 59227652Sgrehan# 60227652Sgrehan# +++ targets +++ 61227652Sgrehan# 62227652Sgrehan# distribute: 63227652Sgrehan# This is a variant of install, which will 64227652Sgrehan# put the stuff into the right "distribution". 65253132Sbryanv# 66253132Sbryanv# install: 67253132Sbryanv# install the program and its manual pages; if the Makefile 68253132Sbryanv# does not itself define the target install, the targets 69253132Sbryanv# beforeinstall and afterinstall may also be used to cause 70253132Sbryanv# actions immediately before and after the install target 71227652Sgrehan# is executed. 72227652Sgrehan# 73227652Sgrehan# load: 74227652Sgrehan# Load LKM. 75227652Sgrehan# 76227652Sgrehan# tags: 77227652Sgrehan# Create a tags file for the source files. 78239472Semaste# 79239472Semaste# unload: 80227652Sgrehan# Unload LKM. 81248026Sbryanv# 82253132Sbryanv# bsd.obj.mk: clean, cleandir and obj 83227652Sgrehan# bsd.dep.mk: depend 84227652Sgrehan# bsd.man.mk: maninstall 85227652Sgrehan# 86227652Sgrehan 87227652SgrehanMODLOAD?= /sbin/modload 88227652SgrehanMODUNLOAD?= /sbin/modunload 89227652Sgrehan 90227652Sgrehan.if exists(${.CURDIR}/../Makefile.inc) 91227652Sgrehan.include "${.CURDIR}/../Makefile.inc" 92248026Sbryanv.endif 93248026Sbryanv 94227652Sgrehan.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S 95227652Sgrehan 96227652Sgrehan# 97253132Sbryanv# Assume that we are in /usr/src/foo/bar, so /sys is 98227652Sgrehan# ${.CURDIR}/../../sys. We don't bother adding a .PATH since nothing 99227652Sgrehan# actually lives in /sys directly. 100227652Sgrehan# 101227652SgrehanCWARNFLAGS?= -W -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit \ 102227652Sgrehan -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes \ 103227652Sgrehan -Winline -Wunused -Wpointer-arith 104227652Sgrehan 105227652SgrehanCFLAGS+=${COPTS} -DKERNEL -DACTUALLY_LKM_NOT_KERNEL -I${.CURDIR}/../../sys \ 106227652Sgrehan ${CWARNFLAGS} 107227652Sgrehan 108227652SgrehanEXPORT_SYMS?= _${KMOD} 109227652Sgrehan 110253132Sbryanv.if defined(VFS_LKM) 111227652SgrehanCFLAGS+= -DVFS_LKM -DMODVNOPS=${KMOD}vnops -I. 112253132SbryanvSRCS+= vnode_if.h 113227652SgrehanCLEANFILES+= vnode_if.h vnode_if.c 114227652Sgrehan.endif 115227652Sgrehan 116227652Sgrehan.if defined(PSEUDO_LKM) 117227652SgrehanCFLAGS+= -DPSEUDO_LKM 118227652Sgrehan.endif 119227652Sgrehan 120227652SgrehanDPSRCS+= ${SRCS:M*.h} 121227652SgrehanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 122227652Sgrehan 123227652Sgrehan.if !defined(PROG) 124227652SgrehanPROG= ${KMOD}.o 125253132Sbryanv.endif 126227652Sgrehan 127239472Semaste${PROG}: ${DPSRCS} ${OBJS} ${DPADD} 128239472Semaste ${LD} -r ${LDFLAGS} -o tmp.o ${OBJS} 129239472Semaste.if defined(EXPORT_SYMS) 130246582Sbryanv @rm -f symb.tmp 131239472Semaste @for i in ${EXPORT_SYMS} ; do echo $$i >> symb.tmp ; done 132239472Semaste symorder -c symb.tmp tmp.o 133239472Semaste @rm -f symb.tmp 134227652Sgrehan.endif 135227652Sgrehan mv tmp.o ${.TARGET} 136227652Sgrehan 137227652Sgrehan.if !defined(NOMAN) 138253132Sbryanv.include <bsd.man.mk> 139253132Sbryanv.if !defined(_MANPAGES) || empty(_MANPAGES) 140253132SbryanvMAN1= ${KMOD}.4 141253132Sbryanv.endif 142227652Sgrehan 143227652Sgrehan.elif !target(maninstall) 144227652Sgrehanmaninstall: _SUBDIR 145227652Sgrehanall-man: 146239472Semaste.endif 147227652Sgrehan 148227652Sgrehan.MAIN: all 149227652Sgrehanall: objwarn ${PROG} all-man _SUBDIR 150227652Sgrehan 151227652SgrehanCLEANFILES+=${PROG} ${OBJS} 152253132Sbryanv 153227652Sgrehan.if !target(install) 154227652Sgrehan.if !target(beforeinstall) 155227652Sgrehanbeforeinstall: 156253132Sbryanv.endif 157253132Sbryanv.if !target(afterinstall) 158227652Sgrehanafterinstall: 159227652Sgrehan.endif 160227652Sgrehan 161227652Sgrehanrealinstall: _SUBDIR 162227652Sgrehan ${INSTALL} ${COPY} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \ 163227652Sgrehan ${INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR} 164227652Sgrehan.if defined(LINKS) && !empty(LINKS) 165239472Semaste @set ${LINKS}; \ 166227652Sgrehan while test $$# -ge 2; do \ 167227652Sgrehan l=${DESTDIR}$$1; \ 168227652Sgrehan shift; \ 169227652Sgrehan t=${DESTDIR}$$1; \ 170227652Sgrehan shift; \ 171227652Sgrehan ${ECHO} $$t -\> $$l; \ 172227652Sgrehan rm -f $$t; \ 173227652Sgrehan ln ${LN_FLAGS} $$l $$t; \ 174227652Sgrehan done; true 175227652Sgrehan.endif 176227652Sgrehan 177227652Sgrehaninstall: afterinstall _SUBDIR 178227652Sgrehan.if !defined(NOMAN) 179239472Semasteafterinstall: realinstall maninstall 180239472Semaste.else 181227652Sgrehanafterinstall: realinstall 182253132Sbryanv.endif 183253132Sbryanvrealinstall: beforeinstall 184253132Sbryanv.endif 185227652Sgrehan 186227652SgrehanDISTRIBUTION?= bin 187227652Sgrehan.if !target(distribute) 188253132Sbryanvdistribute: _SUBDIR 189253132Sbryanv cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${DISTRIBUTION} SHARED=copies 190227652Sgrehan.endif 191227652Sgrehan 192227652Sgrehan.if !target(tags) 193227652Sgrehantags: ${SRCS} _SUBDIR 194227652Sgrehan.if defined(PROG) 195227652Sgrehan -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC} | \ 196227652Sgrehan sed "s;\${.CURDIR}/;;" > tags 197227652Sgrehan.endif 198227652Sgrehan.endif 199253132Sbryanv 200253132Sbryanv 201227652Sgrehan.if !target(load) 202227652Sgrehanload: ${PROG} 203227652Sgrehan ${MODLOAD} -o ${KMOD} -e${KMOD} ${PROG} 204227652Sgrehan.endif 205227652Sgrehan 206253132Sbryanv.if !target(unload) 207227652Sgrehanunload: ${PROG} 208227652Sgrehan ${MODUNLOAD} -n ${KMOD} 209227652Sgrehan.endif 210227652Sgrehan 211227652SgrehanKERN= ${.CURDIR}/../../sys/kern 212227652Sgrehan 213227652Sgrehanvnode_if.h: ${KERN}/vnode_if.sh ${KERN}/vnode_if.src 214227652Sgrehan sh ${KERN}/vnode_if.sh ${KERN}/vnode_if.src 215246582Sbryanv 216227652Sgrehan./vnode_if.h: vnode_if.h 217227652Sgrehan 218227652Sgrehan.include <bsd.obj.mk> 219227652Sgrehan.include <bsd.dep.mk> 220227652Sgrehan