[haiku] Re: Open Source Games

  • From: Michael Weirauch <dev@xxxxxxxxxxx>
  • To: haiku@xxxxxxxxxxxxx
  • Date: Fri, 18 Sep 2009 21:18:40 +0200

2009/9/18 Roland Plüss <roland@xxxxxxx>:
>
>
> Michael Weirauch wrote:
>> 2009/9/18 Roland Plüss <roland@xxxxxxx>:
>>
>>> I should have been most probably a bit more specific. It seems to be a
>>> problem with SCons and it's header/library detection routine. I just
>>> installed PNG from a precompiled binary and it fails to find it. Looks
>>> like SCons needs a fix up but for this I need to know first what the
>>> correct locations in Haiku are for the headers/libraries to look for. I
>>> assume /boot/common/include and /boot/common/lib but maybe there are
>>> more than those.
>>>
>> Roland,
>> SCons is being initialized with a minimal set of "hints" in the
>> platform initialization
>> file as with every other platform init file. It's told in which paths
>> to find binaries
>> and the glue files for the linker.
>>
>> AFAIU, the rest is up to the developer setting up the SConscripts correctly.
>>
>> If, of course, other platforms toolchains have a wider set of default
>> search and include paths,
>> then one might reconsider providing some more hints to SCons on Haiku
>> by default.
>> But I think it is not necessary. Building blender with the SCons 1.0.1
>> patch from haiku-ports
>> shows no issues at all. (After setting up the blender-specific
>> platform init file)
>>
>> Michael
>>
>>
> Somehow I doubt this is correct because if I run a crossplatform
> SConstruct file straight and it fails to find headers in the system
> headers path then it's not my fault. Unless you expect a crossplatform
> SConstruct to know the system path on all platforms it could be compiled
> for. With Haiku this doesn't even work since os.name returns "posix" so
> you have no way to tell if it's Haiku you compile on right now or Linux
> or some other Unix derivate. So how should you know then if you have to
> look in /boot/develop/headers instead of /usr/include this way?

I am sure you have far more experience with SCons than I do.

os.name returning posix is the setting python provides. Determination of the
specific platform is done via sys.platform.
See 
http://scons.tigris.org/source/browse/scons/tags/1.0.1/src/engine/SCons/Platform/__init__.py?revision=3540&view=markup

Regarding default includes, toolchain setup and so on...
http://scons.org/wiki/FrequentlyAskedQuestions#head-e0ce82e9fe5e40156e31f494e732b8108762d689

And that is why the platform initialization is what it is. Very basic.
If you think that is utterly wrong
you are welcome to file an improved patch at haiku-files.org's SCons
portolog page.

Nevertheless, I do still think that the FAQ entries say it all and
that is why all platform init
files you see in the 1.0.1 release don't set any system includes at
all. For reference:
http://scons.tigris.org/source/browse/scons/tags/1.0.1/src/engine/SCons/Platform/

Please don't get me wrong, but for my understanding SCons tries to be
as ignorant as possible
by not knowing anything about a specific platform/operating system
environment unless it is
explicitely told about it. And that is exactly the path the Haiku init
file follows.

Michael

Other related posts: