[Buildroot] Common header files / code between packages

Jacques Samoun jacques.samoun33 at gmail.com
Sun Aug 8 06:53:05 UTC 2021


Hi,
Thanks for the suggestion. I was also thinking to a library, as i didn't
like the "ugliness" of my first thought :(
Will go for that and populate the staging dir.

Thanks,
Jacques

On Thu, Aug 5, 2021 at 6:55 PM Arnout Vandecappelle <arnout at mind.be> wrote:

>  Hi Jacques,
>
>  Please reply with the list in Cc. The feedback may be useful for others
> as well.
>
>
> On 05/08/2021 14:46, Jacques Samoun wrote:
> > Thanks Arnout,
> >
> > this seems definitely a better way.
> >
> > Can i ask a subsidiary one: what if you want to share some code package.
> > For example, i crafted a specialized buffers package (1 C file + 1
> header file).
> >
> > Both the user space part and the  driver use this same code (as they
> share
> > buffers and handle them in a consumer/producer mode).
> > My current approach is just that each package gets a copy of this code,
> then it
> > is built.
> > Do you feel this is the right approach ?
>
>  Sharing code between packages is normally done by making it a library and
> installing it to STAGING_DIR. However, this is not possible for sharing
> code
> between the kernel (module) and userspace, because the compiler options for
> building it for the kernel are different from the ones used for userspace.
>
>  However, you could compile it twice as part of the kernel module build:
> once as
> part of the kernel module, and once more (probably in a different
> Makefile) to
> create the library. Then you install that library and it can be used by the
> userspace package.
>
>  It's not exactly trivial to do this (not really difficult either though).
> So if
> this is a private package, you may be better off just copying it, or
> sharing it
> through e.g. a git submodule. Or even just using it from the other's build
> directory, like you suggested before. Ugly but it works :-)
>
>  Regards,
>  Arnout
>
>
> >
> > Jacques
> >
> >
> > On Thu, Aug 5, 2021 at 1:15 PM Arnout Vandecappelle <arnout at mind.be
> > <mailto:arnout at mind.be>> wrote:
> >
> >
> >
> >     On 05/08/2021 09:15, Jacques Samoun wrote:
> >     > Hello,
> >     >
> >     > my development consists of a kernel driver and an companion user
> space layer.
> >     > They are build each in 2 separate packages. Using external tree
> build.
> >     >
> >     > The problem is, i would like to share some include files between
> both
> >     > package (kernel driver and user space layer).
> >     > So far, i solved that by adding a common folder containing the
> include files,
> >     > and making it part of each package, so it builds OK.
> >
> >      I think a more common way is for the kernel module package to also
> install the
> >     shared include files (to $(STAGING_DIR)/usr/include/linux).
> cryptodev-linux is
> >     an example of that.
> >
> >      It's even possible to make the kernel module package build the
> kernel module
> >     only if a kernel is built, and make it to install the headers
> regardless of
> >     whether a kernel is built. That way, you can have a buildroot
> configuration that
> >     only builds the userspace without kernel. fwts is an example of that
> (it doesn't
> >     install headers though).
> >
> >
> >
> >     >
> >     > Now, a third package, whose code is completely outside the first 2
> is willing
> >     > also to use this include file. The only way i found so far, is to
> put explicit
> >     > relative path referring from one package to the one other, but
> this is ugly.
> >     > Moreover, the path depends on the version of the packages, so can
> break
> >     easily.
> >     > There must be a better way (STAGING DIR ?)  but i couldn't find.
> >
> >      Install the headers to $(STAGING_DIR)/usr/include/linux (or
> /usr/include if
> >     that is more appropriate).
> >
> >
> >      Regards,
> >      Arnout
> >
> >     >
> >     > Can anybody give me an hint ?
> >     > Thanks,
> >     > Jacques
> >     >
> >     >
> >     >
> >     >
> >     >
> >     > _______________________________________________
> >     > buildroot mailing list
> >     > buildroot at busybox.net <mailto:buildroot at busybox.net>
> >     > http://lists.busybox.net/mailman/listinfo/buildroot
> >     <http://lists.busybox.net/mailman/listinfo/buildroot>
> >     >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20210808/c7197f40/attachment.html>


More information about the buildroot mailing list