all: airo_mpi.o

CC=gcc
DIR_MODULES=/lib/modules
DIR_MODULES_VER=$(DIR_MODULES)/$(shell uname -r)
DIR_MODULES_DST=$(DIR_MODULES_VER)/kernel/drivers/net/wireless
ifndef KSRC
KSRC=$(DIR_MODULES_VER)/build
endif

ARCH=$(shell uname -m)

HAVE_MODVERSIONS := $(shell grep CONFIG_MODVERSIONS $(KSRC)/include/linux/autoconf.h | grep -c define)

RECALC_SIGPENDING := $(shell grep recalc_sigpending $(KSRC)/include/linux/sched.h | grep -v recalc_sigpending_tsk | grep -c task_)

SIGMASK_LOCK := $(shell grep -c sigmask_lock $(KSRC)/include/linux/sched.h)

CFLAGS := -D__KERNEL__ -I$(KSRC)/include -I. -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=$(ARCH) -DMODULE

ifneq ($(HAVE_MODVERSIONS),0)
CFLAGS += -DMODVERSIONS -include $(KSRC)/include/linux/modversions.h
endif

ifneq ($(RECALC_SIGPENDING),0)
CFLAGS += -DRECALC_SIGPENDING_1_ARG
endif

ifneq ($(SIGMASK_LOCK),0)
CFLAGS += -DHAVE_SIGMASK_LOCK
endif

airo_mpi.o: airo_mpi.c aes.c aes.h aestab.h airo.h
	$(CC) $(CFLAGS) -c airo_mpi.c

install: airo_mpi.o
	install -d $(DIR_MODULES_DST)
	install -o 0 -g 0 -m 644 airo_mpi.o $(DIR_MODULES_DST)

uninstall:
	rm -rf $(DIR_MODULES_DST)/airo_mpi.o

clean:
	rm -f airo_mpi.o
