# Makefile for 2.6 kernel modules - cowloop

KERNELRELEASE = $(shell uname -r)
KERNDIR = /lib/modules/$(KERNELRELEASE)/build
MODDIR  = /lib/modules/$(KERNELRELEASE)/kernel/drivers/block
THISDIR = $(shell pwd)
COWMAJOR= 241
DESTDIR =
MODULE  = cowloop.ko
UTILS   = cowdev cowwatch cowctl cowsync cowlist cowrepair cowmerge cowpack

obj-m  := cowloop.o

all:	$(MODULE) $(UTILS)

module:	$(MODULE)

utils:	$(UTILS)

cowloop.ko:	cowloop.c cowloop.h version.h
		make -C $(KERNDIR) M=$(THISDIR) -Wall modules
# The older (deprecated) version of this command was:
# make -C $(KERNDIR) SUBDIRS=$(THISDIR) -I. -Wall modules

cowdev:		cowdev.c version.h cowloop.h
		$(CC) -I. -Wall -o cowdev cowdev.c

cowwatch:	cowwatch.c version.h cowloop.h
		$(CC) -I. -Wall -o cowwatch cowwatch.c

cowctl:		cowctl.c version.h cowloop.h
		$(CC) -I. -Wall -o cowctl cowctl.c

cowsync:	cowsync.c version.h cowloop.h
		$(CC) -I. -Wall -o cowsync cowsync.c

cowlist:	cowlist.c version.h cowloop.h
		$(CC) -I. -Wall -o cowlist cowlist.c

cowrepair:	cowrepair.c version.h cowloop.h
		$(CC) -I. -Wall -o cowrepair cowrepair.c

cowmerge:	cowmerge.c version.h cowloop.h
		$(CC) -I. -Wall -o cowmerge cowmerge.c

cowpack:	cowpack.c version.h cowloop.h
		$(CC) -I. -Wall -o cowpack cowpack.c -lz

#--------------------------------------------------------------------

install:	install-module install-utils install-dev install-man install-doc

install-module:	$(MODULE) 	
		@# Install the loadable kernel module
		@./gplaccept
		@# The $(MODDIR) directory should exist already, but if
		@# it doesn't, we create it so we can continue our job.
		if [ ! -d $(DESTDIR)$(MODDIR) ]; then \
			mkdir -p $(DESTDIR)$(MODDIR); fi
		cp cowloop.ko $(DESTDIR)$(MODDIR)
		@# Build a modules-dependancy database, so the
		@# modprobe-command will be able to find "cowloop":
		if [ -z "$(DESTDIR)" ]; then /sbin/depmod -a; fi

install-utils:	$(UTILS) 
		@# Install the utility-programs
		@./gplaccept
		if [ ! -d $(DESTDIR)/usr/sbin ]; then \
			mkdir -p $(DESTDIR)/usr/sbin; fi
		for UTIL in $(UTILS); do \
			cp $$UTIL $(DESTDIR)/usr/sbin; done

install-dev:	
		@# Create the /dev files
		./makecowdevs $(COWMAJOR) $(DESTDIR)  # create the special files

install-man:
		@# Install the manpages
		@./gplaccept
		if [ ! -d $(DESTDIR)/usr/share/man/man4 ]; then \
			mkdir -p $(DESTDIR)/usr/share/man/man4; fi
		cp ../man/man4/cowloop.4   $(DESTDIR)/usr/share/man/man4/
		if [ ! -d $(DESTDIR)/usr/share/man/man1 ]; then \
			mkdir -p $(DESTDIR)/usr/share/man/man1; fi
		for UTIL in $(UTILS); do \
			cp ../man/man1/$$UTIL.1 $(DESTDIR)/usr/share/man/man1/; done
 
install-doc:	
		@# Install the documentation (PostScript file)
		@./gplaccept
		if [ ! -d $(DESTDIR)/usr/share/doc/cowloop ]; then \
			mkdir -p $(DESTDIR)/usr/share/doc/cowloop; fi
		cp ../doc/cowloop.ps.bz2   $(DESTDIR)/usr/share/doc/cowloop/

#--------------------------------------------------------------------

uninstall:
		@# revert the 'make install' steps; ignore all errors
		-rm -f $(DESTDIR)$(MODDIR)/cowloop.ko
		-if [ -z "$(DESTDIR)" ]; then /sbin/depmod -a; fi
		-for UTIL in $(UTILS); do \
                        rm -f $(DESTDIR)/usr/sbin/$$UTIL; done
		-rm -f /dev/cowloop /dev/cow/*
		-rmdir /dev/cow 2>/dev/null
		-rm -f $(DESTDIR)/usr/share/man/man4/cowloop.4
		-for UTIL in $(UTILS); do \
                        rm -f $(DESTDIR)/usr/share/man/man1/$$UTIL.1; done
		-rm -f $(DESTDIR)/usr/share/doc/cowloop/cowloop.ps.bz2
		-rmdir $(DESTDIR)/usr/share/doc/cowloop/ 2>/dev/null

#--------------------------------------------------------------------

clean:		
		@# revert the 'make' steps
		rm -f cowloop.ko cowloop.o cowloop.mod.[co]
		rm -f $(UTILS)
		rm -f .cowloop.ko.cmd .cowloop.mod.o.cmd .cowloop.o.cmd
		rm -f .gpl_license_accepted
		rm -rf .tmp_versions

