From: martinez.javier@gmail.com (Javier Martinez Canillas)
To: kernelnewbies@lists.kernelnewbies.org
Subject: Conditional compilation depending on CONFIG_FOOBAR
Date: Mon, 12 Dec 2011 12:30:03 +0100 [thread overview]
Message-ID: <CAAwP0s1jBO6Kh2d3Q8rgyAO4qUOgUNdEU_rA09gcRK78B86S_w@mail.gmail.com> (raw)
In-Reply-To: <CAC_BnSV_zqUsb+FUJeB7i9s=1Vfm-J-oXOyFs=5XivfyNHJiyA@mail.gmail.com>
On Mon, Dec 12, 2011 at 8:59 AM, Srivatsa Bhat <bhat.srivatsa@gmail.com> wrote:
>
>
> On Mon, Dec 12, 2011 at 9:17 AM, contemplating zombie
> <contemplatingzombie@gmail.com> wrote:
>>
>> Just to clarify more, if I put my code in something like:
>> #ifdef CONFIG_FOOBAR
>> my code
>> #endif
>>
>> Then my module's Makefile should check if this parameter is defined in the
>> ".config" file. How should I modify my Makefile to do that?
>>
>>
>> On Sun, Dec 11, 2011 at 10:44 PM, contemplating zombie
>> <contemplatingzombie@gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> I want to conditionally compile some code in module if CONFIG_FOOBAR is
>>> defined.
>>> How can I add this check to my module's makefile?
>>>
>>> -Thanks.
>>
>>
>
> If I understand correctly, you want some part of your module to be compiled
> only
> when CONFIG_FOOBAR is defined.?You already mentioned the solution yourself!:
> Just put that code within #ifdef CONFIG_FOOBAR and #endif
> That would check the .config file and see if CONFIG_FOOBAR is defined; and
> only if it
> is defined, that code piece gets?compiled, else it will simply get stripped
> off.
>
Now if the question is _how_ to define the configuration symbol
FOOBAR. Then you have to add a new configuration option to a Kconfig
file (probably the one that exists in the directory where you have the
file that is using it).
For example, suppose that you have a char device driver located in
drivers/char/yourdev.c and yourdev uses a FOOBAR option to do
something. Then you have to add something like this in
drivers/char/Kconfig
config FOOBAR
bool "decide to use foobar or not"
help
Say Y here if you want to enable the foobar option.
When you execute make menuconfig or other make targets that generate
the compilation options menu. You will see your option under "Device
drivers" -> "Character devices"
The mconf binary will write in .config the value that you chose for
FOOBAR and will append CONFIG_
So if you enable FOOBAR, you will have something like:
CONFIG_FOOBAR=y
Then this symbols are used to create a generated autoconf.h file in
include/generated/autoconf.h
every compilation command in the kernel includes this file
gcc yourdev.c -I include/generated/autoconf.h
For a detailed description of the kernel build system look at
Documentation/kbuild/
Hope it helps,
--
Javier Mart?nez Canillas
(+34) 682 39 81 69
Barcelona, Spain
prev parent reply other threads:[~2011-12-12 11:30 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-12 3:44 Conditional compilation depending on CONFIG_FOOBAR contemplating zombie
2011-12-12 3:47 ` contemplating zombie
2011-12-12 7:59 ` Srivatsa Bhat
2011-12-12 11:30 ` Javier Martinez Canillas [this message]
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=CAAwP0s1jBO6Kh2d3Q8rgyAO4qUOgUNdEU_rA09gcRK78B86S_w@mail.gmail.com \
--to=martinez.javier@gmail.com \
--cc=kernelnewbies@lists.kernelnewbies.org \
/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;
as well as URLs for NNTP newsgroup(s).