⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smart-config.txt

📁 嵌入式系统设计与实例开发源码
💻 TXT
字号:
Smart CONFIG_* Dependencies1 August 1999Michael Chastain   <mec@shout.net>Werner Almesberger <almesber@lrc.di.epfl.ch>Martin von Loewis  <martin@mira.isdn.cs.tu-berlin.de>Here is the problem:    Suppose that drivers/net/foo.c has the following lines:	#include <linux/config.h>	...	#ifdef CONFIG_FOO_AUTOFROB	    /* Code for auto-frobbing */	#else	    /* Manual frobbing only */	#endif	...	#ifdef CONFIG_FOO_MODEL_TWO	    /* Code for model two */	#endif    Now suppose the user (the person building kernels) reconfigures the    kernel to change some unrelated setting.  This will regenerate the    file include/linux/autoconf.h, which will cause include/linux/config.h    to be out of date, which will cause drivers/net/foo.c to be recompiled.    Most kernel sources, perhaps 80% of them, have at least one CONFIG_*    dependency somewhere.  So changing _any_ CONFIG_* setting requires    almost _all_ of the kernel to be recompiled.Here is the solution:    We've made the dependency generator, mkdep.c, smarter.  Instead of    generating this dependency:	drivers/net/foo.c: include/linux/config.h    It now generates these dependencies:	drivers/net/foo.c: \	    include/config/foo/autofrob.h \	    include/config/foo/model/two.h    So drivers/net/foo.c depends only on the CONFIG_* lines that    it actually uses.    A new program, split-include.c, runs at the beginning of    compilation (make bzImage or make zImage).  split-include reads    include/linux/autoconf.h and updates the include/config/ tree,    writing one file per option.  It updates only the files for options    that have changed.    mkdep.c no longer generates warning messages for missing or unneeded    <linux/config.h> lines.  The new top-level target 'make checkconfig'    checks for these problems.Flag Dependencies    Martin Von Loewis contributed another feature to this patch:    'flag dependencies'.  The idea is that a .o file depends on    the compilation flags used to build it.  The file foo.o has    its flags stored in .flags.foo.o.    Suppose the user changes the foo driver from resident to modular.    'make' will notice that the current foo.o was not compiled with    -DMODULE and will recompile foo.c.    All .o files made from C source have flag dependencies.  So do .o    files made with ld, and .a files made with ar.  However, .o files    made from assembly source do not have flag dependencies (nobody    needs this yet, but it would be good to fix).Per-source-file Flags    Flag dependencies also work with per-source-file flags.    You can specify compilation flags for individual source files    like this:	CFLAGS_foo.o = -DSPECIAL_FOO_DEFINE    This helps clean up drivers/net/Makefile, drivers/scsi/Makefile,    and several other Makefiles.Credit    Werner Almesberger had the original idea and wrote the first    version of this patch.        Michael Chastain picked it up and continued development.  He is    now the principal author and maintainer.  Please report any bugs    to him.    Martin von Loewis wrote flag dependencies, with some modifications    by Michael Chastain.    Thanks to all of the beta testers.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -