Boost logo

Boost-Build :

From: pal.tw (pal.tw_at_[hidden])
Date: 2003-10-07 17:22:07


Dear all:
I am sorry that I disappeared for a long time since I promise
to do some contribution. Because I have a lot of work to be done.
Things will never be done, won't they? :)
It sounds a little depressed to you. Mmmm... I have read the
topic "Conditional requirements" written by Ali, and have some
thoughts too. But I need some time to orginize them.

I have already made a contribution but don't know how to send to
you. Therefor I introduce first what changes and new features
I made. I hope they would be helpful.

ps. The code is base on "boost-build-2.0-m7".
---------------------------------------------------------------------
1. The PROFILE Rule
rule PROFILE ( key_path : data ? )

Added only on win32 platform. It reads the registry of Windows.
'key_path' is the location of information, and 'data' is
the name of value which we want to get. If 'data' is omitted,
the default value of 'key_path' will be returned.

Current support type : REG_DWORD, REG_SZ, REG_EXPAND_SZ,
REG_MULTI_SZ.
The data with 'REG_DWORD' type will be turned into a string,
and 'REG_MULTI_SZ' into a list of strings. The data with
'REG_EXPAND_SZ' type will be replaced environment-variable
strings in it with their defined values.
If it can't receive the value of the data, it just return
empty list. Of course,

HKLM == HKEY_LOCAL_MACHINE
HKCU == HKEY_CURRENT_USER
HKCR == HKEY_CLASSES_ROOT

Other predefined root keys are not support.

Sample:
local PSDK_location =
[ PROFILE
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MicrosoftSDK\\Directories : "
Install Dir" ] ;

2. The PREBUILD and POSTBUILD global variables
Two predefined global variables with lists of commands executed
just before or after the build process. Not like commands
in actions which depend on some targets marked to update.
The commands in the two lists will be always executed.
They might be useful to cooperate with other console tools,
like CVS, doxygen, codegen tools, or e-mail auto-sender...etc.
For example, we can schedule daily-build at midnight,
and send a report to us when it is finished.

I only test the function in Windows, I don't know if it works
on other platform.

3. The HOST_OS and WIN32 global variables
Besides 'NT' variable, it also define 'WIN32' now.
In the past, Jam can only run in Windows NT platform,
but it isn't exact today.

The HOST_OS variable will be set to actual OS in run-time.
Currently valid values are 'WIN95', 'WIN98', 'WINME', 'WINNY4',
'WIN2K', 'WINXP', 'WIN2003', 'NT'.
I intend for cross-compilation, but the information
might be useless. So I consider not to add it now,
and added it later when we need it.

4. JAMSHELL setting of "%", indicating that the command should be
invoked directly. But I found the code in "Bjam" only deal with it
in execnt.c. I don't know if it works well in execunix.c.
So I move the code from execnt.c to execunix.c. Of course,
I refactor them a little. If it's ok in original way,
I should move the snippet back. Would somebody help me to verify
this? Because I have no Linux or Unix platform to test, and
I am not familiar with them myself. Thank you.

- Paul Lin

 


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