# set your module name here
# provide the following files
#
# MODULENAME.c	the driver
# MODULENAME.h  the include file
# MODULENAME_test.c	the driver test program
# MODULENAME_test.sh	the driver test script
#
MODULENAME 	:= gpstime

mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir := $(dir $(mkfile_path))


### should not need to change stuff below ######################


KDIR		:= /lib/modules/$(shell uname -r)/build
KVER		:= $(shell uname -r)
PWD		:= $(shell pwd)

CC		:= gcc -Wall -g

TARGET		:= gpstime.ko
INSTDIR		:= /lib/modules/$(KVER)/extra

SYMVERSDIR	:= /var/cache/$(MODULENAME)

SUDO_USER?= controls

obj-m += $(MODULENAME).o
$(MODULENAME)-y := $(MODULENAME)_core.o 
$(MODULENAME)-y += ../../include/drv/spectracomGPS.o
$(MODULENAME)-y += ../../include/drv/symmetricomGps.o
$(MODULENAME)-y += ../../include/drv/ligoPcieTiming_core.o
$(MODULENAME)-y += ../../drv/rts-logger/force-printk/printk-rts-logger.o

ccflags-y += -DRTS_LOG_PREFIX=\"gpstime\" -I$(mkfile_dir)/../../include/ 

ifeq ($(KERNELRELEASE),)
all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules
endif

stest: stest.c
	$(CC) -g -o stest stest.c

$(MODULENAME)_stat: $(MODULENAME)_stat.c
	$(CC) -g -o $(MODULENAME)_stat $(MODULENAME)_stat.c

install: 
	#remove all old versions of the driver
	find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET) -exec rm -f {} \; || true
	find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET).gz -exec rm -f {} \; || true
	# Install new driver
	install -D -m 644 $(TARGET) $(INSTALL_MOD_PATH)$(INSTDIR)/$(TARGET)
	/sbin/depmod -a || true
	/sbin/modprobe $(MODULENAME)
	if [ -e /dev/$(MODULENAME) ] ; then \
	    rm -f /dev/$(MODULENAME) ; \
	fi
	mknod /dev/$(MODULENAME) c `grep $(MODULENAME) /proc/devices|awk '{print $$1}'` 0
	chown $(SUDO_USER) /dev/$(MODULENAME)
	# save Module.symvers if possible
	mkdir -p $(SYMVERSDIR) || true
	if [ -w $(SYMVERSDIR) ]; then cp Module.symvers $(SYMVERSDIR); fi

uninstall:
	/sbin/rmmod $(MODULENAME) || true
	if [ -e $(INSTDIR)/$(TARGET) ] ; then \
	  rm -f $(INSTDIR)/$(TARGET) ; \
	  rmdir $(INSTDIR); \
	fi
	/sbin/depmod -a
	/bin/rm -f /dev/$(MODULENAME) || true

load:
	sudo /sbin/insmod ./$(MODULENAME).ko

unload:
	sudo /sbin/rmmod $(MODULENAME)

test: all
	./$(MODULENAME)_test.sh

clean:
	rm -f *.o *.ko Module.symvers *.mod.c .*.cmd stest modules.order
	rm -f ../../include/drv/*.o
	rm -f ../../include/drv/.*o.cmd


