diff --git a/mk/deps.mk b/mk/deps.mk index 30120bd..761de5a 100644 --- a/mk/deps.mk +++ b/mk/deps.mk @@ -7,7 +7,14 @@ ifeq ($(FORCE_LKL_BUILD),1) -$(LKL_LIB): +# Always re-invoke the build script so the sub-make inside it can detect +# source changes and perform an incremental rebuild of liblkl.a. +# The FORCE sentinel (a phony with no recipe) makes Make treat $(LKL_LIB) +# as always out of date, while the sub-make handles the actual incrementality. +.PHONY: _lkl_force +_lkl_force: + +$(LKL_LIB): _lkl_force @echo " BUILD lkl (from source)" $(Q)./scripts/build-lkl.sh $(ARCH) diff --git a/scripts/build-lkl.sh b/scripts/build-lkl.sh index 851b302..1b76000 100755 --- a/scripts/build-lkl.sh +++ b/scripts/build-lkl.sh @@ -84,39 +84,41 @@ fi # ---- Configure ----------------------------------------------------------- -echo " CONFIG ARCH=lkl defconfig" -make -C "${LKL_SRC}" ARCH=lkl defconfig - -# Enable features required by kbox (mirrors build-lkl.yml). -for opt in \ - CONFIG_DEVTMPFS \ - CONFIG_DEVTMPFS_MOUNT \ - CONFIG_DEVPTS_FS \ - CONFIG_DEBUG_INFO \ - CONFIG_GDB_SCRIPTS \ - CONFIG_SCHED_DEBUG \ - CONFIG_PROC_SYSCTL \ - CONFIG_PRINTK \ - CONFIG_TRACEPOINTS \ - CONFIG_FTRACE \ - CONFIG_DEBUG_FS; do - "${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --enable "${opt}" -done - -"${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" \ - --set-val CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT y - -for opt in \ - CONFIG_MODULES \ - CONFIG_SOUND \ - CONFIG_USB_SUPPORT \ - CONFIG_INPUT \ - CONFIG_NFS_FS \ - CONFIG_CIFS; do - "${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --disable "${opt}" -done - -make -C "${LKL_SRC}" ARCH=lkl olddefconfig +if [ ! -f "${LKL_SRC}/.config" ]; then + echo " CONFIG ARCH=lkl defconfig" + make -C "${LKL_SRC}" ARCH=lkl defconfig + + # Enable features required by kbox (mirrors build-lkl.yml). + for opt in \ + CONFIG_DEVTMPFS \ + CONFIG_DEVTMPFS_MOUNT \ + CONFIG_DEVPTS_FS \ + CONFIG_DEBUG_INFO \ + CONFIG_GDB_SCRIPTS \ + CONFIG_SCHED_DEBUG \ + CONFIG_PROC_SYSCTL \ + CONFIG_PRINTK \ + CONFIG_TRACEPOINTS \ + CONFIG_FTRACE \ + CONFIG_DEBUG_FS; do + "${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --enable "${opt}" + done + + "${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" \ + --set-val CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT y + + for opt in \ + CONFIG_MODULES \ + CONFIG_SOUND \ + CONFIG_USB_SUPPORT \ + CONFIG_INPUT \ + CONFIG_NFS_FS \ + CONFIG_CIFS; do + "${LKL_SRC}/scripts/config" --file "${LKL_SRC}/.config" --disable "${opt}" + done + + make -C "${LKL_SRC}" ARCH=lkl olddefconfig +fi # ---- Build ---------------------------------------------------------------