Hello,
I tried to build fiasco on FreeBSD today using the following commands:
cd kernel/fiasco gmake config env AWKP=awk gmake
I got as far as: gmake srcdir=/usr/home/blitz/src/os/l4/kernel/fiasco/src -f /usr/home/ blitz/src/os/l4/kernel/fiasco/src/Makefile.sub2 all gmake[3]: Entering directory `/usr/home/blitz/src/os/l4/kernel/fiasco/build' ... Making kip.o g++ -c -MD -nostdinc -I/usr/home/blitz/src/os/l4/kernel/fiasco/ src/types/ia32 -I/usr/home/blitz/src/os/l4/kernel/fiasco/src/types -I/ usr/home/blitz/src/os/l4/kernel/fiasco/src/drivers/ia32 -I/usr/home/ blitz/src/os/l4/kernel/fiasco/src/drivers -I/usr/home/blitz/src/os/l4/ kernel/fiasco/src/kern/ia32 -I/usr/home/blitz/src/os/l4/kernel/fiasco/ src/kern/shared -I/usr/home/blitz/src/os/l4/kernel/fiasco/ src/kern -I/ usr/home/blitz/src/os/l4/kernel/fiasco/src/boot -I/usr/home/blitz/src/ os/l4/kernel/fiasco/src/lib/libk/ia32 -I/usr/home/b litz/src/os/l4/ kernel/fiasco/src/lib/libk -I/usr/home/blitz/src/os/l4/kernel/fiasco/ src/lib/kern/include -I/usr/home/blitz/src/os/l4/ kernel/fiasco/src/lib/ amm -I/usr/home/blitz/src/os/l4/kernel/fiasco/src/lib/gzip -I/usr/home/ blitz/src/os/l4/kernel/fiasco/src/lib/di sasm -I/usr/home/blitz/src/os/ l4/kernel/fiasco/src/lib/perfctr -I/usr/home/blitz/src/os/l4/kernel/ fiasco/src/lib/regex -I/usr/home/bl itz/src/os/l4/kernel/fiasco/src/lib/ minilibc/ia32/include -I/usr/home/blitz/src/os/l4/kernel/fiasco/src/lib/ minilibc/include -I. -Iauto -I/usr/lib//include -fno-implement-inlines -mpreferred-stack-boundary=2 -march=i686 -mtune=pentium2 -fno-defer-pop -freg-struct-re turn -g -Wall -W -Wformat=2 -ffunction-sections -fomit- frame-pointer -gstabs+ -fno-rtti -fno-exceptions -Wno-non-virtual- dtor -O2 - finline-limit=10000 --param large-function-insns=10000 - fweb -frename-registers auto/kip.cc -o kip.o In file included from auto/ kip.h:6, from auto/kip.cc:3: /usr/home/blitz/src/os/l4/kernel/fiasco/ src/types/types.h:4:20: stddef.h: No such file or directory
(some spaces have crept in due to copy&paste from xterm)
minilibc does not seem to provide stddef.h, so the one of the host compiler is probably meant (is this correct?), but -I/usr/include//bin seems kind of bogus. Has anyone an idea where to tweak this?
As a general remark: Hardcoded paths in the build process should be avoided. Best example #!/bin/bash in scripts which should be replaced by #!/usr/bin/env bash or even better #!/bin/sh for better portability. I think the whole build process needs some kind of autoconf magic, too, to make it less GNU/Linux dependent.
Regards,
On Wed, 6 Jul 2005 23:21:21 +0200 Julian Stecklina der_julian@web.de wrote:
Hello,
I tried to build fiasco on FreeBSD today using the following commands:
cd kernel/fiasco gmake config env AWKP=awk gmake
I got as far as: gmake srcdir=/usr/home/blitz/src/os/l4/kernel/fiasco/src -f /usr/home/
[...]
registers auto/kip.cc -o kip.o In file included from auto/ kip.h:6, from auto/kip.cc:3: /usr/home/blitz/src/os/l4/kernel/fiasco/ src/ types/types.h:4:20: stddef.h: No such file or directory
(some spaces have crept in due to copy&paste from xterm)
minilibc does not seem to provide stddef.h, so the one of the host compiler is probably meant (is this correct?), but -I/usr/include//bin seems kind of bogus. Has anyone an idea where to tweak this?
The bogus include directory was -I/usr/bin//include, sorry for the typo. It seems that the configuration process tries to locate libgcc.a and assumes that the directory containing this library also has gcc specific headers. On FreeBSD however libgcc.a is installed in the base system under /usr/lib and its headers are in /usr/include. A real fix here would be using autoconf. :-/
Another issue I have come across is the dependence on a non-POSIX date utility. I studied several man pages from different Linuxes and BSDs and come to the conclusion that it is quite difficult to get the file modification time via anything that is remotely POSIXish. The date command is not even uniform on all Linuxes.. I replaced the modification time of the config file with the current time of day...
Nevertheless, I managed to complete a build of Fiasco on FreeBSD. I still have to test whether it works, though.
Attached is a patch with all the changes I had to do.
Regards,
On Thu Jul 07, 2005 at 01:24:34 +0200, Julian Stecklina wrote:
On Wed, 6 Jul 2005 23:21:21 +0200 Julian Stecklina der_julian@web.de wrote:
Hello,
I tried to build fiasco on FreeBSD today using the following commands:
cd kernel/fiasco gmake config env AWKP=awk gmake
I got as far as: gmake srcdir=/usr/home/blitz/src/os/l4/kernel/fiasco/src -f /usr/home/
[...]
registers auto/kip.cc -o kip.o In file included from auto/ kip.h:6, from auto/kip.cc:3: /usr/home/blitz/src/os/l4/kernel/fiasco/ src/ types/types.h:4:20: stddef.h: No such file or directory
(some spaces have crept in due to copy&paste from xterm)
minilibc does not seem to provide stddef.h, so the one of the host compiler is probably meant (is this correct?), but -I/usr/include//bin seems kind of bogus. Has anyone an idea where to tweak this?
The bogus include directory was -I/usr/bin//include, sorry for the typo. It seems that the configuration process tries to locate libgcc.a and assumes that the directory containing this library also has gcc specific headers. On FreeBSD however libgcc.a is installed in the base system under /usr/lib and its headers are in /usr/include. A real fix here would be using autoconf. :-/
gcc usually installs this way and that's how it's done on any Linux we've seen. A fix for this isn't that hard though, I guess.
Another issue I have come across is the dependence on a non-POSIX date utility. I studied several man pages from different Linuxes and BSDs and come to the conclusion that it is quite difficult to get the file modification time via anything that is remotely POSIXish. The date command is not even uniform on all Linuxes.. I replaced the modification time of the config file with the current time of day...
So, is there any way of getting the modification time of a file on BSD without coding something myself?
Adam
On Thu, 7 Jul 2005 22:17:30 +0200 Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
The bogus include directory was -I/usr/bin//include, sorry for the typo. It seems that the configuration process tries to locate libgcc.a and assumes that the directory containing this library also has gcc specific headers. On FreeBSD however libgcc.a is installed in the base system under /usr/lib and its headers are in / usr/include. A real fix here would be using autoconf. :-/
gcc usually installs this way and that's how it's done on any Linux we've seen. A fix for this isn't that hard though, I guess.
If I install another GCC version besides the one that comes with the base system one (3.4.4) it will get approximately the same directory layout as on Linux. But the current config magic would probably find / usr/lib/, though.
So, is there any way of getting the modification time of a file on BSD without coding something myself?
~> date Fr 8 Jul 2005 11:15:15 CEST ~> touch foo ~> stat -f "%Sm" foo Jul 8 11:15:17 2005 ~> date -r `stat -f "%Dm" foo` Fr 8 Jul 2005 11:15:17 CEST
Note that stat on FreeBSD and NetBSD (dunno about OpenBSD) does exactly the same thing as the stat on, say, RedHat, but with completely different syntax. Shell coding is a nightmare...
Regards,
On Fri Jul 08, 2005 at 12:16:20 +0200, Julian Stecklina wrote:
On Thu, 7 Jul 2005 22:17:30 +0200 Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
The bogus include directory was -I/usr/bin//include, sorry for the typo. It seems that the configuration process tries to locate libgcc.a and assumes that the directory containing this library also has gcc specific headers. On FreeBSD however libgcc.a is installed in the base system under /usr/lib and its headers are in / usr/include. A real fix here would be using autoconf. :-/
gcc usually installs this way and that's how it's done on any Linux we've seen. A fix for this isn't that hard though, I guess.
If I install another GCC version besides the one that comes with the base system one (3.4.4) it will get approximately the same directory layout as on Linux. But the current config magic would probably find / usr/lib/, though.
I changed the path "detection" yesterday. It should work, or not?
So, is there any way of getting the modification time of a file on BSD without coding something myself?
~> date Fr 8 Jul 2005 11:15:15 CEST ~> touch foo ~> stat -f "%Sm" foo Jul 8 11:15:17 2005 ~> date -r `stat -f "%Dm" foo` Fr 8 Jul 2005 11:15:17 CEST
Note that stat on FreeBSD and NetBSD (dunno about OpenBSD) does exactly the same thing as the stat on, say, RedHat, but with completely different syntax. Shell coding is a nightmare...
Ok. Not nice but doable.
Adam
On Fri, 8 Jul 2005 23:38:06 +0200 Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
If I install another GCC version besides the one that comes with the base system one (3.4.4) it will get approximately the same directory layout as on Linux. But the current config magic would probably find / usr/lib/, though.
I changed the path "detection" yesterday. It should work, or not?
Yes, works. Thanks.
You may still want to apply the following patch.
Index: kernel/fiasco/src/Makeconf.ia32 =================================================================== RCS file: /home/remote-cvs/l4/kernel/fiasco/src/Makeconf.ia32,v retrieving revision 1.19 diff -r1.19 Makeconf.ia32 32c32 < SHARED_FLAGS += -march=i686 $(call CHECKCC,- mtune=pentium-m, ---
SHARED_FLAGS += -march=i686 $(call CHECKCC,- mtune=pentium-m,\
Regards,
On Mon, 11 Jul 2005 15:51:09 +0200 Julian Stecklina der_julian@web.de wrote:
On Fri, 8 Jul 2005 23:38:06 +0200 Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
If I install another GCC version besides the one that comes with the base system one (3.4.4) it will get approximately the same directory layout as on Linux. But the current config magic would probably find / usr/lib/, though.
I changed the path "detection" yesterday. It should work, or not?
Yes, works. Thanks.
You may still want to apply the following patch.
Index: kernel/fiasco/src/Makeconf.ia32
RCS file: /home/remote-cvs/l4/kernel/fiasco/src/Makeconf.ia32,v retrieving revision 1.19 diff -r1.19 Makeconf.ia32 32c32 < SHARED_FLAGS += -march=i686 $(call CHECKCC,- mtune=pentium-m, ---
SHARED_FLAGS += -march=i686 $(call CHECKCC,- mtune=pentium-m,\
Damn copy'n'paste, damn line indentation... I just wanted to say that there is still the '' missing in the Pentium-M section of this Makefile.
Regards,
On Mon Jul 11, 2005 at 15:51:09 +0200, Julian Stecklina wrote:
On Fri, 8 Jul 2005 23:38:06 +0200 Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
If I install another GCC version besides the one that comes with the base system one (3.4.4) it will get approximately the same directory layout as on Linux. But the current config magic would probably find / usr/lib/, though.
I changed the path "detection" yesterday. It should work, or not?
Yes, works. Thanks.
You may still want to apply the following patch.
I now also fixed the two remaining issues. I hope the date thing works on the BSDs, I was too lazy to test this myself there. ;) I'd appreciate if you could check this...
Adam
l4-hackers@os.inf.tu-dresden.de