mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Cristina Moraru <cristina.moraru09@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: mcgrof@kernel.org, teg@jklm.no, kay@vrfy.org,
	rusty@rustcorp.com.au, akpm@linux-foundation.org,
	Cristina Moraru <cristina.moraru09@gmail.com>
Subject: [RFC PATCH 1/5] Add generation of Module.symb in streamline_config
Date: Wed, 17 Aug 2016 21:26:59 +0200	[thread overview]
Message-ID: <1471462023-119645-2-git-send-email-cristina.moraru09@gmail.com> (raw)
In-Reply-To: <1471462023-119645-1-git-send-email-cristina.moraru09@gmail.com>

Add generation of ./scripts/Module.ksymb file containing
associations of driver file names and corresponding CONFIG_*
symbol:

foo_KCONF=CONFIG_FOO

This file will be further loaded by the Makefile as a
configuration file: all foo_KCONF will be considered variables
and all CONFIG_FOO will be their associate values. The suffix
is added to be able to differentiate the new variables from
all existing variables in the Makefile system. Each kernel
module will receive its CONFIG_FOO option as macro in the
compilation command (-D parameter) and will expose it along
with other module attributes (attributes of struct module).

Note: this patch is built on the assumption that each driver
has exactly one associate CONFIG_FOO symbol. CONFIG_* options
that are required by CONFIG_FOO are not included. They can be
found by SAT resolvers.

This patch is part of a research project within
Google Summer of Code of porting 'make localmodconfig'
for backported drivers. The goal is to enable each
module to expose in /sys its corresponding CONFIG_* option.
The value of this attribute will be dynamically pegged by
modpost without requiring extra work from the driver developers.
Further, this information will be used by a hardware interogation
tool to extract build information about the existing devices.

Signed-off-by: Cristina Moraru <cristina.moraru09@gmail.com>
---
 scripts/kconfig/streamline_config.pl | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
index b8c7b29..686d02a 100755
--- a/scripts/kconfig/streamline_config.pl
+++ b/scripts/kconfig/streamline_config.pl
@@ -128,9 +128,11 @@ my @config_file = read_config;
 # Parse options
 my $localmodconfig = 0;
 my $localyesconfig = 0;
+my $genmoduleksymb = 0;
 
 GetOptions("localmodconfig" => \$localmodconfig,
-	   "localyesconfig" => \$localyesconfig);
+	   "localyesconfig" => \$localyesconfig,
+	   "genmoduleksymb" => \$genmoduleksymb);
 
 # Get the build source and top level Kconfig file (passed in)
 my $ksource = ($ARGV[0] ? $ARGV[0] : '.');
@@ -147,6 +149,7 @@ my %objects;
 my $var;
 my $iflevel = 0;
 my @ifdeps;
+my @drv_objs;
 
 # prevent recursion
 my %read_kconfigs;
@@ -348,6 +351,31 @@ foreach my $makefile (@makefiles) {
     close($infile);
 }
 
+foreach my $obj_key ( keys %objects )
+{
+	my @config_options = @{$objects{$obj_key}};
+	# Last index of array is 0 is equivalent to array's size is 1
+	if ( $#config_options == 0) {
+		push(@drv_objs, $obj_key);
+	}
+}
+
+sub gen_module_kconfigs {
+	my $module_ksymb = $ENV{'srctree'}."/scripts/Module.ksymb";
+
+	open(my $ksymbfile, '>', $module_ksymb) || die "Can not open $module_ksymb for writing";
+
+	foreach (@drv_objs) {
+		print $ksymbfile "$_" . "_KCONF=" . "@{$objects{$_}}\n";
+	}
+	close($ksymbfile);
+}
+
+if ($genmoduleksymb) {
+	gen_module_kconfigs();
+	exit(0);
+}
+
 my %modules;
 my $linfile;
 
