--- a/src/Makefile
+++ b/src/Makefile
@@ -1,26 +1,31 @@
-MODULE_NAME = akvcam
-MODULE_VERSION = 1.2.2
-KERNEL_ROOT ?= $(shell realpath /lib/modules/$(shell uname -r))
-KERNEL_DIR ?= $(KERNEL_ROOT)/build
-COPY = cp -f
-MKDIR = mkdir -p
-RMDIR = rm -rvf
+SHELL := /bin/sh
+CC = gcc
+MAKE = make
+KVER ?= $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
+KDIR := /lib/modules/$(KVER)/build
 PWD := $(shell pwd)
-DKMS := dkms
-DESTDIR :=
-PREFIX := $(DESTDIR)/usr/src
-INSTALLDIR := $(PREFIX)/$(MODULE_NAME)-$(MODULE_VERSION)
+SUBARCH ?= $(shell uname -m | sed -e s/i.86/i386/)
+ARCH := $(SUBARCH)
+CROSS_COMPILE ?=
+CLR_MODULE_FILES := *.mod.c *.mod *.o .*.cmd *.ko *~ .tmp_versions* modules.order Module.symvers
+SYMBOL_FILE := Module.symvers
+MODDESTDIR := /lib/modules/$(KVER)/kernel/3rdparty/akvcam
+MODULE_NAME := akvcam
 
-HAVE_SPARSE := $(shell which sparse 2>/dev/null)
-SPARSE_MODE ?= 2
+# pclos not seem to have sparce with this command
+#HAVE_SPARSE := $(shell which sparse 2>/dev/null)
+#SPARSE_MODE ?= 2
 
-ifdef USE_SPARSE
-ifdef HAVE_SPARSE
-SPARSE_VAR = C=$(SPARSE_MODE)
-endif
-endif
+#ifdef USE_SPARSE
+#ifdef HAVE_SPARSE
+#SPARSE_VAR = C=$(SPARSE_MODE)
+#endif
+#endif
 
-obj-m += $(MODULE_NAME).o
+ifneq ($(KERNELRELEASE),)
+
+obj-m := $(MODULE_NAME).o
 akvcam-objs := \
 	module.o \
 	attributes.o \
@@ -29,10 +34,10 @@
 	device.o \
 	driver.o \
 	file_read.o \
-        format.o \
+	format.o \
 	frame.o \
-        frame_filter.o \
-        ioctl.o \
+	frame_filter.o \
+	ioctl.o \
 	list.o \
 	log.o \
 	map.o \
@@ -40,25 +45,38 @@
 	settings.o \
 	utils.o
 
-all:
-	$(MAKE) -C $(KERNEL_DIR) M=$(PWD) $(SPARSE_VAR) modules
+else
+
+all: clean modules install
+
+modules:
+	$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd)  modules
+
+strip:
+	$(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded
+
+install:
+	mkdir -p $(MODDESTDIR)
+	install -p -m 644 $(MODULE_NAME).ko  $(MODDESTDIR)
+	xz -f $(MODDESTDIR)/$(MODULE_NAME).ko
+	depmod -a ${KVER}
+
+uninstall:
+	rm -f $(MODDESTDIR)/$(MODULE_NAME).ko*
+	depmod -a ${KVER}
 
 clean:
-	$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
-
-install: uninstall
-	$(MKDIR) $(INSTALLDIR)
-	$(COPY) Makefile $(INSTALLDIR)
-	$(COPY) dkms.conf $(INSTALLDIR)
-	$(COPY) *.h $(INSTALLDIR)
-	$(COPY) *.c $(INSTALLDIR)
-
-dkms_install: | dkms_uninstall install
-	$(DKMS) install $(MODULE_NAME)/$(MODULE_VERSION)
-
-uninstall:
-	$(RMDIR) $(INSTALLDIR)
-
-dkms_uninstall:
-	- $(DKMS) remove $(MODULE_NAME)/$(MODULE_VERSION) --all
-	$(RMDIR) $(INSTALLDIR)
+	$(MAKE) -C $(KSRC) M=$(shell pwd)  clean
+	cd hal ; rm -fr */*/*/*.mod.c */*/*/*.mod */*/*/*.o */*/*/.*.cmd */*/*/*.ko
+	cd hal ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
+	cd hal ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
+	cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+	cd core ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
+	cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+	cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko *.o.d
+	cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+	cd platform ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+	rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
+	rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
+	rm -fr .tmp_versions
+endif
