2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 13:02:11 +00:00
Files
build/TODO.txt
Dave Abrahams 5e6d8fbb0f Integrated Vladimir Prus' improvements
[SVN r11612]
2001-11-06 15:55:45 +00:00

164 lines
6.0 KiB
Plaintext

(C) Copyright David Abrahams 2001. Permission to copy, use,
modify, sell and distribute this software is granted provided this
copyright notice appears in all copies. This software is provided
"as is" without express or implied warranty, and with no claim as
to its suitability for any purpose.
Boost Build system TODO
===== ===== ====== ====
* Devise a way to transmit paths with spaces through variables NOT ending in
PATH to Jam. Be sure that toolsets can be invoked through these variables.
* Complete work on using command-files for linking on windows. Neccessary features:
1. Factor the response generation code out so it can be re-used
2. Make the decision about whether to use command-files on a per-toolset,
per-platform basis.
* Correct the support for find-library. I'm not sure what that entails.
* Consider auto-quoting bound paths containing spaces.
DONE * Fix split-path bug which unroots paths on Unix
DONE * move NEEDLIBS to end of link line
DONE * Fix bug with not found Python scripts
* $(REDIRECT) for toolset invocations:
Unix: > filename 2>&1 -- puts stdout && stderr in same file
* add "|| exit $?" for unix to get it to exit for multi-line test commands.
* Make it possible to qualify dependencies just like requirements.
* Eliminate the need for <*>
* Support for warnings
* Add support for invoking debuggers from within the build system.
DONE * Fix the subinclude problem with project-wide variable settings (e.g.
BOOST_ROOT) that Beman pointed out to me.
* Move test target rules from status/Jamfile into boost-base.jam
SORTA DONE * Add requested test targets. I think we need at least the following
capability:
1. The ability to run any built executable
2. Two categories of test targets (call them "test" and "full-test") which
are not part of "all". These targets will build a ".test" file which depends
on some executable. The .test file will be regenerated when the executable
needs to be updated by running the executable with stdout redirected to the
.test file. full-test will be used for long-running tests.
* Add support for generalized user "CFLAGS", etc.
* Add examples directory back into CVS
DONE * Support for KCC
DONE * Specific support for GCC-3
* Low-priority: eliminate duplicate header scans.
* Eliminate the need for intermediate dispatching rules (e.g. C++-action) in
each toolset.
* Restructure internals to make better use of dispatching through variables.
I'm thinking of the chain of functions which get called to translate sources
into objects.
* Fix path normalization using regexp replacement. This should make
ALL_LOCATE_TARGET respond correctly to forward slashes.
* Handle #include "" and #include <> separately. Also, allow toolsets to
specify their own header search algorithms.
* Allow users to specify a rule name as part of the requirements or
default-build. Any ungristed element will be taken as the name of a rule to
be evaluated, and will be replaced with the result of calling it. This will
allow people to do a few things that the current system doesn't support
(e.g. Bill's case of needing to add a #define when the code is
dynamically-linkable).
Implement linking with prebuilt libraries. Should be trivial, except for
choosing different libraries for different variants. This might require
allowing sources to be qualified with toolset/variant grist. Also argues for
a different syntax for library dependencies: <lib> is too
confusable. Perhaps <#> or some other symbolic name.
Implement <sysinclude> feature for separately searching #include <...> paths?
I think this may be a bad idea, since it isn't a portable feature. Maybe it
would be best to try to get all compilers to work with the same #include
search algorithm.
Clean up documentation
DONE describe gristing
revise free/path feature definition
Add a hook function to allow output directory customization that some people
want (instead of subdirectories, string together short names with '-').
Platform support:
Unix paths on Mac/VMS
DONE Integrate Win95/98/ME support
DONE (something better) Compile allyourbase/boost-base.jam into Jam itself.
It might be best to review differences between allyourbase.jam and Jambase,
and arrange the new Jambase to be a superset of the perforce Jambase so that
a boost-compiled Jam can be used on standard Jambase projects without
modification. OTOH, people can always use -f with the standard Jambase.
Open problem:
How do we get Metrowerks STDHDRS properly initialized? The corresponding
shell variables don't end in PATH nor do they follow the correct syntax for
the -I option (e.g. they have preceding '+' signs).
Testing
Linux
Other Unices
MacOS
Additional toolset descriptions
DONE Kai (needs refurbishment)
DONE, but needs rework Intel
DONE(windows) Comeau
...
Better support for single-valued free features. GCC needs a default
ftemplate-depth-NN setting which can be overridden.
=== for test system ===
Add platform library path to <runtime-link>dynamic executable targets' RUN_PATH,
so they can be run even without the tools set up in the environment.
Add Jam rules for constructing build/test tools (built exes used for build/test).
Must only try to build one compiler/variant of these
Implement some test tools:
success/failure inverter for expected failures (must prefix build actions to
be able to use it)
automatic PATH/LD_LIBRARY_PATH adjustment to account for DLL/runtime lib
dependencies, so even exes with dynamically-linked library dependencies can
be run through the test system. I think it is possible to do this entirely
in Jam with some hackery.
Facilities to update boost html compiler status page
=== FTJam core requests ===
DONE In debugging output, indirect rule invocations should reflect the rule name
being invoked.
DONE Fix modulus on nesting in debug output, so my emacs stepping tools don't get
confused.
DONE-ish Expand MAXLINE for NT, possibly as described by Chris Antos.
DONE Implement a way to invert the result of a rule, so that failure becomes success.