diff options
author | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2024-10-08 15:24:36 -0400 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2024-10-08 15:24:36 -0400 |
commit | f3216be1efae259f0551c744f03f7195640573e5 (patch) | |
tree | 5d97f6604a3f16ad1d5439126665f0ff12bed59c /wiki/Config-brainstorming.mediawiki | |
parent | 96836ca0c23f0f5eb766cfe0a39a72a3bc216f2a (diff) | |
download | backports-master.tar.gz |
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Diffstat (limited to 'wiki/Config-brainstorming.mediawiki')
-rw-r--r-- | wiki/Config-brainstorming.mediawiki | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/wiki/Config-brainstorming.mediawiki b/wiki/Config-brainstorming.mediawiki deleted file mode 100644 index 6709ec8..0000000 --- a/wiki/Config-brainstorming.mediawiki +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Config-brainstorming ---- - -Brainstorming for enable Kconfig on compat-drivers - -<h1>Step 1</h1> - -Using the existing kernel's config, generate a Kconfig file that contains all the right symbols for that kernel: - -<code> -<pre> -cat .config | genkconf.sh > kernel-kconfig -</pre> -</code> - -where the script is this: - -<code> -<pre> -#!/bin/bash - -while read line ; do - case "${line:0:7}" in - "CONFIG_") - line="${line:7}" - cfg="${line%%=*}" - val="${line#*=}" - cfgtype="skip" - if [ "$val" = "m" ] ; then - cfgtype="tristate" - elif [ "$val" = "y" ] ; then - cfgtype="bool" - fi - if [ "$cfgtype" != "skip" ] ; then - echo "config $cfg" - echo " $cfgtype" - echo " default $val" - echo "" - fi - ;; - "# CONFI") - cfg="${line:9}" - cfg="${cfg%% is not set}" - echo "config $cfg" - echo " bool" - echo " default n" - echo "" - ;; - esac -done -</pre> -</code> - -<h1>Step 2</h1> - -Collect all Kconfig symbols from compat: -<code> -<pre> -find . -name Kconfig | xargs cat | sed 's/^config //;t;d' > symbols -</pre> -</code> - -<h1>Step 3</h1> - -Instead of patching Makefiles, replaces all CONFIG_ by CONFIG_COMPAT_ in all Makefiles: - -<code><pre> -find . -name Makefile | xargs rpl "CONFIG_" "CONFIG_COMPAT_" -</pre></code> - -This means that only things that are actually selected in compat will be built. - -<h1>Step 4</h1> - -Replace all "FOO" with "COMPAT_FOO" symbols in Kconfig and code files: - -<code><pre> -for sym in $(cat symbols) ; do - find . -name Kconfig |\ - xargs rpl -w "$sym" "COMPAT_$sym" - - find . -name '*.c' -o -name '*.h' |\ - xargs rpl -w "CONFIG_$sym" "CONFIG_COMPAT_$sym" -done -</pre></code> - -<h1>Step 5</h1> - -Build a Kconfig file: - -<code><pre> -echo 'source "kernel-kconfig"' > Kconfig -for k in drivers/net/wireless/*/Kconfig ; do echo "source \"$k\"" >> Kconfig ; done -</pre></code> - -etc. Currently, mac80211/cfg80211/... Kconfig isn't copied. They will need to be copied and potentially modified for dependencies like WEXT. - -<h1>Step 6</h1> -Run menuconfig: - -<code><pre> -/lib/modules/$(uname -r)/build/scripts/kconfig/mconf Kconfig -</pre></code> - -<h1>Step 7</h1> - -Build the thing. - -The generated .config can be parsed with either the existing compat-drivers/scripts/gen-compat-autoconf.sh script or scripts/kconfig/confdata.c (conf --silentoldconfig). The generated include/linux/compat_autoconf.h is already included as part of the build of compat-drivers.
\ No newline at end of file |