aboutsummaryrefslogtreecommitdiff
path: root/kconfig/Makefile
blob: 2e8e5dcd7ef81479f866ad774e6166973414d2e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# ===========================================================================
# 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)
	yes '' | $< -o $(KCONFIG_TOP) > /dev/null

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

KCONFIG_ALLCONFIG ?= /dev/null
defconfig: $(obj)/conf $(KCONFIG_TOP)
	$< -D $(KCONFIG_ALLCONFIG) $(KCONFIG_TOP) > /dev/null

macos_defconfig: $(obj)/conf $(KCONFIG_TOP)
	KCONFIG_ALLCONFIG=$(obj)/macos_miniconfig $< -n $(KCONFIG_TOP) > /dev/null

bsd_defconfig: $(obj)/conf $(KCONFIG_TOP)
	KCONFIG_ALLCONFIG=$(obj)/freebsd_miniconfig $< -n $(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)'
	@echo  '  macos_defconfig - Select commands known to build on macosx'
	@echo  '  bsd_defconfig   - Select commands known to build on freebsd'

# 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