CONFIG_MODULE_SIG := n

ALLOWEDKERNEL   := 1

OSTYPE          := $(shell uname -m)
KDIR            ?= /lib/modules/$(shell uname -r)/build
MODULE_OBJS     := AmiNFFltKern.o
PWD             := $(shell pwd)

ldflags-y       := /usr/lib/Amicon_ip-client/Drivers/AmiNFFltLib.a

MODULE_NAME     := AmiNFFilter

ifeq ($(OSTYPE),x86_64)
  ccflags-y     += -m64 -mno-red-zone -fcf-protection=branch -mcet-switch -mcmodel=kernel 
else
  ifeq ($(OSTYPE),aarch64)
    ccflags-y   += -mpc-relative-literal-loads -mcmodel=large
  else
    ALLOWEDKERNEL := 0
  endif
endif

ccflags-y       += -fno-common

# Disable warning "Warn when the indentation of the code does not reflect the block structure"
ccflags-y       += -Wno-misleading-indentation

# Disable build failure on non-critical objtool warnings (if some) on kernel 6.15 and higher
ifeq ($(CONFIG_OBJTOOL),y)
  objtool-args-y := $(filter-out --Werror, $(objtool-args-y))
endif

obj-m += $(MODULE_NAME).o
$(MODULE_NAME)-objs := $(MODULE_OBJS)

ifeq ($(ALLOWEDKERNEL),1)
all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules
else
	@echo "\nOnly amd64 and arm64 kernel versions supported!\n"
endif

clean:
	-rm -f $(MODULE_OBJS)
	-rm -f *.mod.*
	-rm -f *.o
	-rm -f *odule*.*
	-rm -f .*.*.*
	-rm -f -r .tmp_versions

cleanfull:
	-rm -f $(MODULE_OBJS)
	-rm -f *.mod.*
	-rm -f *.o
	-rm -f *odule*.*
	-rm -f .*.*.*
	-rm -f -r .tmp_versions
	-rm -f $(MODULE_NAME).ko

