1.1 --- a/config/kernel.in Tue Sep 16 14:32:07 2008 +0000
1.2 +++ b/config/kernel.in Tue Sep 16 17:39:40 2008 +0000
1.3 @@ -1,42 +1,19 @@
1.4 # Kernel options
1.5
1.6 +menu "Operating System"
1.7 +
1.8 config KERNEL
1.9 string
1.10 - default "none" if BARE_METAL
1.11 - default "linux" if KERNEL_LINUX
1.12
1.13 -menu "Target OS"
1.14 +config KERNEL_VERSION
1.15 + string
1.16
1.17 choice
1.18 bool
1.19 prompt "Target OS"
1.20 - default KERNEL_LINUX
1.21
1.22 -config KERNEL_LINUX
1.23 - bool
1.24 - prompt "Linux"
1.25 - help
1.26 - Build a toolchain targeting systems running Linux as a kernel.
1.27 -
1.28 -config BARE_METAL
1.29 - bool
1.30 - prompt "Bare metal (EXPERIMENTAL)"
1.31 - depends on EXPERIMENTAL
1.32 - help
1.33 - Say 'y' here if you want a simple C compiler with no C library.
1.34 -
1.35 - 'Bare metal' also refer to those programs that run without any kernel.
1.36 -
1.37 - You probably want to say 'y' here if you plan to use your compiler
1.38 - to build only kernels or bootloaders
1.39 +source config.gen/kernel.in
1.40
1.41 endchoice
1.42
1.43 -config KERNEL_VERSION
1.44 - string
1.45 -
1.46 -if KERNEL_LINUX
1.47 -source config/kernel/linux.in
1.48 -endif
1.49 -
1.50 endmenu
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/config/kernel/bare-metal.experimental.in Tue Sep 16 17:39:40 2008 +0000
2.3 @@ -0,0 +1,15 @@
2.4 +# Bare metal config options
2.5 +
2.6 +config KERNEL_bare_metal
2.7 + select BARE_METAL
2.8 + help
2.9 + Say 'y' here if you want a simple C compiler with no C library.
2.10 +
2.11 + 'Bare metal' also refer to those programs that run without any kernel.
2.12 +
2.13 + You probably want to say 'y' here if you plan to use your compiler
2.14 + to build only kernels or bootloaders.
2.15 +
2.16 +config BARE_METAL
2.17 + bool
2.18 + default n
3.1 --- a/config/kernel/linux.in Tue Sep 16 14:32:07 2008 +0000
3.2 +++ b/config/kernel/linux.in Tue Sep 16 17:39:40 2008 +0000
3.3 @@ -1,5 +1,9 @@
3.4 # Linux kernel options
3.5
3.6 +config KERNEL_linux
3.7 + help
3.8 + Build a toolchain targeting systems running Linux as a kernel.
3.9 +
3.10 choice
3.11 bool
3.12 prompt "Get kernel headers from:"
4.1 --- a/config/libc/glibc-eglibc-common.in Tue Sep 16 14:32:07 2008 +0000
4.2 +++ b/config/libc/glibc-eglibc-common.in Tue Sep 16 17:39:40 2008 +0000
4.3 @@ -70,7 +70,7 @@
4.4
4.5 Eg.: crypt (for very old libces)
4.6
4.7 -if KERNEL_LINUX
4.8 +if KERNEL_linux
4.9
4.10 choice
4.11 bool
4.12 @@ -166,4 +166,4 @@
4.13 default KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
4.14 default LIBC_GLIBC_MIN_KERNEL_VERSION if LIBC_GLIBC_USE_HEADERS_MIN_KERNEL
4.15
4.16 -endif # KERNEL_LINUX
4.17 +endif # KERNEL_linux
5.1 --- a/kconfig/kconfig.mk Tue Sep 16 14:32:07 2008 +0000
5.2 +++ b/kconfig/kconfig.mk Tue Sep 16 17:39:40 2008 +0000
5.3 @@ -19,24 +19,31 @@
5.4 endif
5.5
5.6 # Build a list of all config files
5.7 -ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%,%,$(wildcard $(CT_LIB_DIR)/arch/*))
5.8 -ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/*.in)
5.9 +ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/config.in)
5.10 +KERN_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
5.11 DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
5.12 TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
5.13
5.14 STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
5.15 GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \
5.16 + $(CT_TOP_DIR)/config.gen/kernel.in \
5.17 $(CT_TOP_DIR)/config.gen/debug.in \
5.18 $(CT_TOP_DIR)/config.gen/tools.in
5.19
5.20 CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
5.21
5.22 -$(GEN_CONFIG_FILES):: $(CT_TOP_DIR)/config.gen
5.23 +# Build list of items
5.24 +ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%/config.in,%,$(ARCH_CONFIG_FILES))
5.25 +KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERN_CONFIG_FILES))
5.26 +
5.27 +$(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen \
5.28 + $(CT_LIB_DIR)/kconfig/kconfig.mk
5.29
5.30 $(CT_TOP_DIR)/config.gen:
5.31 @mkdir -p $(CT_TOP_DIR)/config.gen
5.32
5.33 -$(CT_TOP_DIR)/config.gen/arch.in:: $(ARCH_CONFIG_FILES)
5.34 +$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
5.35 + @echo ' IN config.gen/arch.in'
5.36 @(echo "# Architectures menu"; \
5.37 echo "# Generated file, do not edit!!!"; \
5.38 echo ""; \
5.39 @@ -57,46 +64,77 @@
5.40 echo "endif"; \
5.41 echo ""; \
5.42 done; \
5.43 - ) >$@
5.44 + ) >$@
5.45
5.46 -$(CT_TOP_DIR)/config.gen/debug.in:: $(DEBUG_CONFIG_FILES)
5.47 - @echo "# Debug facilities menu" >$@
5.48 - @echo "# Generated file, do not edit!!!" >>$@
5.49 - @echo "menu \"Debug facilities\"" >>$@
5.50 - @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/debug/*.in)); do \
5.51 - echo "source $${f}"; \
5.52 - done >>$@
5.53 - @echo "endmenu" >>$@
5.54 +$(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
5.55 + @echo ' IN config.gen/kernel.in'
5.56 + @(echo "# Kernel menu"; \
5.57 + echo "# Generated file, do not edit!!!"; \
5.58 + echo ""; \
5.59 + for kern in $(KERNELS); do \
5.60 + _exp="$${kern/*./}"; \
5.61 + _kern1="$${kern/.experimental/}"; \
5.62 + _kern2=$$(echo "$${_kern1}" |sed -r -e 's/[ -\/]/_/g;'); \
5.63 + echo "config KERNEL_$${_kern2}"; \
5.64 + echo " bool"; \
5.65 + printf " prompt \"$${_kern1}"; \
5.66 + if [ "$${_exp}" != "$${kern}" ]; then \
5.67 + echo " (EXPERIMENTAL)\""; \
5.68 + echo " depends on EXPERIMENTAL"; \
5.69 + else \
5.70 + echo "\""; \
5.71 + fi; \
5.72 + echo "if KERNEL_$${_kern2}"; \
5.73 + echo "config KERNEL"; \
5.74 + echo " default \"$${_kern1}\" if KERNEL_$${_kern2}"; \
5.75 + echo "source config/kernel/$${kern}.in"; \
5.76 + echo "endif"; \
5.77 + echo ""; \
5.78 + done; \
5.79 + ) >$@
5.80
5.81 -$(CT_TOP_DIR)/config.gen/tools.in:: $(TOOLS_CONFIG_FILES)
5.82 - @echo "# Tools facilities menu" >$@
5.83 - @echo "# Generated file, do not edit!!!" >>$@
5.84 - @echo "menu \"Tools facilities\"" >>$@
5.85 - @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/tools/*.in)); do \
5.86 - echo "source $${f}"; \
5.87 - done >>$@
5.88 - @echo "endmenu" >>$@
5.89 +$(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
5.90 + @echo ' IN config.gen/debug.in'
5.91 + @(echo "# Debug facilities menu"; \
5.92 + echo "# Generated file, do not edit!!!"; \
5.93 + echo "menu \"Debug facilities\""; \
5.94 + for f in $(patsubst $(CT_TOP_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do \
5.95 + echo "source $${f}"; \
5.96 + done; \
5.97 + echo "endmenu"; \
5.98 + ) >$@
5.99
5.100 -config menuconfig oldconfig defoldconfig extractconfig:: $(KCONFIG_TOP)
5.101 +$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
5.102 + @echo ' IN config.gen/tools.in'
5.103 + @(echo "# Tools facilities menu"; \
5.104 + echo "# Generated file, do not edit!!!"; \
5.105 + echo "menu \"Tools facilities\""; \
5.106 + for f in $(patsubst $(CT_TOP_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do \
5.107 + echo "source $${f}"; \
5.108 + done; \
5.109 + echo "endmenu"; \
5.110 + ) >$@
5.111 +
5.112 +config menuconfig oldconfig defoldconfig extractconfig: $(KCONFIG_TOP)
5.113
5.114 $(KCONFIG_TOP):
5.115 @ln -sf $(CT_LIB_DIR)/config config
5.116
5.117 -menuconfig:: $(obj)/mconf $(CONFIG_FILES)
5.118 - @$< $(KCONFIG_TOP)
5.119 +menuconfig: $(CONFIG_FILES) $(obj)/mconf
5.120 + @$(obj)/mconf $(KCONFIG_TOP)
5.121
5.122 -config:: $(obj)/conf $(CONFIG_FILES)
5.123 - @$< $(KCONFIG_TOP)
5.124 +config: $(CONFIG_FILES) $(obj)/conf
5.125 + @$(obj)/conf $(KCONFIG_TOP)
5.126
5.127 -oldconfig:: $(obj)/conf $(CONFIG_FILES)
5.128 - @$< -s $(KCONFIG_TOP)
5.129 +oldconfig: $(CONFIG_FILES) $(obj)/conf
5.130 + @$(obj)/conf -s $(KCONFIG_TOP)
5.131
5.132 -defoldconfig:: $(obj)/conf $(CONFIG_FILES)
5.133 - @yes "" |$< -s $(KCONFIG_TOP) >/dev/null
5.134 +defoldconfig: $(CONFIG_FILES) $(obj)/conf
5.135 + @yes "" |$(obj)/conf -s $(KCONFIG_TOP)
5.136
5.137 -extractconfig:: $(obj)/conf $(CONFIG_FILES)
5.138 +extractconfig: $(CONFIG_FILES) $(obj)/conf
5.139 @$(CT_LIB_DIR)/tools/extract-config.sh >.config
5.140 - @$< -s $(KCONFIG_TOP)
5.141 + @$(obj)/conf -s $(KCONFIG_TOP)
5.142
5.143 # Help text used by make help
5.144 help-config::
5.145 @@ -111,9 +149,10 @@
5.146 SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
5.147
5.148 %.c: %.c_shipped
5.149 + @echo ' LN kconfig/$(notdir $@)'
5.150 @ln -s $(notdir $<) $@
5.151
5.152 -$(obj)/conf $(obj)/mconf:: $(obj)
5.153 +$(obj)/conf $(obj)/mconf: $(obj)
5.154
5.155 $(obj):
5.156 @mkdir -p $(obj)
5.157 @@ -128,12 +167,18 @@
5.158 $(CT_LIB_DIR)/kconfig/symbol.c \
5.159 $(CT_LIB_DIR)/kconfig/util.c
5.160
5.161 -$(obj)/mconf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c $(HEADERS) $(FILES)
5.162 +$(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c \
5.163 + $(HEADERS) $(FILES) \
5.164 + $(CT_LIB_DIR)/kconfig/kconfig.mk
5.165 + @echo ' LNK kconfig/mconf'
5.166 @$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
5.167 $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags) \
5.168 $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
5.169
5.170 -$(obj)/conf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c $(HEADERS) $(FILES)
5.171 +$(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c \
5.172 + $(HEADERS) $(FILES) \
5.173 + $(CT_LIB_DIR)/kconfig/kconfig.mk
5.174 + @echo ' LNK kconfig/conf'
5.175 @$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
5.176
5.177 clean::
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/scripts/build/kernel/bare-metal.sh Tue Sep 16 17:39:40 2008 +0000
6.3 @@ -0,0 +1,19 @@
6.4 +# This file declares functions for bare metal kernel (IE. none)
6.5 +# Copyright 2008 Yann E. MORIN
6.6 +# Licensed under the GPL v2. See COPYING in the root of this package
6.7 +
6.8 +do_print_filename() {
6.9 + :
6.10 +}
6.11 +
6.12 +do_kernel_get() {
6.13 + :
6.14 +}
6.15 +
6.16 +do_kernel_extract() {
6.17 + :
6.18 +}
6.19 +
6.20 +do_kernel_headers() {
6.21 + :
6.22 +}
7.1 --- a/scripts/build/kernel/none.sh Tue Sep 16 14:32:07 2008 +0000
7.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
7.3 @@ -1,19 +0,0 @@
7.4 -# This file declares functions for bare metal kernel (IE. none)
7.5 -# Copyright 2008 Yann E. MORIN
7.6 -# Licensed under the GPL v2. See COPYING in the root of this package
7.7 -
7.8 -do_print_filename() {
7.9 - :
7.10 -}
7.11 -
7.12 -do_kernel_get() {
7.13 - :
7.14 -}
7.15 -
7.16 -do_kernel_extract() {
7.17 - :
7.18 -}
7.19 -
7.20 -do_kernel_headers() {
7.21 - :
7.22 -}