Boost logo

Boost-Build :

From: Andrey Melnikov (melnikov_at_[hidden])
Date: 2005-09-09 01:35:51


Alexey Pakhunov wrote:

> 1. msplatformsdk feature
>
> The .diff has been posted here:
> http://groups.yahoo.com/group/jamboost/message/11133
>
> There was a short discussion about the feature. Two main questions were:
>
> - Should the feature be called 'msplatformsdk' or it has to be more
> generic, something like <use-sdk>msplatformsdk, <use-sdk>posixsdk, etc?
>
> - Should we have a common way to set INCLUDE, LIB, PATH and
> potentially other environment variables as basis for implementation of
> SDK-related functionality.
>

What is "an SDK"? Is it more than just a library/collection of
libraries? What other SDKs do we have? Should we have STL and Platform
SDK handled the same way? How should we specify different Platform SDK
configurations? Should we use features or projects?

Look at my very basic proof-of-concept project. It illustrates one
possible way of defining platform SDK just as a plain library/BB
project. The proof is only partial, a lot of issues has to be addressed.

The advantage is that the PSDK module is toolset-independent. It just
defines usage-requirements as any other library. Also .bat setup scripts
are avoided, and we won't need a shell if we will be able to set the
environment from Jam.

What is your general impression? Is this decoupling approach promising?
Is it better than we have now, or worse?

Current problems:

DEPENDENCY ON THE STANDARD LIBRARY

Platform SDK requires the standard library to be set up. Even if CRT
isn't used (like in my example), standard C headers should still be in
the header search path.

I hard-coded the path into win32.jam, but the idea is that the CRT will
be described as another BB project and dependency on //stdlib/stdlib
will be added to the win32 usage-requirements.

EXPLICIT LIBRARY TARGETS

At the moment I have to specify 174 lines like

lib user32 ;
lib kernel32 ;
...

in win32.jam. Is it possible just to glob in the SDK libary and define
these targets in a loop? Or is it possible just to specify a library
name in a Jamfile and pass it to the linker as is? Is it possible to
locate a library in <library-path> and create a BB target on the fly, so
dependencies on such implicit libraries will be tracked? What is the
purpose of SEARCHED_LIB target type?

TOOLSETS SHOULDN'T SPECIFY A CRT OR A PSDK SEARCH PATH

With this approach, a toolset shouldn't set crt or PSDK search paths on
its own to avoid conflicts caused by dependency on folder search order.
All configuration should be performed in "using stdlib" rule in
user-config file.

MY_INIT RULE LOOKS LIKE A HACK

Are there better ways to set the usage requirements and <search> feature
programmatically? Will targets.main-target-alternative and a custom
target class help?

PROJECT.INITIALIZE

Is it still required in this case?

Andrey
 --------------080700020801010000000609 Content-Type: application/octet-stream;
name="psdk-as-a-project.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="psdk-as-a-project.zip"

[Attachment content not displayed.] --------------080700020801010000000609--


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk