SDL: ci+n3ds: avoid apt-get package manager (58d07)

From 58d0702948473802b6ebe4ee60521e1027c285df Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 26 Jul 2025 13:53:26 +0200
Subject: [PATCH] ci+n3ds: avoid apt-get package manager

- use Unix Makefiles (with parallelization) CMake generator
- use binutils strings binary from devkitpro

(cherry picked from commit e6d200e51c88a0406c770c52bf7f415181243189)
---
 .github/workflows/create-test-plan.py | 11 +++++++++--
 .github/workflows/generic.yml         |  6 +++---
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/create-test-plan.py b/.github/workflows/create-test-plan.py
index a137889c81a7d..5e2ab02800542 100755
--- a/.github/workflows/create-test-plan.py
+++ b/.github/workflows/create-test-plan.py
@@ -174,6 +174,7 @@ class JobDetails:
     brew_packages: list[str] = dataclasses.field(default_factory=list)
     cmake_toolchain_file: str = ""
     cmake_arguments: list[str] = dataclasses.field(default_factory=list)
+    cmake_generator: str = "Ninja"
     cmake_build_arguments: list[str] = dataclasses.field(default_factory=list)
     clang_tidy: bool = True
     cppflags: list[str] = dataclasses.field(default_factory=list)
@@ -222,6 +223,7 @@ class JobDetails:
     check_sources: bool = False
     setup_python: bool = False
     pypi_packages: list[str] = dataclasses.field(default_factory=list)
+    binutils_strings: str = "strings"
 
     def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
         data = {
@@ -255,6 +257,7 @@ def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
             "cflags": my_shlex_join(self.cppflags + self.cflags),
             "cxxflags": my_shlex_join(self.cppflags + self.cxxflags),
             "ldflags": my_shlex_join(self.ldflags),
+            "cmake-generator": self.cmake_generator,
             "cmake-toolchain-file": self.cmake_toolchain_file,
             "clang-tidy": self.clang_tidy,
             "cmake-arguments": my_shlex_join(self.cmake_arguments),
@@ -289,6 +292,7 @@ def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
             "check-sources": self.check_sources,
             "setup-python": self.setup_python,
             "pypi-packages": my_shlex_join(self.pypi_packages),
+            "binutils-strings": self.binutils_strings,
         }
         return {k: v for k, v in data.items() if v != ""}
 
@@ -675,13 +679,16 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDeta
             job.shared_lib = SharedLibType.SO_0
             job.static_lib = StaticLibType.A
         case SdlPlatform.N3ds:
-            job.ccache = True
+            job.cmake_generator = "Unix Makefiles"
+            job.cmake_build_arguments.append("-j$(nproc)")
+            job.ccache = False
             job.shared = False
-            job.apt_packages = ["ccache", "ninja-build", "binutils"]
+            job.apt_packages = []
             job.clang_tidy = False
             job.run_tests = False
             job.cc_from_cmake = True
             job.cmake_toolchain_file = "${DEVKITPRO}/cmake/3DS.cmake"
+            job.binutils_strings = "/opt/devkitpro/devkitARM/bin/arm-none-eabi-strings"
             job.static_lib = StaticLibType.A
         case SdlPlatform.Msys2:
             job.ccache = True
diff --git a/.github/workflows/generic.yml b/.github/workflows/generic.yml
index 9776431e3da83..c2846bad5a420 100644
--- a/.github/workflows/generic.yml
+++ b/.github/workflows/generic.yml
@@ -201,7 +201,7 @@ jobs:
         #shell: ${{ matrix.platform.shell }}
         run: |
           ${{ matrix.platform.source-cmd }}
-          ${{ matrix.platform.cmake-config-emulator }} cmake -S . -B build -GNinja \
+          ${{ matrix.platform.cmake-config-emulator }} cmake -S . -B build -G "${{ matrix.platform.cmake-generator }}" \
             -Wdeprecated -Wdev -Werror \
             ${{ matrix.platform.cmake-toolchain-file != '' && format('-DCMAKE_TOOLCHAIN_FILE={0}', matrix.platform.cmake-toolchain-file) || '' }} \
             -DSDL_WERROR=${{ matrix.platform.werror }} \
@@ -232,9 +232,9 @@ jobs:
         run: |
           echo "This should show us the SDL_REVISION"
           echo "Shared library:"
-          ${{ (matrix.platform.shared-lib && format('strings build/{0} | grep "Github Workflow"', matrix.platform.shared-lib)) || 'echo "<Shared library not supported by platform>"' }}
+          ${{ (matrix.platform.shared-lib && format('{0} build/{1} | grep "Github Workflow"', matrix.platform.binutils-strings, matrix.platform.shared-lib)) || 'echo "<Shared library not supported by platform>"' }}
           echo "Static library:"
-          ${{ (matrix.platform.static-lib && format('strings build/{0} | grep "Github Workflow"', matrix.platform.static-lib)) || 'echo "<Static library not supported by platform>"' }}
+          ${{ (matrix.platform.static-lib && format('{0} build/{1} | grep "Github Workflow"', matrix.platform.binutils-strings, matrix.platform.static-lib)) || 'echo "<Static library not supported by platform>"' }}
       - name: 'Run build-time tests (CMake)'
         id: tests
         if: ${{ !matrix.platform.no-cmake && matrix.platform.run-tests }}