Add docker container with toolchain and libraries to build aarch64 binary

This commit is contained in:
Michael Smith
2026-02-12 17:01:12 +01:00
parent e3a2bca794
commit 8f8cbc97c7
19 changed files with 3337 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
diff --git forkSrcPrefix/src/video/fbcon/SDL_fbkeys.h forkDstPrefix/src/video/fbcon/SDL_fbkeys.h
index 2b01b6b2e3588426e50dbf109e09e0fdb8755091..4acd13df4302185d27964859a58f8b09c25f13f3 100644
--- forkSrcPrefix/src/video/fbcon/SDL_fbkeys.h
+++ forkDstPrefix/src/video/fbcon/SDL_fbkeys.h
@@ -114,6 +114,15 @@
#define SCANCODE_F11 87
#define SCANCODE_F12 88
+/* RG35XX */
+#define SCANCODE_KATAKANA 90
+#define SCANCODE_HIRAGANA 91
+#define SCANCODE_HENKAN 92
+#define SCANCODE_KATAKANAHIRAGANA 93
+#define SCANCODE_MUHENKAN 94
+#define SCANCODE_KPJPCOMMA 95
+#define SCANCODE_POWER 116
+
#define SCANCODE_KEYPADENTER 96
#define SCANCODE_RIGHTCONTROL 97
#define SCANCODE_CONTROL 97
diff --git forkSrcPrefix/include/SDL_keysym.h forkDstPrefix/include/SDL_keysym.h
index f2ad12b81ef5725e3d975c9ad3a775fa50aa6cb6..7c348322a4d0434f4cd7349fdbd62026d4e65911 100644
--- forkSrcPrefix/include/SDL_keysym.h
+++ forkDstPrefix/include/SDL_keysym.h
@@ -296,6 +296,19 @@ typedef enum {
SDLK_UNDO = 322, /**< Atari keyboard has Undo */
/*@}*/
+ /** @name RG35XX keys */
+ /*@{*/
+ SDLK_KATAKANA = 323,
+ SDLK_HIRAGANA = 324,
+ SDLK_HENKAN = 325,
+ SDLK_KATAKANAHIRAGANA = 326,
+ SDLK_MUHENKAN = 327,
+ SDLK_KP_JPCOMMA = 328,
+ SDLK_KP_SLASH = 329,
+ SDLK_CURSORBLOCKUP = 330,
+ SDLK_CURSORBLOCKDOWN = 331,
+ /*@}*/
+
/* Add any other keys here */
SDLK_LAST
diff --git forkSrcPrefix/src/video/fbcon/SDL_fbevents.c forkDstPrefix/src/video/fbcon/SDL_fbevents.c
index 5e369a4a89c3157206abed1f4c4b8e27aef17024..c15d1b85b7f06757b24fb7f17dc73e6bab1c2148 100644
--- forkSrcPrefix/src/video/fbcon/SDL_fbevents.c
+++ forkDstPrefix/src/video/fbcon/SDL_fbevents.c
@@ -1133,6 +1133,41 @@ void FB_InitOSKeymap(_THIS)
case 127:
keymap[i] = SDLK_MENU;
break;
+
+ /* RG35XX */
+ case SCANCODE_KATAKANA:
+ keymap[i] = SDLK_KATAKANA;
+ break;
+ case SCANCODE_HIRAGANA:
+ keymap[i] = SDLK_HIRAGANA;
+ break;
+ case SCANCODE_HENKAN:
+ keymap[i] = SDLK_HENKAN;
+ break;
+ case SCANCODE_KATAKANAHIRAGANA:
+ keymap[i] = SDLK_KATAKANAHIRAGANA;
+ break;
+ case SCANCODE_MUHENKAN:
+ keymap[i] = SDLK_MUHENKAN;
+ break;
+ case SCANCODE_KPJPCOMMA:
+ keymap[i] = SDLK_KP_JPCOMMA;
+ break;
+ case SCANCODE_KEYPADENTER:
+ keymap[i] = SDLK_KP_ENTER;
+ break;
+ case SCANCODE_CURSORBLOCKUP:
+ keymap[i] = SDLK_CURSORBLOCKUP;
+ break;
+ case SCANCODE_CURSORBLOCKDOWN:
+ keymap[i] = SDLK_CURSORBLOCKDOWN;
+ break;
+ case SCANCODE_POWER: // this doesn't stick so we override below
+ keymap[i] = SDLK_POWER; // leaving this in just in case
+ break;
+
+
+
/* this should take care of all standard ascii keys */
default:
keymap[i] = KVAL(vga_keymap[0][i]);
@@ -1208,6 +1243,8 @@ void FB_InitOSKeymap(_THIS)
default: break;
}
}
+
+ keymap[116] = SDLK_POWER; // requires hard override for some reason
}
static SDL_keysym *TranslateKey(int scancode, SDL_keysym *keysym)

View File

@@ -0,0 +1,35 @@
--- a/src/video/fbcon/SDL_fbvideo.c
+++ b/src/video/fbcon/SDL_fbvideo.c
@@ -1907,15 +1907,12 @@
static void FB_VideoQuit(_THIS)
{
int i, j;
+ const char *dontClearPixels = SDL_getenv("SDL_FBCON_DONT_CLEAR");
if ( this->screen ) {
- /* Clear screen and tell SDL not to free the pixels */
-
- const char *dontClearPixels = SDL_getenv("SDL_FBCON_DONT_CLEAR");
-
/* If the framebuffer is not to be cleared, make sure that we won't
* display the previous frame when disabling double buffering. */
- if ( dontClearPixels && flip_page == 0 ) {
+ if ( dontClearPixels && (this->screen->flags & SDL_DOUBLEBUF) && flip_page == 0 ) {
SDL_memcpy(flip_address[0], flip_address[1], this->screen->pitch * this->screen->h);
}
@@ -1969,7 +1966,13 @@
/* Restore the original video mode and palette */
if ( FB_InGraphicsMode(this) ) {
- FB_RestorePalette(this);
+ if (dontClearPixels) {
+ /* Restore only panning, keep current mode */
+ ioctl(console_fd, FBIOGET_VSCREENINFO, &saved_vinfo);
+ saved_vinfo.yoffset = saved_vinfo.xoffset = 0;
+ } else {
+ FB_RestorePalette(this);
+ }
ioctl(console_fd, FBIOPUT_VSCREENINFO, &saved_vinfo);
}