Merge Tenacity's build system
References #43.
Drafted for now because more commits need to be cherry picked. Right now, this isn't really Tenacity's build system, but we do take some commits from Tenacity regarding build system modifications.
- [x] I made sure the code compiles on my machine
- [x] I made sure there are no unnecessary changes in the code
- [x] I made sure the title of the PR reflects the core meaning of the issue you are solving
- [x] I made sure the commit message(s) contain a description and answer the question "Why do those changes fix that particular issue?" or "Why are those changes really necessary as improvements?"
:tada:

After merging this pull request, we can continue with porting Saucedacity to Qt. This has been a long time in the making.
But let's not get too excited yet. I still need to do testing on Windows.
Edit: Just to clarify, #50 should be merged first before this gets merged.
Latest Status
- Saucedacity builds on Pop!_OS 22.04 against system libraries (including CodeLite's wxWidgets, which is wxWidgets 3.2.0). However, Saucedacity reports a version of "0.0.0".
- Using vcpkg does not work.
- Using ccache does not work. This is apparently because some wxWidgets classes are not properly defined.
Overall Status: Broken but it can build somewhere...somewhat.
However, Saucedacity reports a version of "0.0.0".
Keep in mind, we define our version in CMake instead of a hardcoded header.
Awesome work! After this is merged, I'll focus on creating the flatpak.
Ah yes. I broke things after a rebase...
The point of the rebase: to test out cherry-picking a Tenacity commit refactoring the AboutDialog (and also creating BuildInfo.h). If that didn't work, then...benefit of the doubt I guess.
What's up: FFmpegFunctions.h is not found. I'll have to investigate this issue.
Differences Between Tenacity's Original Build System and This Build System
-
We will carry on our own libraries (e.g. lib-basic-ui) and they will be updated for this new build system.
-
wxWidgets 3.0 will not be supported. This is more than a build system change, but this should be documented here because nothing will change in this regard after this PR is merged.
I might update this list as I come up with more differences
Ah yes. I broke things after a rebase...
The point of the rebase: to test out cherry-picking a Tenacity commit refactoring the AboutDialog (and also creating BuildInfo.h). If that didn't work, then...benefit of the doubt I guess.
What's up: FFmpegFunctions.h is not found. I'll have to investigate this issue.
Everything is working again. I'll be trying new commits soon.
Did an interactive rebase that removed a few commits. Hopefully this PR looks nicer now.
Unfortunately, things are currently broken again. I'll need to investigate this a little later.
I'm going to redo this PR with a somewhat different scope.