Refactor Kconfig and Makefile, update KPROBES related configurations, simplify conditional compilation logic

This commit is contained in:
ShirkNeko
2025-04-17 19:46:14 +08:00
parent 140ebd196f
commit 28f006ed39
7 changed files with 78 additions and 61 deletions

View File

@@ -23,27 +23,13 @@ obj-$(CONFIG_KSU) += kernelsu.o
obj-$(CONFIG_KPM) += kpm/
# https://github.com/tiann/KernelSU/pull/2102/files#diff-3a325663233178293ee38b8161f3be511a466af7e0156b9d03d5aed0497564bfR19
IS_GKI := $(strip $(shell \
if [ "$(VERSION)" -ge "5" -a "$(PATCHLEVEL)" -ge "10" ]; then \
echo TRUE; \
else \
echo FALSE; \
fi \
))
ifeq ($(IS_GKI),TRUE)
$(info -- SukiSU: Kernel version is GKI.)
# GKI manual hook checks
# https://github.com/Pzqqt/android_kernel_xiaomi_marble/commit/5b8596b5604bcd0e6e12697a01136a0bb9eb0257
ifeq ($(strip $(CONFIG_KSU_MANUAL_HOOK)),y)
$(info -- SukiSU: Hooks with Manual hook!)
ifeq ($(strip $(CONFIG_KSU_HOOK_KPROBES)),y)
$(info -- SukiSU: KPROBES hooking enabled!)
else
$(info -- SukiSU: Manual hooking enabled!)
ifeq ($(strip $(CONFIG_KSU)),m)
$(error CONFIG_KSU_MANUAL_HOOK cannot be enabled when compiling SukiSU as LKM!)
endif
else
ccflags-y += -DKSU_HOOK_WITH_KPROBES
endif
endif
# .git is a text file while the module is imported by 'git submodule add'.
@@ -76,9 +62,27 @@ $(info -- SukiSU Manager signature size: $(KSU_EXPECTED_SIZE))
$(info -- SukiSU Manager signature hash: $(KSU_EXPECTED_HASH))
$(info -- Supported Unofficial Manager: 5ec1cff (GKI) rsuntk (Non-GKI) ShirkNeko udochina (GKI and non-GKI and KPM))
KERNEL_VERSION := $(VERSION).$(PATCHLEVEL)
# 检查KPM是否开启
KERNEL_MAJOR_VERSION := $(word 1, $(subst ., , $(KERNEL_VERSION)))
KERNEL_MINOR_VERSION := $(word 2, $(subst ., , $(KERNEL_VERSION)))
ifeq ($(KERNEL_MAJOR_VERSION),5)
ifeq ($(KERNEL_MINOR_VERSION),4)
KSU_KERNEL_TYPE := GKI 1.0
else ifeq ($(findstring $(KERNEL_MINOR_VERSION),$(filter $(KERNEL_MINOR_VERSION),10 11 12 13 14 15 16 17 18 19 20)),1)
KSU_KERNEL_TYPE := GKI 2.0
else
KSU_KERNEL_TYPE := Non-GKI
endif
else ifeq ($(KERNEL_MAJOR_VERSION),4)
KSU_KERNEL_TYPE := Non-GKI
else ifeq ($(KERNEL_MAJOR_VERSION),6)
KSU_KERNEL_TYPE := GKI 2.0
else
KSU_KERNEL_TYPE := Non-GKI
endif
$(info -- KERNEL_VERSION: $(KERNEL_VERSION))
$(info -- KERNEL_TYPE: $(KSU_KERNEL_TYPE))
# Check if KPM is enabled
ifeq ($(CONFIG_KPM),y)
$(info -- KPM is enabled)
else