mirror of
https://github.com/jetkvm/rv1106-system.git
synced 2026-05-21 05:20:41 +00:00
a8a9a8502d
* feat: support dual storage variants (eMMC + SDMMC/TF card) and upgrade jetkvm_app to 0.5.6 Introduce two separate build configurations for JetKVM V2 hardware variants that differ only in storage medium: BoardConfig-EMMC-NONE-RV1106_JETKVM_V2.mk → boots from eMMC (mmcblk0, 13640M userdata) BoardConfig-SDMMC-NONE-RV1106_JETKVM_V2.mk → boots from TF card (mmcblk1, dynamic userdata) DTS refactor: - Extract all shared board peripherals (backlight, gmac, i2c1/AT24C02, i2c3/FT5x06, spi0/ST7789V, uart3, rtc, wdt, pwm5, sfc=disabled) into rv1106-jetkvm-v2.dtsi as a common base - rv1106g-jetkvm-v2.dts becomes a thin file with only the eMMC node - New rv1106g-jetkvm-v2-sdmmc.dts thin file with only the sdmmc node - Verified: both DTBs compile correctly; eMMC DTB is binary-identical to upstream Build system: - Add sdmmc as a new RK_BOOT_MEDIUM type throughout project/build.sh: sd_parts device, parse_partition_file, rootfs bootarg, build_recovery, build_factory, build_uboot INI selection, and mount_part script - sysdrv/Makefile: add sdmmc block for KERNEL_CMDLINE_FRAGMENT and env target using mmcblk1; restore emmc back to mmcblk0 - project/scripts/mk-tftp_sd_update.sh: recognize sdmmc alongside emmc - tools/linux/Linux_Pack_Firmware/mk-update_pack.sh: add mmcblk0 to the boot medium list so eMMC update packages are correctly generated U-Boot: - android_ab.c: replace hardcoded mmcblk1 with dev_desc->devnum so the A/B root device path is correct for both eMMC (devnum=0) and SDMMC (devnum=1), matching the DTS alias assignments jetkvm_app: - Upgrade from 0.4.8 to 0.5.6 (SHA256 verified) - Note: 0.5.6 switches from static to dynamic linking (ld-uClibc.so.0) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: switch to ubuntu-22.04 runner and build both EMMC and SDMMC variants - Replace buildjet-16vcpu-ubuntu-2204 with standard ubuntu-22.04 runner - Use matrix strategy (fail-fast: false) to build EMMC and SDMMC in parallel - Artifact names include board variant: OTA-Image-EMMC, Full-Image-EMMC, etc. - buildkit upload remains EMMC-only Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: bake SKU identifier into system image for OTA targeting Each build variant writes /etc/jetkvm-sku to the system partition so the jetkvm_app can report the correct SKU when querying the OTA service: BoardConfig-EMMC → RK_SKU=jetkvm-emmc BoardConfig-SDMMC → RK_SKU=jetkvm-sdmmc Matches the SKU routing introduced in jetkvm/cloud-api#49, where the OTA API serves variant-specific binaries under {prefix}/{version}/skus/{sku}/ and defaults to legacy path for unrecognised SKUs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: align OTA SKU names with cloud-api DEFAULT_SKU convention jetkvm-emmc → jetkvm-v2 (matches cloud-api DEFAULT_SKU) jetkvm-sdmmc → jetkvm-v2-sdmmc Ref: jetkvm/cloud-api@1958830 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(dts): remove contradictory cap-mmc-highspeed from sdmmc node no-mmc prevents MMC protocol probing entirely, making cap-mmc-highspeed dead and misleading. Only cap-sd-highspeed is relevant for TF card use. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: handle IGNORE mountpoint for sdmmc in mount_part script Line 1601's guard only matched emmc, so SDMMC partitions with IGNORE mountpoint (e.g. inactive A/B slot) would fall through to return 1 instead of return 0, causing boot-time mount errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: add sdmmc to block-device filesystem tool checks in build_mkimg erofs and squashfs paths were missing sdmmc, causing them to fall through to ubifs (NAND-only tool). Latent with current ext4-only config but would silently produce a corrupt image if fs type changed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(sdmmc): build dd-able SD card image for direct flashing Adds build_sd_dd_image() that assembles a flat raw image from the fixed-size partitions (env, idblock, uboot_a/b, boot_a/b, system_a/b) plus a 256 MiB seed userdata.img containing install_to_userdata content (jetkvm_app etc.). Layout follows the cmdline blkdevparts — no MBR/GPT, since the kernel reads partitioning from u-boot env. Why a seed userdata: the SDMMC partition spec terminates with '-(userdata)' which build_mkimg skips, so jetkvm_app never landed in update.img on SDMMC. The mount_part init script (project/build.sh mount_part) calls resize2fs on first boot, which grows the 256 MiB ext4 to the end of the SD card automatically. Workflow: SDMMC artifact is now update_sd.img.zip (zip -9 of a sparse ~1.4 GiB image, ~45 MiB compressed). update.img remains the EMMC artifact since RKDevTool still uses it for production flashing. * fix(sdmmc): chown userdata seed root:root before mkfs.ext4 build_mkimg userdata is a no-op on SDMMC (partition size '-' → 0), so the __RELEASE_FILESYSTEM_FILES chown that build_mkimg normally runs never fires. Without it, mkfs.ext4 -d preserves the builder's uid/gid into the image, so /userdata/jetkvm on the SD card depended on whoever ran the build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(sdmmc): tune userdata mkfs.ext4 so first-boot resize2fs scales to 1 TiB The previous flags (mkfs default 1K block size, -O ^64bit,^huge_file) made the first-boot resize hang on large cards: - 1K blocks × 8K-blocks-per-group → 128K block groups for 1 TiB. resize2fs has to write GD/bitmap entries for every new group; on slow SD random writes this stretches to many minutes. - Default inode_ratio at 1K = 2048 inodes/group → ~256M inodes after resize. ext4lazyinit kthread then zeroes ~32 GiB of inode tables in the background, saturating SD I/O long after mount returns. - resize_inode reserve = 256 GDT blocks × 32 entries = 8192 group descriptors, capping resize_inode-style growth at 64 GiB. Beyond that, resize2fs falls back to meta_bg, but ^64bit blocks the cleaner path. Switch to: 4K blocks, -T largefile (1 inode/MiB), -O 64bit, and an explicit -E resize= reservation covering 2 TiB. Measured on a 1 TiB sparse loop (host mkfs.ext4 1.47.2): online resize drops from 40 s to 0.4 s, and the post-mount lazy-itable workload drops from ~32 GiB to ~256 MiB of writes. 32 GiB minimum supported card capacity. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(sdmmc): include sdmmc in sysdrv build-medium switches Three places in sysdrv/ branched on the boot medium but left sdmmc out: - Makefile.tools.board.mk: e2fsprogs was gated on BOOT_MEDIUM=emmc, so the SDMMC rootfs shipped without resize2fs/e2fsck/mke2fs. mount_part's first-boot resize2fs call then silently failed and userdata stayed locked at the 256 MiB seed size, never growing to fill the card. - Makefile.param: the RK_BOOT_MEDIUM whitelist that propagates BOOT_MEDIUM omitted sdmmc, so any sub-tool Makefile included Makefile.param standalone (dropbear, eudev, etc.) saw BOOT_MEDIUM unset for sdmmc. Currently benign because no sub-tool branches on BOOT_MEDIUM, but a latent footgun. - tools/pc/toolkits/get_part_info.sh: PARTITION_FIRST_NO=0 was applied only for emmc. mmcblk1pN is also 1-indexed, so sdmmc would produce off-by-one root=/dev/mmcblk1pN values via `make env -C sysdrv`. The project's build.sh path computes part_num itself and isn't affected, but the sysdrv path was wrong. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
319 lines
9.5 KiB
Makefile
319 lines
9.5 KiB
Makefile
|
|
CURRENT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
|
|
C_BLACK = \e[30;1m
|
|
C_RED = \e[31;1m
|
|
C_GREEN = \e[32;1m
|
|
C_YELLOW = \e[33;1m
|
|
C_BLUE = \e[34;1m
|
|
C_PURPLE = \e[35;1m
|
|
C_CYAN = \e[36;1m
|
|
C_WHITE = \e[37;1m
|
|
C_NORMAL = \033[0m
|
|
|
|
################################################################################
|
|
## Platform Specified Configuraton
|
|
################################################################################
|
|
include $(CURRENT_DIR)/cfg/cfg.mk
|
|
ifeq ($(SYSDRV_CROSS),)
|
|
SYSDRV_CROSS := $(CONFIG_SYSDRV_CROSS)
|
|
endif
|
|
|
|
ifneq ($(findstring $(RK_CHIP),rv1126 rk3588 rv1106),)
|
|
CHIP := $(RK_CHIP)
|
|
endif
|
|
|
|
ifeq ($(CHIP),)
|
|
CHIP := $(CONFIG_SYSDRV_CHIP)
|
|
endif
|
|
|
|
ifneq ($(findstring $(RK_BOOT_MEDIUM),emmc sdmmc spi_nor spi_nand slc_nand),)
|
|
BOOT_MEDIUM := $(RK_BOOT_MEDIUM)
|
|
endif
|
|
|
|
ifeq ($(CHIP),)
|
|
$(error Please Select CHIP, build like this: make CHIP=<rv1126|rk3588>)
|
|
endif
|
|
|
|
ifeq ($(shell $(SYSDRV_CROSS)-gcc --version),)
|
|
$(info ************************************************************************)
|
|
$(info Not found tool $(SYSDRV_CROSS)-gcc, please install first !!!)
|
|
$(info ************************************************************************)
|
|
$(error *ERROR*)
|
|
endif
|
|
|
|
PATH:=$(CURRENT_DIR)/tools/pc/uboot_tools:$(CURRENT_DIR)/out/bin/pc:$(PATH)
|
|
PATH:=$(CURRENT_DIR)/tools/pc/toolkits:$(PATH)
|
|
|
|
################################################################################
|
|
## Public Configuraton
|
|
################################################################################
|
|
ifeq ($(SYSDRV_JOBS),)
|
|
SYSDRV_JOBS:=$(shell echo `getconf _NPROCESSORS_ONLN`)
|
|
endif
|
|
ifeq ($(SYSDRV_JOBS),0)
|
|
SYSDRV_JOBS:=6
|
|
endif
|
|
|
|
SYSDRV_OPTS := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
|
KERNEL_DIR := $(CURRENT_DIR)/source/kernel
|
|
|
|
ifeq ($(SYSDRV_CROSS),arm-rockchip830-linux-uclibcgnueabihf)
|
|
SYSDRV_LIB_TYPE := uclibc
|
|
ARCH := arm
|
|
SYSDRV_CROSS_CFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=hard
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_CROSS),arm-rockchip1050-linux-uclibcgnueabihf)
|
|
SYSDRV_LIB_TYPE := uclibc
|
|
ARCH := arm
|
|
SYSDRV_CROSS_CFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=hard
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_CROSS),arm-rockchip830-linux-gnueabihf)
|
|
SYSDRV_LIB_TYPE := glibc
|
|
ARCH := arm
|
|
SYSDRV_CROSS_CFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=hard
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_CROSS),aarch64-rockchip1031-linux-gnu)
|
|
SYSDRV_LIB_TYPE := glibc
|
|
ARCH := arm64
|
|
SYSDRV_CROSS_CFLAGS += -mtune=cortex-a76.cortex-a55
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_BUILD_RECOVERY),y)
|
|
export SYSDRV_KERNEL_OBJS_OUTPUT_DIR := $(CURRENT_DIR)/source/objs_kernel_recovery
|
|
export SYSDRV_KERNEL_UPDATE_DTB := n
|
|
endif
|
|
export SYSDRV_KERNEL_OBJS_OUTPUT_DIR ?= $(CURRENT_DIR)/source/objs_kernel
|
|
|
|
################################################################################
|
|
## Public function and export
|
|
################################################################################
|
|
|
|
#
|
|
# $(1) destination folder
|
|
# $(2) source dirctory or files
|
|
#
|
|
# default:
|
|
# copy $(2)/* to $(1)
|
|
#
|
|
# if $(3) = SELF
|
|
# copy $(2) to $(1)
|
|
#
|
|
define MAROC_COPY_PKG_TO_SYSDRV_OUTPUT
|
|
@dir_out=$(shell echo $(1)); \
|
|
cpflag=$(shell echo $(3)); \
|
|
if [ -n "$$dir_out" ] ;then \
|
|
echo -e "\n\n$(C_GREEN) [INSTALL] $(2) \n TO \t $$dir_out $(C_NORMAL)\n\n" ;\
|
|
mkdir -p "$$dir_out"; \
|
|
for item in $(2);do \
|
|
if [ -d "$$item" -a -z "$$cpflag" ]; then cp -raf $$item/* $$dir_out; \
|
|
elif [ -d "$$item" -a "$$cpflag" = "SELF" ]; then cp -arf $$item $$dir_out; \
|
|
elif [ -f "$$item" ]; then cp -af $$item $$dir_out; \
|
|
fi; \
|
|
done; \
|
|
fi
|
|
endef
|
|
|
|
#
|
|
# $(1) destination folder
|
|
# $(2) source dirctory or files
|
|
#
|
|
# move $(2) to $(1)
|
|
#
|
|
define MAROC_MOVE_PKG_TO_SYSDRV_OUTPUT
|
|
@dir_out=$(shell echo $(1)); \
|
|
if [ -n "$$dir_out" ] ;then \
|
|
echo -e "\n\n$(C_GREEN) [MOVE] $(2) \n TO \t $$dir_out $(C_NORMAL)\n\n" ;\
|
|
mkdir -p "$$dir_out"; \
|
|
for item in $(2);do \
|
|
if [ -d "$$item" ]; then rm -rf $$dir_out/$(shell basename $$item) && mv $$item $$dir_out; \
|
|
elif [ -f "$$item" ]; then mv -f $$item $$dir_out; \
|
|
fi; \
|
|
done; \
|
|
fi
|
|
endef
|
|
|
|
#
|
|
# $(1) destination folder
|
|
#
|
|
# file exclusions:
|
|
# - libpthread.so: a non-stripped libpthread shared library is needed for
|
|
# proper debugging of pthread programs using gdb.
|
|
# - ld.so: a non-stripped dynamic linker library is needed for valgrind
|
|
# - kernel modules (*.ko): do not function properly when stripped like normal
|
|
# applications and libraries. Normally kernel modules are already excluded
|
|
# by the executable permission check above, so the explicit exclusion is only
|
|
# done for kernel modules with incorrect permissions.
|
|
define MAROC_STRIP_DEBUG_SYMBOL
|
|
target_dir=$(shell if [ -d $(1) ]; then echo "$(1)" | sed 's/[[:space:]]//g'; else echo "";fi); \
|
|
test -n "$$target_dir" && \
|
|
find "$$target_dir" -type f \( -perm /111 -o -name '*.so*' \) \
|
|
-not \( -name 'libpthread*.so*' -o -name 'ld-*.so*' -o -name '*.ko' \) -print0 | \
|
|
xargs -0 $(SYSDRV_CROSS)-strip 2>/dev/null || true
|
|
endef
|
|
|
|
#
|
|
########## {{{
|
|
# DO NOT RUN THIS TARGET
|
|
# $(1) PKG $(CURRENT_DIR)
|
|
# $(2) PKG $(PKG_NAME)
|
|
# $(3) PKG $(PKG_BIN)
|
|
#
|
|
define MAROC_PKG_RELEASE
|
|
@(pkg_path=$(strip $(1)/$(strip $(3))); \
|
|
pkg_src=$(strip $(1)/$(strip $(2))); \
|
|
pkg_dst=$(strip $(1)/release_$(strip $(2))_$(CHIP)_$(ARCH)); \
|
|
test ! -d $$pkg_path || test ! -d $$pkg_src/.git || (\
|
|
rm -rf $$pkg_dst; \
|
|
mkdir -p $$pkg_dst; \
|
|
cp -rfa $$pkg_path/* $$pkg_dst/; \
|
|
git --git-dir=$$pkg_src/.git log -1 > $$pkg_dst/release_version.txt; \
|
|
););
|
|
endef
|
|
######### }}}
|
|
|
|
#
|
|
########## {{{
|
|
# DO NOT RUN THIS TARGET
|
|
# $(1) PKG $(CURRENT_DIR)
|
|
# $(2) PKG $(PKG_NAME)
|
|
#
|
|
define MAROC_PKG_RELEASE_ASM
|
|
@(pkg_src=$(strip $(1)/$(strip $(2))); \
|
|
pkg_dir=$(strip $(2)); \
|
|
pkg_dst=$(strip $(1)/release_$(strip $(2))_$(CHIP)_$(ARCH)_asm); \
|
|
test ! -d $$pkg_src || test ! -d $$pkg_src/.git || (\
|
|
rm -rf $$pkg_dst; \
|
|
mkdir -p $$pkg_dst; \
|
|
echo "obj-y += $$pkg_dir.o" > $$pkg_dst/Makefile ; \
|
|
for item in `cd $$pkg_dir && find "./" -name "*\.s" -type f`; do \
|
|
mkdir -p $$pkg_dst/`dirname $$item` ; \
|
|
echo "$$pkg_dir-objs += $${item/%\.s/\.o}" >> $$pkg_dst/Makefile ; \
|
|
cp -f $$pkg_dir/$$item "$$pkg_dst/$${item/%\.s/\.S}"; \
|
|
done ;\
|
|
git --git-dir=$$pkg_src/.git log -1 > $$pkg_dst/release_version.txt; \
|
|
););
|
|
endef
|
|
######### }}}
|
|
|
|
#
|
|
########## {{{
|
|
# DO NOT RUN THIS TARGET
|
|
# $(1) PKG $(CURRENT_DIR)
|
|
# $(2) PKG $(PKG_NAME)
|
|
# $(3) PKG OBJECTS DIR
|
|
#
|
|
define MAROC_PKG_RELEASE_ASM_NEW
|
|
@(pkg_src=$(strip $(1)/$(strip $(2))); \
|
|
pkg_name=$(strip $(2)); \
|
|
pkg_dir=$(strip $(3)); \
|
|
pkg_dst=$(strip $(1)/release_$(strip $(2))_$(CHIP)_$(ARCH)_asm); \
|
|
test ! -d $$pkg_src || test ! -d $$pkg_src/.git || (\
|
|
rm -rf $$pkg_dst; \
|
|
mkdir -p $$pkg_dst; \
|
|
echo "obj-y += $$pkg_name.o" > $$pkg_dst/Makefile ; \
|
|
for item in `cd $$pkg_dir && find "./" -name "*\.s" -type f`; do \
|
|
mkdir -p $$pkg_dst/`dirname $$item` ; \
|
|
echo "$$pkg_name-objs += $${item/%\.s/\.o}" >> $$pkg_dst/Makefile ; \
|
|
cp -f $$pkg_dir/$$item "$$pkg_dst/$${item/%\.s/\.S}"; \
|
|
done ;\
|
|
git --git-dir=$$pkg_src/.git log -1 > $$pkg_dst/release_version.txt; \
|
|
););
|
|
endef
|
|
######### }}}
|
|
|
|
#
|
|
########## {{{
|
|
# $(1) PKG $(CURRENT_DIR)
|
|
# $(2) PKG $(PKG_NAME)
|
|
# $(3) PKG $(PKG_BIN)
|
|
#
|
|
define MAROC_PKG_CHECK_PREBUILT
|
|
@(pkg_path=$(strip $(1)/$(strip $(3))); \
|
|
pkg_src=$(strip $(1)/$(strip $(2))); \
|
|
pkg_dst=$(strip $(1)/release_$(strip $(2))_$(CHIP)_$(ARCH)); \
|
|
test -d $$pkg_src && echo "Found $$pkg_src source to build" || \
|
|
test ! -d $$pkg_dst || (\
|
|
echo "Start to release $$pkg_dst"; \
|
|
mkdir -p $$pkg_path; \
|
|
cp -rfa $$pkg_dst/* $$pkg_path/; \
|
|
););
|
|
endef
|
|
######### }}}
|
|
|
|
#
|
|
########## {{{
|
|
# $(1) source driver path
|
|
# $(2) dest dir name (which under $(KERNEL_DIR)/drivers)
|
|
#
|
|
define MACRO_CHK_DRIVER_MODULE
|
|
@(pkg_src=$(strip $(1)); \
|
|
pkg_dst=$(strip $(2)); \
|
|
pkg_release=$(strip release_$${pkg_dst}_$(CHIP)_$(ARCH)_asm); \
|
|
if [ -d "$$pkg_src/$$pkg_dst" ];then echo "TEST: $$pkg_src/$$pkg_dst" && \
|
|
(rm -f $$KERNEL_DIR/drivers/$$pkg_dst && \
|
|
ln -sf $$pkg_src/$$pkg_dst $$KERNEL_DIR/drivers/$$pkg_dst ); \
|
|
else echo "TEST: $$pkg_src/$$pkg_release" && \
|
|
(rm -f $$KERNEL_DIR/drivers/$$pkg_dst && \
|
|
ln -sf $$pkg_src/$$pkg_release $$KERNEL_DIR/drivers/$$pkg_dst ); \
|
|
fi; \
|
|
grep -w "$$pkg_dst" $$KERNEL_DIR/drivers/Makefile || \
|
|
(echo "obj-\$$(CONFIG_ROCKCHIP_THUNDER_BOOT) += $$pkg_dst/" >> $$KERNEL_DIR/drivers/Makefile ); \
|
|
);
|
|
endef
|
|
######### }}}
|
|
|
|
########## {{{
|
|
# $(1) dest dir name (which under $(KERNEL_DIR)/drivers)
|
|
#
|
|
define MACRO_CLEAN_DRIVER_MODULE
|
|
@(pkg_dst=$(strip $(1)); \
|
|
pkg_cmds="sed -i '/\<obj-\$$(CONFIG_ROCKCHIP_THUNDER_BOOT) += $(strip $(1))\//d' $$KERNEL_DIR/drivers/Makefile"; \
|
|
grep -w "$$pkg_dst" $$KERNEL_DIR/drivers/Makefile && \
|
|
eval "$$pkg_cmds";\
|
|
);
|
|
endef
|
|
######### }}}
|
|
|
|
########## {{{
|
|
# $(1) PACKAGE enable variable
|
|
#
|
|
define MACRO_CHECK_ENABLE_PKG
|
|
$(if $(findstring $($(strip $(1))),y n), \
|
|
ENABLE_$(strip $(patsubst RK_ENABLE_%,%,$(1)))=$($(strip $(1))), \
|
|
ENABLE_$(strip $(patsubst RK_ENABLE_%,%,$(1)))=$(CONFIG_SYSDRV_ENABLE_$(patsubst RK_ENABLE_%,%,$(1))))
|
|
endef
|
|
######### }}}
|
|
export ARCH
|
|
export SYSDRV_CROSS
|
|
export SYSDRV_CROSS_CFLAGS
|
|
export SYSDRV_ARCH_TYPE=$(ARCH)
|
|
export CROSS_COMPILE=$(SYSDRV_CROSS)-
|
|
export KERNEL_DIR
|
|
|
|
export SYSDRV_OPTS
|
|
|
|
include $(CURRENT_DIR)/cfg/package.mk
|
|
|
|
# Enable build i2c-tools
|
|
CONFIG_SYSDRV_ENABLE_I2C_TOOLS=n
|
|
$(eval $(call MACRO_CHECK_ENABLE_PKG, RK_ENABLE_I2C_TOOLS))
|
|
|
|
# Enable build sysstat
|
|
CONFIG_SYSDRV_ENABLE_SYSSTAT=n
|
|
$(eval $(call MACRO_CHECK_ENABLE_PKG, RK_ENABLE_SYSSTAT))
|
|
|
|
# Enable build fio
|
|
CONFIG_SYSDRV_ENABLE_FIO=n
|
|
$(eval $(call MACRO_CHECK_ENABLE_PKG, RK_ENABLE_FIO))
|
|
|
|
# Enable build EXFATPROGS
|
|
CONFIG_SYSDRV_ENABLE_EXFATPROGS=n
|
|
$(eval $(call MACRO_CHECK_ENABLE_PKG, RK_ENABLE_EXFATPROGS))
|
|
|
|
# Enable build nftables
|
|
CONFIG_SYSDRV_ENABLE_NFTABLES=n
|
|
$(eval $(call MACRO_CHECK_ENABLE_PKG, RK_ENABLE_NFTABLES)) |