1639a2e50SGarrett Wollman# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 253996fadSWolfram Schneider# $Id: bsd.kmod.mk,v 1.20 1996/04/29 15:37:30 wosch Exp $ 353996fadSWolfram Schneider# 453996fadSWolfram Schneider# The include file <bsd.kmod.mk> handles installing Loadable Kernel Modules. 553996fadSWolfram Schneider# <bsd.kmod.mk> includes the file named "../Makefile.inc" if it exists, 653996fadSWolfram Schneider# as well as the include file <bsd.obj.mk>, <bsd.dep.mk>, and 753996fadSWolfram Schneider# may be <bsd.man.mk> 853996fadSWolfram Schneider# 953996fadSWolfram Schneider# 1053996fadSWolfram Schneider# +++ variables +++ 1153996fadSWolfram Schneider# 1253996fadSWolfram Schneider# CLEANFILES Additional files to remove for the clean and cleandir targets. 1353996fadSWolfram Schneider# 1453996fadSWolfram Schneider# DISTRIBUTION Name of distribution. [bin] 1553996fadSWolfram Schneider# 1653996fadSWolfram Schneider# EXPORT_SYMS ??? 1753996fadSWolfram Schneider# 1853996fadSWolfram Schneider# KERN Main Kernel source directory. [${.CURDIR}/../../sys/kern] 1953996fadSWolfram Schneider# 2053996fadSWolfram Schneider# KMOD The name of the loadable kernel module to build. 2153996fadSWolfram Schneider# 2253996fadSWolfram Schneider# KMODDIR Base path for loadable kernel modules 2353996fadSWolfram Schneider# (see lkm(4)). [/lkm] 2453996fadSWolfram Schneider# 2553996fadSWolfram Schneider# KMODOWN LKM owner. [${BINOWN}] 2653996fadSWolfram Schneider# 2753996fadSWolfram Schneider# KMODGRP LKM group. [${BINGRP}] 2853996fadSWolfram Schneider# 2953996fadSWolfram Schneider# KMODMODE LKM mode. [${BINMODE}] 3053996fadSWolfram Schneider# 3153996fadSWolfram Schneider# LINKS The list of LKM links; should be full pathnames, the 3253996fadSWolfram Schneider# linked-to file coming first, followed by the linked 3353996fadSWolfram Schneider# file. The files are hard-linked. For example, to link 3453996fadSWolfram Schneider# /lkm/master and /lkm/meister, use: 3553996fadSWolfram Schneider# 3653996fadSWolfram Schneider# LINKS= /lkm/master /lkm/meister 3753996fadSWolfram Schneider# 3853996fadSWolfram Schneider# LN_FLAGS Flags for ln(1) (see variable LINKS) 3953996fadSWolfram Schneider# 4053996fadSWolfram Schneider# NOMAN LKM does not have a manual page if set. 4153996fadSWolfram Schneider# 4253996fadSWolfram Schneider# PROG The name of the loadable kernel module to build. 4353996fadSWolfram Schneider# If not supplied, ${KMOD} is used. 4453996fadSWolfram Schneider# 4553996fadSWolfram Schneider# PSEUDO_LKM ??? 4653996fadSWolfram Schneider# 4753996fadSWolfram Schneider# SRCS List of source files 4853996fadSWolfram Schneider# 4953996fadSWolfram Schneider# SUBDIR A list of subdirectories that should be built as well. 5053996fadSWolfram Schneider# Each of the targets will execute the same target in the 5153996fadSWolfram Schneider# subdirectories. 5253996fadSWolfram Schneider# 5353996fadSWolfram Schneider# DESTDIR, DISTDIR are set by other Makefiles (e.g. bsd.own.mk) 5453996fadSWolfram Schneider# 5553996fadSWolfram Schneider# 5653996fadSWolfram Schneider# +++ targets +++ 5753996fadSWolfram Schneider# 5853996fadSWolfram Schneider# distribute: 5953996fadSWolfram Schneider# This is a variant of install, which will 6053996fadSWolfram Schneider# put the stuff into the right "distribution". 6153996fadSWolfram Schneider# 6253996fadSWolfram Schneider# install: 6353996fadSWolfram Schneider# install the program and its manual pages; if the Makefile 6453996fadSWolfram Schneider# does not itself define the target install, the targets 6553996fadSWolfram Schneider# beforeinstall and afterinstall may also be used to cause 6653996fadSWolfram Schneider# actions immediately before and after the install target 6753996fadSWolfram Schneider# is executed. 6853996fadSWolfram Schneider# 6953996fadSWolfram Schneider# load: 7053996fadSWolfram Schneider# Load LKM. 7153996fadSWolfram Schneider# 7253996fadSWolfram Schneider# tags: 7353996fadSWolfram Schneider# Create a tags file for the source files. 7453996fadSWolfram Schneider# 7553996fadSWolfram Schneider# unload: 7653996fadSWolfram Schneider# Unload LKM. 7753996fadSWolfram Schneider# 7853996fadSWolfram Schneider# bsd.obj.mk: clean, cleandir and obj 7953996fadSWolfram Schneider# bsd.dep.mk: depend 8053996fadSWolfram Schneider# bsd.man.mk: maninstall 8153996fadSWolfram Schneider# 82639a2e50SGarrett Wollman 83639a2e50SGarrett Wollman.if exists(${.CURDIR}/../Makefile.inc) 84639a2e50SGarrett Wollman.include "${.CURDIR}/../Makefile.inc" 85639a2e50SGarrett Wollman.endif 86639a2e50SGarrett Wollman 87639a2e50SGarrett Wollman.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S 88639a2e50SGarrett Wollman 89639a2e50SGarrett Wollman# 90639a2e50SGarrett Wollman# Assume that we are in /usr/src/foo/bar, so /sys is 91639a2e50SGarrett Wollman# ${.CURDIR}/../../sys. We don't bother adding a .PATH since nothing 92639a2e50SGarrett Wollman# actually lives in /sys directly. 93639a2e50SGarrett Wollman# 9456bac51bSPoul-Henning KampCWARNFLAGS?= -W -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit \ 95a5db65d3SBruce Evans -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes \ 96a5db65d3SBruce Evans -Winline 97639a2e50SGarrett Wollman 9856bac51bSPoul-Henning KampCFLAGS+=${COPTS} -DKERNEL -DACTUALLY_LKM_NOT_KERNEL -I${.CURDIR}/../../sys \ 9956bac51bSPoul-Henning Kamp ${CWARNFLAGS} 10056bac51bSPoul-Henning Kamp 101e9dcb6beSPoul-Henning KampEXPORT_SYMS?= _${KMOD} 102e9dcb6beSPoul-Henning Kamp 1031aa57be3SGarrett Wollman.if defined(VFS_LKM) 1041aa57be3SGarrett WollmanCFLAGS+= -DVFS_LKM -DMODVNOPS=${KMOD}vnops -I. 1051aa57be3SGarrett WollmanSRCS+= vnode_if.h 1061aa57be3SGarrett WollmanCLEANFILES+= vnode_if.h vnode_if.c 1071aa57be3SGarrett Wollman.endif 1081aa57be3SGarrett Wollman 10927a15c94SGarrett Wollman.if defined(PSEUDO_LKM) 11027a15c94SGarrett WollmanCFLAGS+= -DPSEUDO_LKM 11127a15c94SGarrett Wollman.endif 11227a15c94SGarrett Wollman 113639a2e50SGarrett WollmanDPSRCS+= ${SRCS:M*.h} 114639a2e50SGarrett WollmanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 115639a2e50SGarrett Wollman 116639a2e50SGarrett Wollman.if !defined(PROG) 117639a2e50SGarrett WollmanPROG= ${KMOD}.o 118639a2e50SGarrett Wollman.endif 119639a2e50SGarrett Wollman 120639a2e50SGarrett Wollman${PROG}: ${DPSRCS} ${OBJS} ${DPADD} 121a304bf73SPoul-Henning Kamp ${LD} -r ${LDFLAGS} -o tmp.o ${OBJS} 122a304bf73SPoul-Henning Kamp.if defined(EXPORT_SYMS) 123a304bf73SPoul-Henning Kamp @rm -f symb.tmp 124a304bf73SPoul-Henning Kamp @for i in ${EXPORT_SYMS} ; do echo $$i >> symb.tmp ; done 125a304bf73SPoul-Henning Kamp symorder -c symb.tmp tmp.o 126a304bf73SPoul-Henning Kamp @rm -f symb.tmp 127a304bf73SPoul-Henning Kamp.endif 128a304bf73SPoul-Henning Kamp mv tmp.o ${.TARGET} 129639a2e50SGarrett Wollman 1305ce6c3cfSWolfram Schneider.if !defined(NOMAN) 1315ce6c3cfSWolfram Schneider.include <bsd.man.mk> 1325ce6c3cfSWolfram Schneider.if !defined(_MANPAGES) || empty(_MANPAGES) 133639a2e50SGarrett WollmanMAN1= ${KMOD}.4 134639a2e50SGarrett Wollman.endif 135639a2e50SGarrett Wollman 1365ce6c3cfSWolfram Schneider.elif !target(maninstall) 1375ce6c3cfSWolfram Schneidermaninstall: 1385ce6c3cfSWolfram Schneiderall-man: 1395ce6c3cfSWolfram Schneider.endif 1405ce6c3cfSWolfram Schneider 141639a2e50SGarrett Wollman_PROGSUBDIR: .USE 142639a2e50SGarrett Wollman.if defined(SUBDIR) && !empty(SUBDIR) 143639a2e50SGarrett Wollman @for entry in ${SUBDIR}; do \ 144639a2e50SGarrett Wollman (${ECHODIR} "===> $$entry"; \ 145639a2e50SGarrett Wollman if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \ 146639a2e50SGarrett Wollman cd ${.CURDIR}/$${entry}.${MACHINE}; \ 147639a2e50SGarrett Wollman else \ 148639a2e50SGarrett Wollman cd ${.CURDIR}/$${entry}; \ 149639a2e50SGarrett Wollman fi; \ 150639a2e50SGarrett Wollman ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/}); \ 151639a2e50SGarrett Wollman done 152639a2e50SGarrett Wollman.endif 153639a2e50SGarrett Wollman 154639a2e50SGarrett Wollman.MAIN: all 155973f098aSGarrett Wollmanall: ${PROG} all-man _PROGSUBDIR 156639a2e50SGarrett Wollman 1575ce6c3cfSWolfram SchneiderCLEANFILES+=${PROG} ${OBJS} 158639a2e50SGarrett Wollman 159639a2e50SGarrett Wollman.if !target(install) 160639a2e50SGarrett Wollman.if !target(beforeinstall) 161639a2e50SGarrett Wollmanbeforeinstall: 162639a2e50SGarrett Wollman.endif 163639a2e50SGarrett Wollman.if !target(afterinstall) 164639a2e50SGarrett Wollmanafterinstall: 165639a2e50SGarrett Wollman.endif 166639a2e50SGarrett Wollman 167639a2e50SGarrett Wollmanrealinstall: _PROGSUBDIR 1685ce6c3cfSWolfram Schneider ${INSTALL} ${COPY} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \ 1695ce6c3cfSWolfram Schneider ${INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR} 170639a2e50SGarrett Wollman.if defined(LINKS) && !empty(LINKS) 171639a2e50SGarrett Wollman @set ${LINKS}; \ 172639a2e50SGarrett Wollman while test $$# -ge 2; do \ 173639a2e50SGarrett Wollman l=${DESTDIR}$$1; \ 174639a2e50SGarrett Wollman shift; \ 175639a2e50SGarrett Wollman t=${DESTDIR}$$1; \ 176639a2e50SGarrett Wollman shift; \ 177639a2e50SGarrett Wollman ${ECHO} $$t -\> $$l; \ 178639a2e50SGarrett Wollman rm -f $$t; \ 17960983531SJordan K. Hubbard ln ${LN_FLAGS} $$l $$t; \ 180639a2e50SGarrett Wollman done; true 181639a2e50SGarrett Wollman.endif 182639a2e50SGarrett Wollman 183639a2e50SGarrett Wollmaninstall: afterinstall 184639a2e50SGarrett Wollman.if !defined(NOMAN) 185639a2e50SGarrett Wollmanafterinstall: realinstall maninstall 186639a2e50SGarrett Wollman.else 187639a2e50SGarrett Wollmanafterinstall: realinstall 188639a2e50SGarrett Wollman.endif 189639a2e50SGarrett Wollmanrealinstall: beforeinstall 190639a2e50SGarrett Wollman.endif 191639a2e50SGarrett Wollman 192d9584d76SJordan K. HubbardDISTRIBUTION?= bin 19355ff8fb1SPoul-Henning Kamp.if !target(distribute) 19455ff8fb1SPoul-Henning Kampdistribute: 195ffd87c07SPoul-Henning Kamp cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${DISTRIBUTION} SHARED=copies 19655ff8fb1SPoul-Henning Kamp.endif 19755ff8fb1SPoul-Henning Kamp 198639a2e50SGarrett Wollman.if !target(tags) 199639a2e50SGarrett Wollmantags: ${SRCS} _PROGSUBDIR 200639a2e50SGarrett Wollman.if defined(PROG) 201639a2e50SGarrett Wollman -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC} | \ 202639a2e50SGarrett Wollman sed "s;\${.CURDIR}/;;" > tags 203639a2e50SGarrett Wollman.endif 204639a2e50SGarrett Wollman.endif 205639a2e50SGarrett Wollman 206639a2e50SGarrett Wollman 207639a2e50SGarrett Wollman.if !target(load) 208639a2e50SGarrett Wollmanload: ${PROG} 209639a2e50SGarrett Wollman /sbin/modload -o ${KMOD} -e${KMOD} ${PROG} 210639a2e50SGarrett Wollman.endif 211639a2e50SGarrett Wollman 212639a2e50SGarrett Wollman.if !target(unload) 213639a2e50SGarrett Wollmanunload: ${PROG} 214639a2e50SGarrett Wollman /sbin/modunload -n ${KMOD} 215639a2e50SGarrett Wollman.endif 216639a2e50SGarrett Wollman 2171aa57be3SGarrett WollmanKERN= ${.CURDIR}/../../sys/kern 2181aa57be3SGarrett Wollman 2191aa57be3SGarrett Wollmanvnode_if.h: ${KERN}/vnode_if.sh ${KERN}/vnode_if.src 2201aa57be3SGarrett Wollman sh ${KERN}/vnode_if.sh ${KERN}/vnode_if.src 2211aa57be3SGarrett Wollman 2221aa57be3SGarrett Wollman./vnode_if.h: vnode_if.h 2231aa57be3SGarrett Wollman 224cdaec7b1SBruce Evans_DEPSUBDIR= _PROGSUBDIR 2255ce6c3cfSWolfram Schneider_SUBDIRUSE: _PROGSUBDIR 2265ce6c3cfSWolfram Schneider.include <bsd.obj.mk> 227639a2e50SGarrett Wollman.include <bsd.dep.mk> 2285ce6c3cfSWolfram Schneider 229