ci: add a Linux aarch64 build - #2
Open
WizzardSK wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 libretro buildbot ships no aarch64 Linux build of dosbox-core, so the core can't be installed from RetroArch's Core Downloader on ARM64 Linux machines (ARM Chromebooks, SBCs, ARM laptops). Nothing blocks it: the build already knows this architecture - on an aarch64 host it configures itself with
-DC_DYNREC -DC_TARGETCPU="ARMV8LE", i.e. the ARMv8 dynrec backend - andandroid-arm64-v8aalready builds these sources for ARM64.The job mirrors
libretro-build-linux-x64:plus the matching
/linux-aarch64.ymltemplate include.What I verified on aarch64 (postmarketOS on a Snapdragon 670 Chromebook, glibc): every dosbox-core source file - core, libretro glue, voodoo, fluidsynth/BASSMIDI/MT-32 midi backends - compiles cleanly with no source changes and with the ARMv8 dynrec selected, and the bundled dependencies (SDL 1.2, SDL_net, fluidsynth, munt, ogg, vorbis, opus, opusfile, FLAC, libsndfile) all build for aarch64 too.
What I could not finish, and why it isn't an ARM problem: the final link needs
deps_bin/lib/libmpg123.a, and bundled mpg123 doesn't compile under my local GCC 15 -deps/mpg123/src/compat/compat.c:500assigns avoid (*)(void)to a__sighandler_t, which GCC 14+ makes a hard error. The buildbot images use GCC 12, where that's only a warning, so CI should be unaffected. Verifying via the CI job on this PR is the way to confirm.One unrelated thing I noticed while doing this: with
BUNDLED_AUDIO_CODECS=1(the default),Makefile.libretro:266always linkslibmpg123.aandlibopusfile.a, but neither is a prerequisite of anything -$(OBJECTS)only depends on$(FLUIDSYNTH) $(MUNT) $(SDLNET), and$(LIBMPG123)/$(OPUSFILE)are reachable only through the phonympg123/opusfiletargets. So a clean checkout built with plainmake -f Makefile.libretro platform=unixfails at link on any architecture until those two are built by hand. Not something this PR touches, but you may want to add them to the$(OBJECTS)prerequisite line.