EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
EXTRA_CFLAGS += -O1
GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
ifeq ($(GCC_VER_49),1)
EXTRA_CFLAGS += -Wno-date-time -Wno-error=date-time	# Fix compile error && warning on gcc 4.9 and later
endif

EXTRA_CFLAGS += -I$(src)/include

EXTRA_LDFLAGS += --strip-debug


SHELL := /bin/sh
PWD ?= $(shell pwd)
CC = gcc
KVER ?= $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/3rdparty/v4l2loopback
SUBARCH ?= $(shell uname -m | sed -e s/i.86/i386/)
CLR_MODULE_FILES := *.mod.c *.mod *.o .*.cmd *.ko* *~ .tmp_versions* modules.order Module.symvers
SYMBOL_FILE := Module.symvers
INSTALL_PREFIX ?=
MAKE = make
MODULE_NAME := v4l2loopback

obj-m := v4l2loopback.o

all:
	$(MAKE) -C $(KSRC) M=$(PWD) modules

install: all
	@mkdir -p $(MODDESTDIR)
	@install -p -D -m 755 $(MODULE_NAME).ko $(MODDESTDIR)
	@/sbin/depmod -a $(KVER)

uninstall:
	@modprobe -r $(MODULE_NAME)
	@rm -f $(MODDESTDIR)/$(MODULE_NAME).ko*
	@/sbin/depmod -a $(KVER)

clean:
	@rm -fr *.mod.c *.mod *.cmd *.o .*.cmd *.ko *~ .*.o.d .cache.mk
	@rm -fr .tmp_versions
	@rm -fr Modules.symvers
	@rm -fr Module.symvers
	@rm -fr Module.markers
	@rm -fr modules.order

sign:
ifeq ($(NO_SKIP_SIGN), y)
	@openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom MOK/"
	@mokutil --import MOK.der
else
	echo "Skipping key creation"
endif
	@$(KSRC)/scripts/sign-file sha256 MOK.priv MOK.der v4l2loopback.ko
	
sign-install: all sign install

