Many linux distros (e.g., Fedora) strongly discourage bundling or
vendoring dependencies. Many of them also include a `cxxopts-devel`
package. This patch adds support for un-vendoring `cxxopts` by:
1. `libs/cxxopts` vendored submodule build conditional on
`YOSYS_WITH_PKG_DEPS == OFF`
2. use implicit `<cxxopts.hpp>` instead of explicit hard-coded
path to vendored header file
3. conditionally provide additional implicit include path to
`cxxopts.hpp` and library dependency for `kernel/CMakeLists.txt`
Note that the current existing behavior remains the default.
Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
This commit reimplements the (no longer recommended) setuptools based
build system using a standards-based in-tree PEP517 build backend.
The implementation is partially based on
https://codeberg.org/ziglang/zig-pypi/src/branch/main/make_wheels.py
which is licensed under BSD-0-clause.
It also adds a new option `YOSYS_BUILD_PYTHON_ONLY` that is available
only if the binary or the library aren't going to be installed, which
turns off these targets entirely, as well as some dependent ones
(e.g. tests).
Co-authored-by: Mohamed Gaber <me@donn.website>