Build system wipes include directory

Norman Feske norman.feske at ...1...
Sun Dec 8 11:06:58 CET 2013


Hello Edgar,

thanks for giving Genode a try and welcome to the list!

> I thought no problem, thus I did a make clean. This wasn't helpful. Then
> I did a make cleanall, but now it wiped out the whole build/include
> directory.
> 
> Is this intended behaviour or should I not put things there? At this
> stage it is just annoying, but I think this is a bug, because the
> tutorial puts the headers, which define the RPC interfaces. Can I
> prevent this behaviour?

it looks like you somehow got the meaning of source and build
directories mixed up. Genode's build system builds out of tree, that is,
it keeps source codes separated from build output. From what you write,
it seems that you placed your source code right into the build
directory. That is not supposed to work. Instead, I recommend to place
your code into one of the existing souce-code repositories or create a
new source-code repository for your project. (outside the build
directory) For more details of how a source-code repository is
structured, let me refer you to the build-system documentation:

  http://genode.org/documentation/developer-resources/build_system

Your build directly obtains the list of the source-code repositories to
use from the '<build-dir>/etc/build.conf' file. This is the place where
you can add additional repositories such as your project's one.

Your post hints at a problem with the current version of the tutorial.
Is does not seem to make perfectly clear where to place the source code.
So you have a suggestion where and how to include this information in a
good way?

> And I want to use c++ features like Strings instead of char *. How can I
> enable this? I recognize I need a library for this, but I can't find it
> in base.

You can use most of the standard C++ library by taking the following steps:

1. Download the standard C++ library into the Genode source tree by
   issuing the following command from within the 'libports/' repository:

   make prepare PKG=stdcxx

   For stdcxx to work, you will also need the C runtime, which you can
   obtain via the following command:

   make prepare PKG=libc

2. Add the 'libports/' repository to the list of 'REPOSITORIES' in your
   '<build-dir>/etc/build.conf' file. (just uncomment the corresponding
   line)

3. Specify the 'stdcxx' library in your 'target.mk' file by adding the
   following declaration:

   LIBS += stdcxx

Now you should be able to include the usual C++ headers for strings and
containers.

Good luck!

Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list