# ===========================================================================
# Kernel configuration targets
# These targets are used from top-level makefile
KCONFIG_TOP = Config.in
KCONFIG_PROJECT = ToyBox
obj = ./kconfig
PHONY += clean help oldconfig menuconfig config silentoldconfig \
randconfig allyesconfig allnoconfig allmodconfig defconfig
menuconfig: $(obj)/mconf $(KCONFIG_TOP)
$< $(KCONFIG_TOP)
config: $(obj)/conf $(KCONFIG_TOP)
$< $(KCONFIG_TOP)
oldconfig: $(obj)/conf $(KCONFIG_TOP)
$< -o $(KCONFIG_TOP)
silentoldconfig: $(obj)/conf $(KCONFIG_TOP)
$< -s $(KCONFIG_TOP)
randconfig: $(obj)/conf $(KCONFIG_TOP)
$< -r $(KCONFIG_TOP) > /dev/null
allyesconfig: $(obj)/conf $(KCONFIG_TOP)
$< -y $(KCONFIG_TOP) > /dev/null
allnoconfig: $(obj)/conf $(KCONFIG_TOP)
$< -n $(KCONFIG_TOP) > /dev/null
defconfig: $(obj)/conf $(KCONFIG_TOP)
$< -D /dev/null $(KCONFIG_TOP) > /dev/null
# Help text used by make help
help::
@echo ' config - Update current config utilising a line-oriented program'
@echo ' menuconfig - Update current config utilising a menu based program'
@echo ' oldconfig - Update current config utilising a provided .config as base'
@echo ' silentoldconfig - Same as oldconfig, but quietly'
@echo ' randconfig - New config with random answer to all options'
@echo ' defconfig - New config with default answer to all options'
@echo ' This is the maximum sane configuration.'
@echo ' allyesconfig - New config where all options are accepted with yes'
@echo " This may not actually compile, it's a starting point"
@echo ' for further configuration (probably with menuconfig)'
@echo ' allnoconfig - New config where all options are answered with no'
@echo ' (NOP binary, starting point for further configuration)'
# Cheesy build
SHIPPED = kconfig/zconf.tab.c kconfig/lex.zconf.c kconfig/zconf.hash.c
%.c: %.c_shipped
@ln -s $(notdir $<) $@
gen_config.h: .config
kconfig/mconf: $(SHIPPED)
$(HOSTCC) -o $@ kconfig/mconf.c kconfig/zconf.tab.c \
kconfig/lxdialog/*.c -lcurses -DCURSES_LOC="<ncurses.h>" \
-DKBUILD_NO_NLS=1 -DPROJECT_NAME=\"$(KCONFIG_PROJECT)\"
kconfig/conf: $(SHIPPED)
$(HOSTCC) -o $@ kconfig/conf.c kconfig/zconf.tab.c -DKBUILD_NO_NLS=1 \
-DPROJECT_NAME=\"$(KCONFIG_PROJECT)\"
clean::
rm -f $(wildcard kconfig/*zconf*.c) kconfig/conf kconfig/mconf