Re: Looking to help
Ingo Weinhold <bonefish-CFLBMwTPW48UNGrzBIF7/[email protected]> Fri, 09 Mar 2007 21:58:18 +0100
| Newsgroups | gmane.os.openbeos.kernel.devel |
|---|---|
| Message-ID | <[email protected]> |
On 2007-03-09 at 17:36:39 [+0100], Morgan Howe <[email protected]> wrote: > On 3/9/07, Ingo Weinhold <bonefish-CFLBMwTPW48UNGrzBIF7/[email protected]> wrote: [...] > Well I was just going to make a barebones linux install in a Qemu and use it > to compile. But if you think we might be able to get this to work, I could > work on that first. I just tried to build it and it looks like the first > thing we would need to get rid of is 'error: template with C linkage'. The > next would be 'error: 'operator new' takes type 'size_t' ('long unsigned > int') as first parameter'. That first one occurs about 11k times in a build > and the second about 70. I can't remember having seen those before. The first one sounds harmless. I suppose we're defining a template function somewhere in an 'extern "C" { ... }' block or something to that effect. Should become obvious when looking at the code the error message refers to. The second one sounds a bit weird. But there too, analyzing the referenced code should help understanding it. BTW, if you run jam with the switch "-q", it will stop as soon as it encounters the first error, which is certainly a good idea as long as not everything works. :-) > It doesn't seem like it's too far from building, so I'll start with this and > hopefully when I move onto other stuff I won't have to mess around with a > bunch of different Qemu images. Let me know whatever information you have > about it, Ingo, and I'll give it a shot. Since you're already compiling things, there apparently was something you changed. Here's what generally has to be done for supporting another host platform: 1) Build platform detection in configure. You've probably already done this. Should be one line in the case statement. Assuming that uname returns "MacOS" it would by something like this: MacOS) buildPlatform=macos ;; 2) Support in build/jam/BuildSetup. You best look at each occurrence of "freebsd" and add "macos" analogously. It's basically the same for "linux", save that for "freebsd" additionally "/usr/lib/libgnuregex.so" is added to HOST_LIBROOT. You'll have to check whether MacOS's libc has GNU regex support built in or, as FreeBSD, provides a separate library. 3) headers/build/BeOSBuildCompatibility.h might need tweaking. The header is automatically included by every file built for the host platform. The difference between Linux and FreeBSD there is only that the latter does not provide strnlen(). You'll have to check whether or not MacOS does this. If you have more constant or prototype definitions that are missing in MacOS or need to be hacked somehow, they can go into this file. 4) Create a directory headers/build/host/macos. This directory is added to the system include directories for every file compiled for the host platform. If a header the build expects is missing on you platform, you would put it there. ATM we do that for FreeBSD only: It doesn't have <endian.h> and <regex.h>. Our proxy headers simply include <sys/endian.h> and <gnu/regex.h> (and do minor macro mapping). Unless I've missed something, this should be all that's needed. The main problem is, of course, to understand, why the build fails and to find solutions to put into the respective files in the first place. :-) If you hit a problem you need help with don't hesitate to ask. Please send the build output -- best run "jam -q" another time after it fails and provide the full output of that last run. CU, Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV