More improvements are afoot over at the dosbox-staging repository, which I've been chipping away at as time and health allows.
I wanted to update you before the dust settles, so anyone can provide feedback as well.
Opus handling is now managed by pkg-config (via ./configure) and OS packages (libopusfile-dev and libspeexdsp-dev), in-lieu of the previous internal Makefile handling, which now allows VisualStudio 14 to build and link cleanly.
The built-in codecs have been bumped to their latest mid-October releases (dr_flac - v0.12.2, dr_mp3 - v0.5.1, and dr_wav - v0.11.1).
Much work was done by Dave to eliminate compiler warnings and static analysis corner-cases that arose from exhaustive build permutation testing, described below.
I put together a simple script (src, docs) that installs dependencies and compiles DOSBox with various build and link options on macOS, Windows, and Linux.
Some permutations tested include:
- Windows: clang, gcc 9; 32 and 64-bit; size-optimized, and debug (8 permutations)
- MacOS: clang, gcc 9; 32 and 64-bit; link-time-optimized, size-optimized, and debug (12 permutations)
- Linux: clang, gcc 4.8, 6, 7, 8, 9; 32 and 64-bit; link-time-optimized, size-optimized, and debug (36 permutations)
You can see the current running output for these OSes here, respectively:
- Windows builds: https://github.com/dreamer/dosbox-staging/com … te_id=273406877
- MacOS builds: https://github.com/dreamer/dosbox-staging/com … te_id=273406858
- Linux builds: https://github.com/dreamer/dosbox-staging/com … te_id=273406857
I still want to add further optimizations using canned and portable profile-feedback data via GCC's AutoFDO feature.
This will let us exhaustively play-test all the major code paths (real mode, protected mode, core types, video types, audio types, .. ) and create a packaged set of feedback files that can be used to universally optimize DOSBox builds. This is how Mozilla Firefox is compiled, and you can see the benefits in the graphs here as "LTO+PGO" (LTO = link-time-optimized which the script handles, and PGO = profile feedback optimization).
The audio code has been play-tested x86_64, PowerPC, and ARM Cortex A-52 (big-endian) hardware.
This new round of improvements have been made both possible through the dosbox-staging repository created by @dreamer_.
He will be reviewing all of the above, and I'm looking forward to his second set of eyes to further improve this and catch issues.
For those with GitHub account, please feel free to contribute!
The review and feedback will be done under this merge-request: https://github.com/dreamer/dosbox-staging/pull/12