ifneq (${KERNELRELEASE},)

# KERNELRELEASE defined: we are being compiled as part of the Kernel
        obj-m := vga_ball.o

else

# We are being compiled as a module: use the Kernel build system

	KERNEL_SOURCE := /usr/src/linux-headers-$(shell uname -r)
        PWD := $(shell pwd)

default: module Mario_Move_Test reset

reset: reset.o 
	gcc -Wall -o reset reset.o usbkeyboard.o -lusb-1.0

reset.o: reset.c usbkeyboard.h
	gcc -g -Wall -c reset.c

Mario_Move_Test: Mario_Move_Test.o usbkeyboard.o
	gcc -Wall -o Mario_Move_Test Mario_Move_Test.o usbkeyboard.o -lusb-1.0

Mario_Move_Test.o: Mario_Move_Test.c usbkeyboard.h
	gcc -g -Wall -c Mario_Move_Test.c

WhereIsMario: WhereIsMario.o usbkeyboard.o
	gcc -Wall -o WhereIsMario WhereIsMario.o usbkeyboard.o -lusb-1.0

WhereIsMario.o: WhereIsMario.c usbkeyboard.h
	gcc -g -Wall -c WhereIsMario.c

reset_and_barrel_spawn: reset_and_barrel_spawn.o usbkeyboard.o
	gcc -Wall -o reset_and_barrel_spawn reset_and_barrel_spawn.o usbkeyboard.o -lusb-1.0

reset_and_barrel_spawn.o: reset_and_barrel_spawn.c usbkeyboard.h
	gcc -g -Wall -c reset_and_barrel_spawn.c


barrel_no_mario_motion: barrel_no_mario_motion.o usbkeyboard.o
	gcc -Wall -o barrel_no_mario_motion barrel_no_mario_motion.o usbkeyboard.o -lusb-1.0

barrel_no_mario_motion.o: barrel_no_mario_motion.c usbkeyboard.h
	gcc -g -Wall -c barrel_no_mario_motion.c

Barrel_roll: Barrel_roll.o usbkeyboard.o
	gcc -Wall -o Barrel_roll Barrel_roll.o usbkeyboard.o -lusb-1.0

Barrel_roll.o: Barrel_roll.c usbkeyboard.h
	gcc -g -Wall -c Barrel_roll.c

barrel_roll_attempt2: barrel_roll_attempt2.o usbkeyboard.o
	gcc -Wall -o barrel_roll_attempt2 barrel_roll_attempt2.o usbkeyboard.o -lusb-1.0

barrel_roll_attempt2.o: barrel_roll_attempt2.c usbkeyboard.h
	gcc -g -Wall -c barrel_roll_attempt2.c


old_wheres_mario: old_wheres_mario.o usbkeyboard.o
	gcc -Wall -o old_wheres_mario old_wheres_mario.o usbkeyboard.o -lusb-1.0

old_wheres_mario.o: old_wheres_mario.c usbkeyboard.h
	gcc -g -Wall -c old_wheres_mario.c

combined: combined.o usbkeyboard.o
	gcc -Wall -o combined combined.o usbkeyboard.o -lusb-1.0

combined.o: combined.c usbkeyboard.h
	gcc -g -Wall -c combined.c


reset_mario: reset_mario.o usbkeyboard.o
	gcc -Wall -o reset_mario reset_mario.o usbkeyboard.o -lusb-1.0

reset_mario.o: reset_mario.c usbkeyboard.h
	gcc -g -Wall -c reset_mario.c


usbkeyboard.o: usbkeyboard.c usbkeyboard.h

module:
	${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules

clean:
	${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
	${RM} hello

TARFILES = Makefile README vga_ball.h vga_ball.c
TARFILE = lab3-sw.tar.gz
.PHONY : tar
tar : $(TARFILE)

$(TARFILE) : $(TARFILES)
	tar zcfC $(TARFILE) .. $(TARFILES:%=lab3-sw/%)

endif 
