All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bruce Ashfield <bruce.ashfield@windriver.com>
To: Brian Lloyd <blloyd@familyhonor.net>
Cc: "yocto@yoctoproject.org" <yocto@yoctoproject.org>
Subject: Re: Build external module against Yocto kernel
Date: Fri, 1 Feb 2013 23:51:57 -0500	[thread overview]
Message-ID: <510C9B6D.8090803@windriver.com> (raw)
In-Reply-To: <1359779719.31775.17.camel@omclinuxballt.devnet.ordermatic.net>

On 13-02-01 11:35 PM, Brian Lloyd wrote:
> While, I'm not an expert, I would like to point out:
> http://kernel.org/doc/index-old.html (the new index references this but
> the information isn't on the new index page directly).
>
> One thing mentioned is that a make distclean is required for reasonable
> results between any run with different architectures. So you can't run a
> make scripts to get scripts for the local system in a build directory
> configured for cross compiling for the device and expect it to work
> correctly.
>
> Also, about the config prompts: during dependency checking, the .config
> file is validated, and if it fails validation, make oldconfig is run, as
> it assumes the config was pulled from a previous kernel version. Since a
> .config file is ARCH specific, it will almost always be invalid when
> checked against a different architecture, and thus fire off a make
> oldconfig. This is why you get prompted to answer questions when you do
> "make scripts" and have a .config for another architecture.
>
> Also, I suspect you need to ensure the cross compiler is being called
> when necessary for the make scripts. It looks like the errors are from
> passing arm gcc parameters to an x86 gcc. You can try "make ARCH=arm
> CROSS_COMPILE=/???/" instead, where /???/ is the prefix to your arm
> cross compiler. The kernel build actually uses both cross and non-cross
> compilers during build so you have some support tools compiled to run
> natively and others that run on the end machine, so you don't want to
> override CXX and C++ to be the cross compiler.

We crossed while my email client was offline and I was typing up
a response. All of the above is definitely true, and what I had in
my rambling reply as well.

When building with the SDK, to avoid oldconfig AND get the build
infrastructure both CROSS_COMPILE and ARCH are required, just as bitbake
was providing during the original build.

The trick is to still generate modules that will work against the running
kernel .. but that's another story :)

Cheers,

Bruce

