#
#  Linux-2.x.x  make-file.
#

include ../Rules.make
NAME   = StkDev
MAJR   = 179
MKNOD  = /usr/bin/mknod
DEFS   = -D__KERNEL__ -DMODULE -DMAJOR_NR=$(MAJR) -DCONFIG_SMP
DEFS  += -DMODNAME=$(NAME)
CC    += $(DEFS)
INCL  += -I/usr/src/linux-$(VRS)/include
INCL  += -I/usr/src/linux-$(VRS)/include/asm/mach-default
OBJS   =  device.o stack.o license.o
TARGETS = $(NAME).o $(NAME).ko $(NAME)  tester

all:	$(TARGETS)

device.o:	device.c chkhdrs Makefile config.h kver.h

tester:		tester.c 
		$(CX) -DNAME=\"$(NAME)\" -o $@ $< 

$(NAME).o:	$(OBJS)
		ld -i -o $@ $^ -Map $@.map

$(NAME).ko:	$(NAME).o module.o
		ld -i -o $@ $^ -Map $@.map

module.o:	module.c config.h Makefile
license.o:	license.c Makefile

chkver:		../tools/chkver.c Makefile
		$(CX) -o $@ $< 

chkhdrs:	../tools/chkhdrs.c Makefile
		$(CX) -o $@ $< 
		./$@

$(NAME):	Makefile
		rm -f $@ 
		mknod $@ c $(MAJR) 0

kver.h:		chkver Makefile
		./$< $(VRS)

install:	$(NAME).ko
		@if ! egrep $(NAME) /proc/modules ; then \
		   insmod $(NAME).ko ; \
		   dmesg | tail --lines 1 | grep $(NAME) ; \
                else \
                   echo $(NAME) is already installed ; \
                fi ;

remove:
		@if egrep $(NAME) /proc/modules ; then \
		   rmmod $(NAME) ; \
                else \
                   echo $(NAME) is not installed ; \
                fi ;

clean:
		make remove
		rm -f $(TARGETS) *.[os] $(NAME)*.map kver.h chkver chkhdrs