-- 
2.7.4

  reply	other threads:[~2016-08-17 19:28 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-17 19:26 [RFC PATCH 0/5] Add CONFIG symbol as module attribute Cristina Moraru
2016-08-17 19:26 ` Cristina Moraru [this message]
2016-08-18 18:22   ` [RFC PATCH 1/5] Add generation of Module.symb in streamline_config Luis R. Rodriguez
2016-08-18 18:32     ` Luis R. Rodriguez
     [not found]     ` <CAGZ2q2xi9Uy-ye387=mWhy_fOEJBC593Nos7fH027m-_ZdoOXA@mail.gmail.com>
2016-08-20 14:49       ` Cristina-Gabriela Moraru
2016-08-23 19:00       ` Luis R. Rodriguez
2016-08-17 19:27 ` [RFC PATCH 2/5] Add CONFIG symbol to module as compilation parameter Cristina Moraru
2016-08-18 18:10   ` Luis R. Rodriguez
2016-08-18 18:55     ` Luis R. Rodriguez
2016-08-20 15:11     ` Cristina-Gabriela Moraru
2016-08-23 19:07       ` Luis R. Rodriguez
2016-08-17 19:27 ` [RFC PATCH 3/5] Trigger Module.ksymb generation in Makefile Cristina Moraru
2016-08-18 18:30   ` Luis R. Rodriguez
2016-08-17 19:27 ` [RFC PATCH 4/5] Set KCONFIG_KSYMB as value for kconfig_ksymb module attribute Cristina Moraru
2016-08-18 18:59   ` Luis R. Rodriguez
2016-08-20 15:16     ` Cristina-Gabriela Moraru
2016-08-23 19:10       ` Luis R. Rodriguez
2016-08-17 19:27 ` [RFC PATCH 5/5] Add kconf_symb as kernel " Cristina Moraru
2016-08-18 19:02   ` Luis R. Rodriguez
2016-08-18 17:55 ` [RFC PATCH 0/5] Add CONFIG symbol as " Luis R. Rodriguez
2016-08-19  9:07   ` Michal Marek
2016-08-22 19:48     ` Cristina-Gabriela Moraru
2016-08-23 21:32     ` Luis R. Rodriguez
2016-08-24 11:05       ` Michal Marek
2016-08-24 16:33         ` Luis R. Rodriguez
2016-08-24 17:31           ` Naveen Kumar
2016-08-22 19:35   ` Cristina-Gabriela Moraru
2016-08-23 19:17     ` Luis R. Rodriguez
2016-08-25  7:43   ` Christoph Hellwig
2016-08-25  8:00     ` Johannes Berg
2016-08-25 19:51       ` Luis R. Rodriguez
2016-08-25  8:41     ` Michal Marek
2016-08-25 20:19     ` Luis R. Rodriguez
2019-02-05 22:07       ` Luis Chamberlain
2019-06-26 22:21         ` Luis Chamberlain
2019-06-27  4:50           ` Christoph Hellwig
2019-06-28 18:40             ` Luis Chamberlain
2019-06-29  8:42               ` Greg Kroah-Hartman
2019-07-02 20:51                 ` Luis Chamberlain
2019-07-03  7:40                   ` Greg Kroah-Hartman
2019-07-03 16:50                     ` Luis Chamberlain
2019-07-03 18:57                       ` Greg Kroah-Hartman
2019-07-03 22:25                         ` Luis Chamberlain
2019-07-11 23:07                           ` Brendan Higgins
2019-07-11 23:22                             ` Luis Chamberlain
2019-07-03 12:16               ` Enrico Weigelt, metux IT consult
2019-07-03 17:35                 ` Luis Chamberlain
2019-07-03 19:31                   ` Enrico Weigelt, metux IT consult
2019-07-03 22:42                     ` Luis Chamberlain
2019-07-11 23:27                       ` Brendan Higgins
2019-07-13 14:44                         ` Enrico Weigelt, metux IT consult

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1471462023-119645-2-git-send-email-cristina.moraru09@gmail.com \
    --to=cristina.moraru09@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=kay@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=teg@jklm.no \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®