wiki:CMakeModularizationStatus

Version 12 (modified by Douglas Gregor, 14 years ago) ( diff )

--

CMake Modularization Status

This page is used to keep track of which Boost libraries have been modularized fully and which libraries should be in the unmodularized "core". Any libraries not listed haven't been studied closely enough yet.

Modularized Libraries

The following libraries have been fully modularized, which means that (1) all of their headers are listed in a HEADERS argument to boost_library_project, and (2) are listed in the DEPENDS argument for all libraries that depend on them. This second condition can be established by re-building all of the tests after running the modularize target for that library. Once a library has been put into this list, the argument MODULARIZED should be added to its boost_library_project macro, so that it will be modularized as part of the main "modularize" target.

  • accumulators
  • asio
  • bimap
  • circular_buffer
  • date_time
  • dynamic_bitset
  • filesystem
  • fusion
  • gil
  • graph
  • interprocess
  • mpi
  • parameter
  • program_options
  • python
  • ptr_container
  • regex
  • spirit
  • statechart
  • system
  • tr1
  • units
  • wave
  • xpressive

"Core" Libraries

The following libraries are considered part of the "core" of Boost and should not be modularized at this time. Libraries may be dubbed "core" libraries due to excessive dependencies (e.g., config, type_traits), circular dependencies, or poor separation from the rest of Boost (e.g., utility). We hope that future refactoring will remove most libraries from "core" status.

  • config
  • mpl
  • preprocessor
  • type_traits
  • utility

Unexpected Dependencies

This is a simple catalog of inter-library dependencies that were a surprise. We should revisit these dependencies at some point to determine whether they are justified or whether we should try to decouple the libraries.

  • spirit -> xpressive: Spirit uses Proto, which is currently part of Xpressive. Eventually, Proto will become its own top-level library, and we'll eliminate this dependency.
  • parameter -> python: Parameter uses one of the Python detail headers, and has the header boost/parameter/python.hpp that might actually belong in the Python library itself.
Note: See TracWiki for help on using the wiki.