Replace build scripts with a Makefile

Single Makefile supports native builds (pkg-config) and cross-compilation
(CROSS_COMPILE/PREFIX env vars). Fixes -Wformat-truncation and
-Wstringop-truncation warnings at -O2 by sizing current_file to match
audio_files (256) and replacing strncpy with snprintf.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Michael Smith
2026-02-13 11:54:36 +01:00
parent 2fd764f60f
commit cbe3d67132
6 changed files with 50 additions and 40 deletions

View File

@@ -30,7 +30,7 @@ This document specifies the functional requirements for an SDL2 based media play
## 4. Design principles
- Version control (git) must be used
- Compilation should be performed by a simple shell script or batch file, not a complicated build system like make or cmake
- Compilation should be performed by a simple Makefile supporting both native and cross-compilation
- C source code files should be formatted using "Google" style with an additional change of `ColumnLimit` set to 100
- Less is more, minimize dependencies, avoid pulling in extra libraries, always talk through with owner first
- Keep it simple, apply Casey Muratori's `semantic compression` principles, don't refactor too soon or write code that's too clever for its own good
@@ -43,6 +43,10 @@ This document specifies the functional requirements for an SDL2 based media play
## 6. Changelog
### 2026-02-13 — Replace build scripts with Makefile
- **Makefile**: Replaced `build.sh` (macOS) and `build_aarch64.sh` (Linux ARM) with a single `Makefile`. Native builds use `pkg-config` to resolve SDL2 and FFmpeg flags; cross-compilation uses `CROSS_COMPILE` and `PREFIX` environment variables set by the Docker/Buildroot toolchain.
### 2026-02-13 — Raw joystick fallback for non-standard controllers
- **Joystick fallback**: When no SDL GameController mapping exists for a connected device, the joystick is now opened directly via `SDL_JoystickOpen()` as a fallback. This fixes d-pad and face button input on devices like the Anbernic retro handheld whose GUID is not in SDL's GameController database.