diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-02-02 21:51:27 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-02-02 21:58:00 -0500 |
commit | 615f0833aa4c4aa944ceb78895bbffa8bd1884df (patch) | |
tree | 3704d95e3049290c2efaff829d7ac2c77c97a681 | |
parent | 88f66ea98d7ae6a8b6a34e38b1b4fa51abc1c9ca (diff) |
kconfig: Add LSMOD=file to override the lsmod for localmodconfig
Doing the following:
make LSMOD=file localmodconfig
Will make the streamline-config code use the given file instead of
lsmod. If the file is an executable, it will execute it, otherwise
it will read it as text.
make LSMOD=/my/local/path/lsmod localmodconfig
The above will execute the lsmod in /my/local/path instead of the
lsmods that may be located elsewhere.
make LSMOD=embedded_board_lsmod localmodconfig
The above will read the "embedded_board_lsmod" as a text file. This
is useful if you are doing a cross compile and need to run the
config against modules that exist on an embedded device.
Note, if the LSMOD= file does is not a path, it will add the
path to the object directory. That is, the above example will look
for "embedded_board_lsmod" in the directory that the binary will
be built in (the O=dir directory).
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
On branch config/linus
-rw-r--r-- | scripts/kconfig/Makefile | 13 | ||||
-rw-r--r-- | scripts/kconfig/streamline_config.pl | 38 |
2 files changed, 38 insertions, 13 deletions
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 006c96f5fcb5..85b906547845 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile | |||
@@ -30,9 +30,18 @@ silentoldconfig: $(obj)/conf | |||
30 | $(Q)mkdir -p include/generated | 30 | $(Q)mkdir -p include/generated |
31 | $< -s $(Kconfig) | 31 | $< -s $(Kconfig) |
32 | 32 | ||
33 | # if no path is given, then use src directory to find file | ||
34 | ifdef LSMOD | ||
35 | LSMOD_F = $(shell if [ `basename $(LSMOD)` == $(LSMOD) ]; then \ | ||
36 | echo $(objtree)/$(LSMOD); \ | ||
37 | else \ | ||
38 | echo $(LSMOD); \ | ||
39 | fi) | ||
40 | endif | ||
41 | |||
33 | localmodconfig: $(obj)/streamline_config.pl $(obj)/conf | 42 | localmodconfig: $(obj)/streamline_config.pl $(obj)/conf |
34 | $(Q)mkdir -p include/generated | 43 | $(Q)mkdir -p include/generated |
35 | $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config | 44 | $(Q)perl $< $(srctree) $(Kconfig) $(LSMOD_F) > .tmp.config |
36 | $(Q)if [ -f .config ]; then \ | 45 | $(Q)if [ -f .config ]; then \ |
37 | cmp -s .tmp.config .config || \ | 46 | cmp -s .tmp.config .config || \ |
38 | (mv -f .config .config.old.1; \ | 47 | (mv -f .config .config.old.1; \ |
@@ -47,7 +56,7 @@ localmodconfig: $(obj)/streamline_config.pl $(obj)/conf | |||
47 | 56 | ||
48 | localyesconfig: $(obj)/streamline_config.pl $(obj)/conf | 57 | localyesconfig: $(obj)/streamline_config.pl $(obj)/conf |
49 | $(Q)mkdir -p include/generated | 58 | $(Q)mkdir -p include/generated |
50 | $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config | 59 | $(Q)perl $< $(srctree) $(Kconfig) $(LSMOD_F) > .tmp.config |
51 | $(Q)sed -i s/=m/=y/ .tmp.config | 60 | $(Q)sed -i s/=m/=y/ .tmp.config |
52 | $(Q)if [ -f .config ]; then \ | 61 | $(Q)if [ -f .config ]; then \ |
53 | cmp -s .tmp.config .config || \ | 62 | cmp -s .tmp.config .config || \ |
diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl index d7f7db73e587..afbd54ac1d83 100644 --- a/scripts/kconfig/streamline_config.pl +++ b/scripts/kconfig/streamline_config.pl | |||
@@ -113,6 +113,7 @@ find_config; | |||
113 | # Get the build source and top level Kconfig file (passed in) | 113 | # Get the build source and top level Kconfig file (passed in) |
114 | my $ksource = $ARGV[0]; | 114 | my $ksource = $ARGV[0]; |
115 | my $kconfig = $ARGV[1]; | 115 | my $kconfig = $ARGV[1]; |
116 | my $lsmod_file = $ARGV[2]; | ||
116 | 117 | ||
117 | my @makefiles = `find $ksource -name Makefile`; | 118 | my @makefiles = `find $ksource -name Makefile`; |
118 | my %depends; | 119 | my %depends; |
@@ -263,21 +264,36 @@ foreach my $makefile (@makefiles) { | |||
263 | 264 | ||
264 | my %modules; | 265 | my %modules; |
265 | 266 | ||
266 | # see what modules are loaded on this system | 267 | if (defined($lsmod_file)) { |
267 | my $lsmod; | 268 | if ( ! -f $lsmod_file) { |
268 | 269 | die "$lsmod_file not found"; | |
269 | foreach $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) { | 270 | } |
270 | if ( -x "$dir/lsmod" ) { | 271 | if ( -x $lsmod_file) { |
271 | $lsmod = "$dir/lsmod"; | 272 | # the file is executable, run it |
272 | last; | 273 | open(LIN, "$lsmod_file|"); |
274 | } else { | ||
275 | # Just read the contents | ||
276 | open(LIN, "$lsmod_file"); | ||
273 | } | 277 | } |
278 | } else { | ||
279 | |||
280 | # see what modules are loaded on this system | ||
281 | my $lsmod; | ||
282 | |||
283 | foreach $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) { | ||
284 | if ( -x "$dir/lsmod" ) { | ||
285 | $lsmod = "$dir/lsmod"; | ||
286 | last; | ||
287 | } | ||
274 | } | 288 | } |
275 | if (!defined($lsmod)) { | 289 | if (!defined($lsmod)) { |
276 | # try just the path | 290 | # try just the path |
277 | $lsmod = "lsmod"; | 291 | $lsmod = "lsmod"; |
292 | } | ||
293 | |||
294 | open(LIN,"$lsmod|") || die "Can not call lsmod with $lsmod"; | ||
278 | } | 295 | } |
279 | 296 | ||
280 | open(LIN,"$lsmod|") || die "Can not call lsmod with $lsmod"; | ||
281 | while (<LIN>) { | 297 | while (<LIN>) { |
282 | next if (/^Module/); # Skip the first line. | 298 | next if (/^Module/); # Skip the first line. |
283 | if (/^(\S+)/) { | 299 | if (/^(\S+)/) { |