To support some of the newer both libraries features, namely
dep.as_shared, dep.as_static, and:
> When default_both_libraries is 'auto', both_libraries() with
> dependencies that are both_libs themselves will link with the same kind
> of library.
A partial refactor was required. The main complication is that muon
preprocesses all dependencies into flat arrays of their components (e.g.
link_with, compile_args, etc.) at the time the dependency is created.
This includes flattening both_libs into a single path pointing to either
the shared or static lib. There was already a crude system to track the
original dependency inputs when they were occasionally needed, but now
that system has been much more fleshed out. Dependency objects should
now contain all the information needed to recreate them with different
options.
A few other changes were required as part of this refactor such as
supporting an option matrix in the project tests.
- Properly support lookup methods and their ordering
- Add system dependency support
- Implement zlib dependency with some of the new features
- Update iconv/intl dependencies
- separate install functionality to install.c and
functions/kernel/install.c
- remove specialized install functions that are only used in 1 place
- implement preserve_path for push_install_targets