>
>
> Brian
>
> On Sat, 2013-02-02 at 00:48 +0000, Patrick Turley wrote:
>> On Jan 31, 2013, at 10:50 PM, Bruce Ashfield<bruce.ashfield@windriver.com  <mailto:bruce.ashfield@windriver.com>>  wrote:
>>
>> >  On 13-01-23 10:17 AM, Patrick Turley wrote:
>> >>
>> >>  On Jan 23, 2013, at 7:48 AM, Bruce Ashfield<bruce.ashfield@windriver.com  <mailto:bruce.ashfield@windriver.com>>
>> >>   wrote:
>> >>>  On 13-01-23 12:34 AM, Patrick Turley wrote:
>> >>>>
>> >>>>  On Jan 22, 2013, at 11:17 PM, Bruce Ashfield<bruce.ashfield@windriver.com  <mailto:bruce.ashfield@windriver.com>>   wrote:
>> >>>>
>> >>>>>  On 13-01-23 12:14 AM, Patrick Turley wrote:
>> >>>>>>  On Jan 22, 2013, at 10:43 PM, Bruce Ashfield<bruce.ashfield@windriver.com  <mailto:bruce.ashfield@windriver.com>>    wrote:
>> >>>>>>>  On 13-01-22 9:26 PM, Patrick Turley wrote:
>> >>>
>> >>>  Argh. I'll have to just run the commands myself and stop spamming the
>> >>>  list with ideas :) It's just a matter of making lkc accept the defaults
>> >>>  (i.e. you could also use allyesconfig, or allnoconfig) or even better
>> >>>  not trigger that config check at all.
>> >>
>> >>  You're very kind to have spent so much time on my problem already. I look forward to hearing back.
>> >
>> >  I'm not sure if you are still interested in this topic, but I took
>> >  a few minutes to look into this more today .. just to understand
>> >  exactly what is happening.
>> >
>> >  It is what was discussed on the thread already, when you invoke
>> >  make scripts, there is an explicit dependency on auto.conf and
>> >  that is what triggers the make oldconfig if the .config is newer
>> >  than it is. Technically we are safe from this, assuming that the
>> >  .config and captured auto.conf match, and that auto.conf is in the
>> >  SDK.
>> >
>> >  The other way that oldconfig is triggered in my experience (and
>> >  testing today) is what we mentioned before. If your .config was
>> >  generated with ARCH=<foo>  (even ARCH=i386 the default) and you then
>> >  execute 'make scripts', you'll trigger the oldconfig.
>> >
>> >  So to avoid it, you should execute your make scripts with ARCH=<your arch>
>> >  on the command line.
>> >
>> >  As for saving ARCH in the .config, it has been considered in the past,
>> >  but never implemented. Other elements such as CROSS_COMPILE are now
>> >  saved, but not ARCH= since it isn't directly used in the .config, it's
>> >  a Makefile construct.
>>
>> I absolutely *am* still interested in this issue, and thank you for taking another look.
>>
>> There are two commands that I'm interested in executing:
>>
>>      -- make oldconfig
>>
>>      -- make scripts
>>
>> (Since I install the SDK under /opt, I use sudo when running these commands, but I don't *think* that's important.)
>>
>>
>> Here's what happens with the first command:
>>
>> $ sudo make oldconfig ARCH=arm
>>    HOSTCC  scripts/basic/fixdep
>>    HOSTCC  scripts/basic/docproc
>>    HOSTCC  scripts/kconfig/conf.o
>>    HOSTCC  scripts/kconfig/kxgettext.o
>>    SHIPPED scripts/kconfig/zconf.tab.c
>>    SHIPPED scripts/kconfig/lex.zconf.c
>>    SHIPPED scripts/kconfig/zconf.hash.c
>>    HOSTCC  scripts/kconfig/zconf.tab.o
>>    HOSTLD  scripts/kconfig/conf
>> scripts/kconfig/conf --oldconfig Kconfig
>> #
>> # configuration written to .config
>> #
>>
>> As you say, adding"ARCH=arm"  puts the build at ease and it completes just fine.
>>
>>
>> Here's what happens with the second command:
>>
>> $ sudo make scripts ARCH=arm
>> scripts/kconfig/conf --silentoldconfig Kconfig
>>    HOSTCC  scripts/genksyms/genksyms.o
>>    SHIPPED scripts/genksyms/lex.c
>>    SHIPPED scripts/genksyms/parse.h
>>    SHIPPED scripts/genksyms/keywords.c
>>    HOSTCC  scripts/genksyms/lex.o
>>    SHIPPED scripts/genksyms/parse.c
>>    HOSTCC  scripts/genksyms/parse.o
>>    HOSTLD  scripts/genksyms/genksyms
>>    CC      scripts/mod/empty.o
>> cc1: error: unrecognized command line option"-mlittle-endian"
>> cc1: error: unrecognized command line option"-mapcs"
>> cc1: error: unrecognized command line option"-mno-sched-prolog"
>> cc1: error: unrecognized command line option"-mabi=aapcs-linux"
>> cc1: error: unrecognized command line option"-mno-thumb-interwork"
>> scripts/mod/empty.c:1: error: bad value (armv5t) for -march= switch
>> scripts/mod/empty.c:1: error: bad value (armv5t) for -mtune= switch
>> make[2]: *** [scripts/mod/empty.o] Error 1
>> make[1]: *** [scripts/mod] Error 2
>> make: *** [scripts] Error 2
>>
>> Recall that, when I do *not* give the"ARCH=arm"  argument, I get reams of config questions, but the build works.
>>
>> This is an improvement in that the config questions are gone but, of course, the build fails.
>>
>> Perhaps it *should* fail. Perhaps I'm doing something that actually doesn't make sense. Or perhaps I'm doing something that Yocto just isn't ready to support. At this point, I should say:
>>
>> 1) I have a workaround for all this, so I am *not* dead in the water.
>>
>> 2) I am a kernel building n00b and it legitimately may not be worth your time (or anyone else's) to continue to look at this until I"catch up."  I don't want anyone throwing up their hands in frustration and saying"Doesn't this guy know anything?"  It's perfectly reasonable to cut me off at this point :)
>>
>> _______________________________________________
>> yocto mailing list
>> yocto@yoctoproject.org  <mailto:yocto@yoctoproject.org>
>> https://lists.yoctoproject.org/listinfo/yocto
>
>
>
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto



  reply	other threads:[~2013-02-02  4:52 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-14 23:27 Build external module against Yocto kernel Patrick Turley
2013-01-15 17:07 ` Brian Lloyd
2013-01-15 17:09   ` Brian Lloyd
2013-01-15 17:54     ` Patrick Turley
2013-01-15 18:00       ` Bruce Ashfield
2013-01-15 18:26         ` Patrick Turley
2013-01-15 18:38           ` Bruce Ashfield
2013-01-15 19:16             ` Zhang, Jessica
2013-01-22 19:52               ` Patrick Turley
2013-01-16 17:11             ` Darren Hart
2013-01-21 21:21               ` Patrick Turley
2013-01-22 12:34                 ` Christian Ege
2013-01-22 20:28               ` Patrick Turley
2013-01-22 20:34                 ` Bruce Ashfield
2013-01-23  2:26                   ` Patrick Turley
2013-01-23  4:43                     ` Bruce Ashfield
2013-01-23  5:14                       ` Patrick Turley
2013-01-23  5:17                         ` Bruce Ashfield
2013-01-23  5:34                           ` Patrick Turley
2013-01-23 13:48                             ` Bruce Ashfield
2013-01-23 15:17                               ` Patrick Turley
2013-01-24 19:58                                 ` John Mehaffey
2013-01-24 20:10                                   ` Bruce Ashfield
2013-01-25  1:34                                     ` John Mehaffey
2013-02-01  4:50                                 ` Bruce Ashfield
2013-02-02  0:48                                   ` Patrick Turley
2013-02-02  4:35                                     ` Brian Lloyd
2013-02-02  4:51                                       ` Bruce Ashfield [this message]
2013-02-02  4:48                                     ` Bruce Ashfield
2013-02-02  5:12                                       ` Brian Lloyd
2013-02-02  5:16                                         ` Bruce Ashfield

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=510C9B6D.8090803@windriver.com \
    --to=bruce.ashfield@windriver.com \
    --cc=blloyd@familyhonor.net \
    --cc=yocto@yoctoproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.