SDL: dynapi: order for a reproducible build

From 5418740c4a49b18958fe7f2c7b3f20fbbeca5b12 Mon Sep 17 00:00:00 2001
From: Christian Ehrhardt <[EMAIL REDACTED]>
Date: Mon, 2 Dec 2024 13:09:36 +0100
Subject: [PATCH] dynapi: order for a reproducible build

The objfiles of different builds show various differences in
the calls to SDL_DYNAPI_entry elements. This is generated
dynamically by gendynapi.pl which uses an unordered opendir/readdir
pair. To make the build reproducible and thereby e.g. debugging
easier change this to be used in an ordered fashion.

Fixes #11565.
---
 src/dynapi/gendynapi.pl | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/dynapi/gendynapi.pl b/src/dynapi/gendynapi.pl
index dad2bc4878b9c..0873267d31f78 100755
--- a/src/dynapi/gendynapi.pl
+++ b/src/dynapi/gendynapi.pl
@@ -50,8 +50,13 @@
 open(SDL_DYNAPI_OVERRIDES_H, '>>', $sdl_dynapi_overrides_h) or die("Can't open $sdl_dynapi_overrides_h: $!\n");
 open(SDL2_EXPORTS, '>>', $sdl2_exports) or die("Can't open $sdl2_exports: $!\n");
 
+# Ordered for reproducible builds
 opendir(HEADERS, 'include') or die("Can't open include dir: $!\n");
-while (my $d = readdir(HEADERS)) {
+my @entries = readdir(HEADERS);
+closedir(HEADERS);
+# Sort the entries
+@entries = sort @entries;
+foreach my $d (@entries) {
     next if not $d =~ /\.h\Z/;
     my $header = "include/$d";
     open(HEADER, '<', $header) or die("Can't open $header: $!\n");
@@ -143,8 +148,6 @@
     close(HEADER);
 }
 
-closedir(HEADERS);
-
 close(SDL_DYNAPI_PROCS_H);
 close(SDL_DYNAPI_OVERRIDES_H);
 close(SDL2_EXPORTS);