mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 21:37:38 +00:00
810d27a618
Design credit to @yujincheng08 Close #5146. Fix #5491, fix #3752 Previously, Magisk changes the mount point from /system to /system_root by patching fstab to prevent the original init from changing root. The reason why we want to prevent the original init from switching the root directory is because it will then be read-only, making patching and injecting magiskinit into the boot chain difficult. This commit (ab)uses the fact that the /data folder will never be part of early mount (because it is handled very late in the boot by vold), so that we can use it as the mount point of tmpfs to store files. Some advantages of this method: - No need to switch root manually - No need to modify fstab, which significantly improves compatibility e.g. avoid hacks for weird devices like those using oplus.fstab, and avoid hacking init to bypass fstab in device trees - Supports skip_mount.cfg - Support DSU
175 lines
3.1 KiB
Makefile
175 lines
3.1 KiB
Makefile
LOCAL_PATH := $(call my-dir)
|
|
|
|
########################
|
|
# Binaries
|
|
########################
|
|
|
|
ifdef B_MAGISK
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := magisk
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutils \
|
|
libnanopb \
|
|
libsystemproperties \
|
|
libphmap \
|
|
libxhook
|
|
|
|
LOCAL_SRC_FILES := \
|
|
core/applets.cpp \
|
|
core/magisk.cpp \
|
|
core/daemon.cpp \
|
|
core/bootstages.cpp \
|
|
core/socket.cpp \
|
|
core/db.cpp \
|
|
core/scripting.cpp \
|
|
core/restorecon.cpp \
|
|
core/module.cpp \
|
|
core/logging.cpp \
|
|
core/thread.cpp \
|
|
resetprop/persist.cpp \
|
|
resetprop/resetprop.cpp \
|
|
su/su.cpp \
|
|
su/connect.cpp \
|
|
su/pts.cpp \
|
|
su/su_daemon.cpp \
|
|
zygisk/entry.cpp \
|
|
zygisk/main.cpp \
|
|
zygisk/utils.cpp \
|
|
zygisk/hook.cpp \
|
|
zygisk/memory.cpp \
|
|
zygisk/deny/cli.cpp \
|
|
zygisk/deny/utils.cpp \
|
|
zygisk/deny/revert.cpp
|
|
|
|
LOCAL_LDLIBS := -llog
|
|
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
|
|
ifdef B_INIT
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := magiskinit
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutilx \
|
|
libsepol \
|
|
libxz
|
|
|
|
LOCAL_SRC_FILES := \
|
|
init/init.cpp \
|
|
init/mount.cpp \
|
|
init/rootdir.cpp \
|
|
init/getinfo.cpp \
|
|
init/twostage.cpp \
|
|
magiskpolicy/sepolicy.cpp \
|
|
magiskpolicy/magiskpolicy.cpp \
|
|
magiskpolicy/rules.cpp \
|
|
magiskpolicy/policydb.cpp \
|
|
magiskpolicy/statement.cpp
|
|
|
|
LOCAL_LDFLAGS := -static
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
|
|
ifdef B_BOOT
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := magiskboot
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutilx \
|
|
libmincrypt \
|
|
liblzma \
|
|
liblz4 \
|
|
libbz2 \
|
|
libfdt \
|
|
libz \
|
|
libzopfli
|
|
|
|
LOCAL_SRC_FILES := \
|
|
magiskboot/main.cpp \
|
|
magiskboot/bootimg.cpp \
|
|
magiskboot/hexpatch.cpp \
|
|
magiskboot/compress.cpp \
|
|
magiskboot/format.cpp \
|
|
magiskboot/dtb.cpp \
|
|
magiskboot/ramdisk.cpp \
|
|
magiskboot/pattern.cpp \
|
|
magiskboot/cpio.cpp
|
|
|
|
LOCAL_LDFLAGS := -static
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
|
|
ifdef B_POLICY
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := magiskpolicy
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutilx \
|
|
libsepol
|
|
|
|
LOCAL_SRC_FILES := \
|
|
core/applet_stub.cpp \
|
|
magiskpolicy/sepolicy.cpp \
|
|
magiskpolicy/magiskpolicy.cpp \
|
|
magiskpolicy/rules.cpp \
|
|
magiskpolicy/policydb.cpp \
|
|
magiskpolicy/statement.cpp
|
|
|
|
LOCAL_CFLAGS := -DAPPLET_STUB_MAIN=magiskpolicy_main
|
|
LOCAL_LDFLAGS := -static
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
|
|
ifdef B_PROP
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := resetprop
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutilx \
|
|
libnanopb \
|
|
libsystemproperties
|
|
|
|
LOCAL_SRC_FILES := \
|
|
core/applet_stub.cpp \
|
|
resetprop/persist_properties.cpp \
|
|
resetprop/resetprop.cpp \
|
|
|
|
LOCAL_CFLAGS := -DAPPLET_STUB_MAIN=resetprop_main
|
|
LOCAL_LDFLAGS := -static
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
|
|
ifdef B_TEST
|
|
ifneq (,$(wildcard jni/test.cpp))
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := test
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libutils \
|
|
libphmap
|
|
|
|
LOCAL_SRC_FILES := test.cpp
|
|
include $(BUILD_EXECUTABLE)
|
|
|
|
endif
|
|
endif
|
|
|
|
ifdef B_BB
|
|
|
|
include jni/external/busybox/Android.mk
|
|
|
|
endif
|
|
|
|
########################
|
|
# Libraries
|
|
########################
|
|
include jni/utils/Android.mk
|
|
include jni/external/Android.mk
|