diff --git a/kernel/Makefile b/kernel/Makefile index 9fec3ef387b7..d2315b9b8df0 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -16,15 +16,36 @@ ccflags-y += -I$(objtree)/security/selinux -include $(srctree)/include/uapi/asm- obj-$(CONFIG_KSU) += kernelsu.o -# .git is a text file while the module is imported by 'git submodule add'. -ifeq ($(shell test -e $(srctree)/$(src)/../.git; echo $$?),0) -$(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin [ -f ../.git/shallow ] && git fetch --unshallow) -KSU_GIT_VERSION := $(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git rev-list --count HEAD) +IS_KERNEL_69 := $(strip $(shell \ + if [ "$(VERSION)" -ge "6" -a "$(PATCHLEVEL)" -ge "9" ]; then \ + echo TRUE; \ + else \ + echo FALSE; \ + fi \ + )) + +# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b1992c3772e69a6fd0e3fc81cd4d2820c8b6eca0 +ifeq ($(IS_KERNEL_69),TRUE) +SRC_LOCATION := $(src) +else +SRC_LOCATION := $(srctree)/$(src) +endif + +GIT_TOOL := /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git + +# Check for both https & ssh remote +REMOTE_CHECK := $(shell cd $(SRC_LOCATION); $(GIT_TOOL) remote -v | grep -E 'github\.com[/:]tiann/KernelSU') + +ifneq ($(REMOTE_CHECK),) +ifeq ($(shell cd $(SRC_LOCATION); $(GIT_TOOL) rev-parse --is-shallow-repository),true) +$(shell cd $(SRC_LOCATION); $(GIT_TOOL) fetch --unshallow) +endif +KSU_GIT_VERSION := $(shell cd $(SRC_LOCATION); $(GIT_TOOL) rev-list --count HEAD) # ksu_version: major * 10000 + git version + 200 for historical reasons $(eval KSU_VERSION=$(shell expr 10000 + $(KSU_GIT_VERSION) + 200)) $(info -- KernelSU version: $(KSU_VERSION)) ccflags-y += -DKSU_VERSION=$(KSU_VERSION) -else # If there is no .git file, the default version will be passed. +else # Pass default version if the defined remote is not found $(warning "KSU_GIT_VERSION not defined! It is better to make KernelSU a git submodule!") ccflags-y += -DKSU_VERSION=16 endif