Boris Gubenko wrote:
Tried it -- see attached. "don't know how to make [.modules]order.c" is because there is no order.c module in 1.31.0.
Makes sense.
The real problem though is the one I've fixed in build_vms.com : on VMS, you cannot compile sources in modules subdirectory unless you cd into this subdirectory. This is because these sources include header files from the parent directory using '#include "../native.h"' directive. This is what I did in build_vms.com:
$ set def [.modules] $ cc 'CC_FLAGS - path.c, - property-set.c, - regex.c, - sequence.c, - set.c $ set def [-]
btw, it would be the same if the sources used a VMS-style notation: '#include "[-]native.h"'. In both cases, when compiled from *parent* directory, the compiler would not find include file.
Many compilers support changing the way user includes (#include "") are handled. They let you specify if the paths should be interpreted relative to the source point or relative to the include path, for example. Does VMS have such an option? Does it understand relative include paths at all? Barring that those includes could be changed to plain '#include "native.h"' and adding the appropriate include path. What is the option for adding an include path? The other solution is to move the files themselves out of the modules dir, and that's a painful alternative.
A couple of comments:
Instead of /STANDARD=VAXC I suggest /WARN=NOINFO which would silence all informational messages or /WARN=DISABLE=IMPLICITFUNC As far as I can tell, the only compiler diagnostics for jam sources was "%CC-I-IMPLICITFUNC the identifier ... is implicitly declared as a function". You don't really need to place compiler in the VAXC mode to compile modern sources :-) This is not a bug, of course.
If I remember correctly, I would have to search the boost.build list archives to be sure, if it's not in the VAXC mode it would not just generate warnings but errors. Don't remember what or why though.
A bug which you cannot see before the link phase is multiply defined symbol for glob. On modern VMS systems, there is a glob function in libc (CRTL in VMS terms). If you want to continue to use your own implementation of glob (which, I think, is a good idea), you need to specify /PREFIX_LIBRARY_ENTRIES=(ALL,EXCEPT=GLOB) instead of /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES (there is no symbol preemption on VMS). I stumble across this bug when linking bootstrap jam. It is fixed in build_vms.com I sent you.
OK. Thanks. Hopefully Philip will post his version of the script so I can compare and merge. [...]
#~ Copyright 2002-2005 Rene Rivera.
[...] You really don't need to quote my entire message with the attachment ;-) -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - Grafik/jabber.org