This completes rewriting the command line argument parsing to replace it with the Lyra library. The main() changes now allow for parsing project jamfiles before printing help text. And hence allow for all jam side args to be displayed with -h.
Also fix double-free in property set create. This changes the object_free
calls to zero out the object pointer to prevent/catch double frees
and use-after-free issues. It also changes parse_free in the same way.
And adds a parse_ptr to scope manage the lifetime of PARSE
objects. Which fixes another mem leak in the parse_impl for
early abnormal exits.
Some system headers on POSIX systems indirectly include strings.h in extern "C"
region. This sometimes results in Boost.Build's strings.h being included into
such region, which marks all string_* functions as extern "C" and changes their
name mangling rules accordingly, which causes linking errors. To resolve this
header conflict, this commit renames strings.h to jam_strings.h. And strings.cpp
to jam_strings.cpp for consistency.
Fixes https://github.com/boostorg/build/issues/468.