Smart CONFIG_* Dependencies 1 August 1999 Michael 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.Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.