Experimental Meson build for MMDevice and MMCore #416
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The immediate benefit is that this allows us to run the unit tests for MMDevice and MMCore, which we've never had running in CI previously (and were never run on Windows at all). See the included GitHub workflow.
This build is not (so far) appropriate for building MMCore for distribution or actual use. That will come eventually.
This has no effect on the existing Visual Studio and Autoconf/Automake builds, which need to be kept maintained.
This is a first step toward micro-manager/micro-manager#1392. It's a little out of order compared to the plan outlined there (which had MMCoreJ first); I intend to create a separate overview issue (in this repo) for the C++ parts of the build modernization, with some updates to the plan. The reason for adding Meson scripts to MMDevice and MMCore first is so that we don't need to repeat the list of source (.cpp) files in more places than necessary (i.e., MMCoreJ and pymmcore).
For anyone trying it locally: in order to build MMCore you need to copy MMDevice/ into MMCore/subprojects/ before setting up Meson. This is because Meson cannot use subprojects in arbitrary locations (which is a good thing, once you adapt). In our case, we can work around this by copying (or symlinking) projects as needed until we start restructuring Git repositories. Once MMDevice and MMCore have their own repository, Meson can fetch them automatically (or we can use Git submodules).
Marking as draft until the CI passes.