Skip to content

Commit 0ccc5cb

Browse files
authored
Merge pull request #57 from RinHizakura/main
Support incremental build for lkl
2 parents 65608e6 + 0000f4e commit 0ccc5cb

2 files changed

Lines changed: 43 additions & 34 deletions

File tree

mk/deps.mk

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@
77

88
ifeq ($(FORCE_LKL_BUILD),1)
99

10-
$(LKL_LIB):
10+
# Always re-invoke the build script so the sub-make inside it can detect
11+
# source changes and perform an incremental rebuild of liblkl.a.
12+
# The FORCE sentinel (a phony with no recipe) makes Make treat $(LKL_LIB)
13+
# as always out of date, while the sub-make handles the actual incrementality.
14+
.PHONY: _lkl_force
15+
_lkl_force:
16+
17+
$(LKL_LIB): _lkl_force
1118
@echo " BUILD lkl (from source)"
1219
$(Q)./scripts/build-lkl.sh $(ARCH)
1320

scripts/build-lkl.sh

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -84,39 +84,41 @@ fi
8484

8585
# ---- Configure -----------------------------------------------------------
8686

87-
echo " CONFIG ARCH=lkl defconfig"
88-
make -C "${LKL_SRC}" ARCH=lkl defconfig
89-
90-
# Enable features required by kbox (mirrors build-lkl.yml).
91-
for opt in \
92-
CONFIG_DEVTMPFS \
93-
CONFIG_DEVTMPFS_MOUNT \
94-
CONFIG_DEVPTS_FS \
95-
CONFIG_DEBUG_INFO \
96-
CONFIG_GDB_SCRIPTS \
97-
CONFIG_SCHED_DEBUG \
98-
CONFIG_PROC_SYSCTL \
99-
CONFIG_PRINTK \
100-
CONFIG_TRACEPOINTS \
101-
CONFIG_FTRACE \
102-
CONFIG_DEBUG_FS; do
103-
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --enable "${opt}"
104-
done
105-
106-
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" \
107-
--set-val CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT y
108-
109-
for opt in \
110-
CONFIG_MODULES \
111-
CONFIG_SOUND \
112-
CONFIG_USB_SUPPORT \
113-
CONFIG_INPUT \
114-
CONFIG_NFS_FS \
115-
CONFIG_CIFS; do
116-
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --disable "${opt}"
117-
done
118-
119-
make -C "${LKL_SRC}" ARCH=lkl olddefconfig
87+
if [ ! -f "${LKL_SRC}/.config" ]; then
88+
echo " CONFIG ARCH=lkl defconfig"
89+
make -C "${LKL_SRC}" ARCH=lkl defconfig
90+
91+
# Enable features required by kbox (mirrors build-lkl.yml).
92+
for opt in \
93+
CONFIG_DEVTMPFS \
94+
CONFIG_DEVTMPFS_MOUNT \
95+
CONFIG_DEVPTS_FS \
96+
CONFIG_DEBUG_INFO \
97+
CONFIG_GDB_SCRIPTS \
98+
CONFIG_SCHED_DEBUG \
99+
CONFIG_PROC_SYSCTL \
100+
CONFIG_PRINTK \
101+
CONFIG_TRACEPOINTS \
102+
CONFIG_FTRACE \
103+
CONFIG_DEBUG_FS; do
104+
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --enable "${opt}"
105+
done
106+
107+
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" \
108+
--set-val CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT y
109+
110+
for opt in \
111+
CONFIG_MODULES \
112+
CONFIG_SOUND \
113+
CONFIG_USB_SUPPORT \
114+
CONFIG_INPUT \
115+
CONFIG_NFS_FS \
116+
CONFIG_CIFS; do
117+
"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --disable "${opt}"
118+
done
119+
120+
make -C "${LKL_SRC}" ARCH=lkl olddefconfig
121+
fi
120122

121123
# ---- Build ---------------------------------------------------------------
122124

0 commit comments

Comments
 (0)