Compiling DROPS' dietlibc on FreeBSD

Frank Mehnert fm3 at os.inf.tu-dresden.de
Tue Sep 13 17:14:23 CEST 2005


Julian,

On Tuesday 13 September 2005 16:31, Julian Stecklina wrote:
> On Tue, 13 Sep 2005 11:27:21 +0200 (DFT)
>
> "Martin Pohlack" <mp26 at os.inf.tu-dresden.de> wrote:
> > Hi,
> >
> > I currently don't have access to the source code, but I think you
> > should look up how the gcc include path is generated.  The
> > '-I/include' and the missing 'stdarg.h' seem to point to this.
>
> I changed GCCDIR_x86 to /usr, so /usr/include gets passed and most of
> dietlibc seems to compile. But I am missing l4/* include files. What
> is the required order of building? How do I install header files where
> the build scripts find them?

This is generally a bad idea since you should use the headers which the
LibC is build against. To fix your problem with stdarg.h go please
check the following:

  gcc -print-search-dirs|sed -ne 's+^install: \(.*[^/][^/]*\)/\?+\1+p'

should deliver you the gcc directory. Starting from that directory, 
./include contains stdarg.h. I assume that the sed script probably does
not work on your BSD box. Perhaps you find a fix. You find the original
code in $(L4DIR)/mk/Makeconf, variable GCCDIR_f.

L4 headers are installed to $(L4DIR)/include when you perform make inside
a $(L4DIR/pkg/<package>/include directory. Therefore, crt0.h should be
located in $(L4DIR)/include/l4/crtx/crt0.h.

To build the L4 tree, perform make in $(L4DIR)/pkg. That ensures that
at first all headers of all packages are installed into $(L4DIR)/include.
After that, check that directory for the headers.

> > But I'm not sure whether dietlibc will build on a bsd, because its
> > author seems "a little bit" affixed to Linux ;-).
>
> I have high hopes. It cannot be _that_ difficult. But if someone could
> explain to me where the advantage of find -printf "%P " over find
> -print is (which is POSIX) I would be partially enlightened. ;)

You are talking about $(L4DIR)/mk/include.mk. As far as I see, printf "%P "
delivers filenames as 'foo bar buz' instead of 'foo\nbar\nbuz'. I assume
that the perl script would complain about '\n's. As this seems to not work
on your box, this could be the reason why crt0.h cannot be found ...

Frank
-- 
## Dept. of Computer Science, Dresden University of Technology, Germany ##
## http://os.inf.tu-dresden.de/~fm3                                     ##
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20050913/88f1cdb1/attachment.sig>


More information about the l4-hackers mailing list