From: kub Date: Tue, 5 Dec 2023 21:13:00 +0000 (+0100) Subject: build, odbeta and opendingux cleanup X-Git-Tag: v2.00~144 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=58fc34b1d67b5622e9f9140456398ac046c0c1d8;p=picodrive.git build, odbeta and opendingux cleanup --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9965cf9..af1f4392 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -128,7 +128,7 @@ jobs: run: | git config --global --add safe.directory $PWD ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD) - ./configure --platform=gcw0 + ./configure --platform=opendingux-gcw0 make -j2 mv PicoDrive.opk PicoDrive-gcw0-$ver.opk - name: artifacts @@ -210,7 +210,7 @@ jobs: run: | git config --global --add safe.directory $PWD ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD) - ./configure --platform=gcw0 --platform=odbeta + ./configure --platform=odbeta make -j2 mv PicoDrive.opk PicoDrive-odbeta-gcw0-$ver.opk - name: artifacts @@ -230,7 +230,7 @@ jobs: run: | git config --global --add safe.directory $PWD ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD) - ./configure --platform=opendingux --platform=odbeta + ./configure --platform=odbeta make -j2 mv PicoDrive.opk PicoDrive-odbeta-lepus-$ver.opk - name: artifacts @@ -250,7 +250,7 @@ jobs: run: | git config --global --add safe.directory $PWD ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD) - ./configure --platform=opendingux --platform=odbeta + ./configure --platform=odbeta make -j2 mv PicoDrive.opk PicoDrive-odbeta-rg99-$ver.opk - name: artifacts diff --git a/Makefile b/Makefile index 2ab08f59..bd8a5b5c 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ ifneq ($(call chkCCflag, -fipa-ra),) # gcc >= 5 CFLAGS += $(call chkCCflag, -flto -fipa-pta -fipa-ra) else # these improve execution speed on 32bit arm/mips with gcc pre-5 toolchains -CFLAGS += -fno-caller-saves -fno-guess-branch-probability -fno-regmove +CFLAGS += $(call chkCCflag, -fno-caller-saves -fno-guess-branch-probability -fno-regmove) # very old gcc toolchains may not have these options CFLAGS += $(call chkCCflag, -fno-tree-loop-if-convert -fipa-pta -fno-ipa-cp) endif @@ -172,7 +172,7 @@ endif OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME OBJS += platform/common/plat_sdl.o platform/common/input_sdlkbd.o OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o -OBJS += platform/libpicofe/plat_dummy.o platform/libpicofe/linux/plat.o +OBJS += platform/libpicofe/linux/plat.o USE_FRONTEND = 1 endif ifeq "$(PLATFORM)" "generic" @@ -189,7 +189,7 @@ else OBJS += platform/common/plat_sdl.o platform/common/inputmap_kbd.o endif OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o -OBJS += platform/libpicofe/plat_dummy.o platform/libpicofe/linux/plat.o +OBJS += platform/libpicofe/linux/plat.o USE_FRONTEND = 1 endif ifeq "$(PLATFORM)" "pandora" diff --git a/configure b/configure index 4209784f..fd2d9a7e 100755 --- a/configure +++ b/configure @@ -39,7 +39,7 @@ check_define() # "" means "autodetect". # TODO this is annoyingly messy. should have platform and device -platform_list="generic pandora gph dingux retrofw gcw0 opendingux odbeta miyoo rpi1 rpi2 psp" +platform_list="generic pandora gph dingux retrofw opendingux[-gcw0] odbeta[-gcw0] miyoo rpi1 rpi2 psp" platform="generic" sound_driver_list="oss alsa sdl" sound_drivers="" @@ -73,7 +73,7 @@ fail() set_platform() { platform=$1 - CFLAGS="$CFLAGS -D__`echo $platform | tr '[a-z]' '[A-Z]'`__" + CFLAGS="$CFLAGS -D__`echo ${platform%-*} | tr '[a-z]' '[A-Z]'`__" case "$platform" in rpi1) MFLAGS="-mcpu=arm1176jzf-s -mfpu=vfp" @@ -102,11 +102,12 @@ set_platform() MFLAGS="-march=mips32" platform="opendingux" ;; - opendingux | gcw0) + opendingux | opendingux-gcw0) # more modern devices using opendingux, with Ingenic MIPS JZ4770 or newer sound_drivers="sdl" # mostly based on opendingux for gcw0 CFLAGS="$CFLAGS -D__OPENDINGUX__" + [ "${platform#*gcw0}" = "" ] && CFLAGS="$CFLAGS -D__GCW0__" MFLAGS="-march=mips32r2" platform="opendingux" ;; @@ -117,9 +118,11 @@ set_platform() MFLAGS="-mcpu=arm926ej-s -marm" platform="opendingux" ;; - odbeta) + odbeta | odbeta-gcw0) # various devices with opendingux beta, arch flags from toolchain default + sound_drivers="sdl" CFLAGS="$CFLAGS -D__OPENDINGUX__" + [ "${platform#*gcw0}" = "" ] && CFLAGS="$CFLAGS -D__GCW0__" MFLAGS="" # toolchains are arch specific platform="opendingux" ;; diff --git a/platform/common/emu.h b/platform/common/emu.h index db084022..287b43d5 100644 --- a/platform/common/emu.h +++ b/platform/common/emu.h @@ -180,6 +180,7 @@ void pemu_finalize_frame(const char *fps, const char *notice_msg); void pemu_sound_start(void); +int plat_parse_arg(int argc, char *argv[], int *x); void plat_early_init(void); void plat_init(void); void plat_finish(void); diff --git a/platform/common/inputmap_kbd.c b/platform/common/inputmap_kbd.c index e34fd9db..b6b32be9 100644 --- a/platform/common/inputmap_kbd.c +++ b/platform/common/inputmap_kbd.c @@ -3,6 +3,7 @@ #include "../libpicofe/input.h" #include "../libpicofe/in_sdl.h" +#include "../libpicofe/plat.h" #include "../common/input_pico.h" #include "../common/plat_sdl.h" @@ -33,7 +34,7 @@ const struct in_default_bind in_sdl_defbinds[] = { { 0, 0, 0 } }; -const struct menu_keymap in_sdl_key_map[] = { +const struct menu_keymap _in_sdl_key_map[] = { { SDLK_UP, PBTN_UP }, { SDLK_DOWN, PBTN_DOWN }, { SDLK_LEFT, PBTN_LEFT }, @@ -45,9 +46,10 @@ const struct menu_keymap in_sdl_key_map[] = { { SDLK_TAB, PBTN_R }, { SDLK_BACKSPACE, PBTN_L }, }; -const int in_sdl_key_map_sz = sizeof(in_sdl_key_map) / sizeof(in_sdl_key_map[0]); +const int in_sdl_key_map_sz = sizeof(_in_sdl_key_map) / sizeof(_in_sdl_key_map[0]); +const struct menu_keymap *in_sdl_key_map = _in_sdl_key_map; -const struct menu_keymap in_sdl_joy_map[] = { +const struct menu_keymap _in_sdl_joy_map[] = { { SDLK_UP, PBTN_UP }, { SDLK_DOWN, PBTN_DOWN }, { SDLK_LEFT, PBTN_LEFT }, @@ -58,6 +60,11 @@ const struct menu_keymap in_sdl_joy_map[] = { { SDLK_WORLD_2, PBTN_MA2 }, { SDLK_WORLD_3, PBTN_MA3 }, }; -const int in_sdl_joy_map_sz = sizeof(in_sdl_joy_map) / sizeof(in_sdl_joy_map[0]); +const int in_sdl_joy_map_sz = sizeof(_in_sdl_joy_map) / sizeof(_in_sdl_joy_map[0]); +const struct menu_keymap *in_sdl_joy_map = _in_sdl_joy_map; -const char * const (*in_sdl_key_names)[SDLK_LAST] = NULL; +const char * const *in_sdl_key_names = NULL; + +void plat_target_setup_input(void) +{ +} diff --git a/platform/common/main.c b/platform/common/main.c index e503edc1..8e6987e4 100644 --- a/platform/common/main.c +++ b/platform/common/main.c @@ -28,7 +28,7 @@ void parse_cmd_line(int argc, char *argv[]) { int x, unrecognized = 0; - for (x = 1; x < argc; x++) + for (x = 1; x < argc && !unrecognized; x++) { if (argv[x][0] == '-') { @@ -47,15 +47,13 @@ void parse_cmd_line(int argc, char *argv[]) if (x+2 < argc) { pdb_net_connect(argv[x+1], argv[x+2]); x += 2; } } else { - unrecognized = 1; - break; + unrecognized = plat_parse_arg(argc, argv, &x); } } else { FILE *f = fopen(argv[x], "rb"); if (f) { fclose(f); rom_fname_reload = argv[x]; - engineState = PGS_ReloadRom; } else unrecognized = 1; @@ -95,12 +93,9 @@ int main(int argc, char *argv[]) emu_init(); - engineState = PGS_Menu; + engineState = rom_fname_reload ? PGS_ReloadRom : PGS_Menu; plat_video_menu_enter(0); - if (argc > 1) - parse_cmd_line(argc, argv); - if (engineState == PGS_ReloadRom) { plat_video_menu_begin(); diff --git a/platform/common/plat_sdl.c b/platform/common/plat_sdl.c index 55280614..c47ef1b7 100644 --- a/platform/common/plat_sdl.c +++ b/platform/common/plat_sdl.c @@ -28,10 +28,58 @@ static struct area { int w, h; } area; static struct in_pdata in_sdl_platform_data = { .defbinds = in_sdl_defbinds, - .key_map = in_sdl_key_map, - .joy_map = in_sdl_joy_map, }; +struct plat_target plat_target; + +#if defined __MIYOO__ +const char *plat_device = "miyoo"; +#elif defined __GCW0__ +const char *plat_device = "gcw0"; +#elif defined __RETROFW__ +const char *plat_device = "retrofw"; +#elif defined __DINGUX__ +const char *plat_device = "dingux"; +#else +const char *plat_device = ""; +#endif + +int plat_parse_arg(int argc, char *argv[], int *x) +{ +#if defined __OPENDINGUX__ + if (*plat_device == '\0' && strcasecmp(argv[*x], "-device") == 0) { + plat_device = argv[++(*x)]; + return 0; + } +#endif + return 1; +} + +void plat_early_init(void) +{ +} + +int plat_target_init(void) +{ +#if defined __ODBETA__ + if (*plat_device == '\0') { + /* ODbeta should always have a device tree, get the model info from there */ + FILE *f = fopen("/proc/device-tree/compatible", "r"); + if (f) { + char buf[10]; + int c = fread(buf, 1, sizeof(buf), f); + if (strncmp(buf, "gcw,", 4) == 0) + plat_device = "gcw0"; + } + } +#endif + return 0; +} + +void plat_target_finish(void) +{ +} + /* YUV stuff */ static int yuv_ry[32], yuv_gy[32], yuv_by[32]; static unsigned char yuv_u[32 * 2], yuv_v[32 * 2]; @@ -323,10 +371,6 @@ void plat_video_loop_prepare(void) plat_video_set_buffer(g_screen_ptr); } -void plat_early_init(void) -{ -} - static void plat_sdl_resize(int w, int h) { // take over new settings @@ -392,9 +436,12 @@ void plat_init(void) g_screen_ppitch = 320; g_screen_ptr = shadow_fb; + plat_target_setup_input(); in_sdl_platform_data.kmap_size = in_sdl_key_map_sz, + in_sdl_platform_data.key_map = in_sdl_key_map, in_sdl_platform_data.jmap_size = in_sdl_joy_map_sz, - in_sdl_platform_data.key_names = *in_sdl_key_names, + in_sdl_platform_data.joy_map = in_sdl_joy_map, + in_sdl_platform_data.key_names = in_sdl_key_names, in_sdl_init(&in_sdl_platform_data, plat_sdl_event_handler); in_probe(); diff --git a/platform/common/plat_sdl.h b/platform/common/plat_sdl.h index 0bbe2bd3..aefa8076 100644 --- a/platform/common/plat_sdl.h +++ b/platform/common/plat_sdl.h @@ -1,9 +1,10 @@ extern const struct in_default_bind in_sdl_defbinds[]; -extern const struct menu_keymap in_sdl_key_map[]; +extern const struct menu_keymap *in_sdl_key_map; extern const int in_sdl_key_map_sz; -extern const struct menu_keymap in_sdl_joy_map[]; +extern const struct menu_keymap *in_sdl_joy_map; extern const int in_sdl_joy_map_sz; -extern const char * const (*in_sdl_key_names)[SDLK_LAST]; +extern const char * const *in_sdl_key_names; +extern const char *plat_device; void linux_menu_init(void); diff --git a/platform/gp2x/plat.c b/platform/gp2x/plat.c index b25ce850..96e9be09 100644 --- a/platform/gp2x/plat.c +++ b/platform/gp2x/plat.c @@ -184,6 +184,11 @@ void *plat_mem_get_for_drc(size_t size) return NULL; } +int plat_parse_arg(int argc, char *argv[], int *x) +{ + return 1; +} + void plat_early_init(void) { // just use gettimeofday until plat_init() diff --git a/platform/opendingux/inputmap.c b/platform/opendingux/inputmap.c index a8af36b2..8df598d6 100644 --- a/platform/opendingux/inputmap.c +++ b/platform/opendingux/inputmap.c @@ -1,10 +1,14 @@ +#include #include +#include #include #include "../libpicofe/input.h" #include "../libpicofe/in_sdl.h" +#include "../libpicofe/plat.h" #include "../common/input_pico.h" #include "../common/plat_sdl.h" +#include "../common/emu.h" const struct in_default_bind in_sdl_defbinds[] = { { SDLK_UP, IN_BINDTYPE_PLAYER12, GBTN_UP }, @@ -24,26 +28,22 @@ const struct in_default_bind in_sdl_defbinds[] = { { 0, 0, 0 } }; -const struct menu_keymap in_sdl_key_map[] = { +struct menu_keymap _in_sdl_key_map[] = { { SDLK_UP, PBTN_UP }, { SDLK_DOWN, PBTN_DOWN }, { SDLK_LEFT, PBTN_LEFT }, { SDLK_RIGHT, PBTN_RIGHT }, -#if defined(__MIYOO__) - { SDLK_LALT, PBTN_MOK }, - { SDLK_LCTRL, PBTN_MBACK }, -#else { SDLK_LCTRL, PBTN_MOK }, { SDLK_LALT, PBTN_MBACK }, -#endif { SDLK_SPACE, PBTN_MA2 }, { SDLK_LSHIFT, PBTN_MA3 }, { SDLK_TAB, PBTN_L }, { SDLK_BACKSPACE, PBTN_R }, }; -const int in_sdl_key_map_sz = sizeof(in_sdl_key_map) / sizeof(in_sdl_key_map[0]); +const int in_sdl_key_map_sz = sizeof(_in_sdl_key_map) / sizeof(_in_sdl_key_map[0]); +const struct menu_keymap *in_sdl_key_map = _in_sdl_key_map; -const struct menu_keymap in_sdl_joy_map[] = { +const struct menu_keymap _in_sdl_joy_map[] = { { SDLK_UP, PBTN_UP }, { SDLK_DOWN, PBTN_DOWN }, { SDLK_LEFT, PBTN_LEFT }, @@ -54,49 +54,81 @@ const struct menu_keymap in_sdl_joy_map[] = { { SDLK_WORLD_2, PBTN_MA2 }, { SDLK_WORLD_3, PBTN_MA3 }, }; -const int in_sdl_joy_map_sz = sizeof(in_sdl_joy_map) / sizeof(in_sdl_joy_map[0]); +const int in_sdl_joy_map_sz = sizeof(_in_sdl_joy_map) / sizeof(_in_sdl_joy_map[0]); +const struct menu_keymap *in_sdl_joy_map = _in_sdl_joy_map; -const char * const _in_sdl_key_names[SDLK_LAST] = { +const char * _in_sdl_key_names[SDLK_LAST] = { + /* common */ [SDLK_UP] = "UP", [SDLK_DOWN] = "DOWN", [SDLK_LEFT] = "LEFT", [SDLK_RIGHT] = "RIGHT", -#if defined(__MIYOO__) - [SDLK_LALT] = "A", - [SDLK_LCTRL] = "B", -#else [SDLK_LCTRL] = "A", [SDLK_LALT] = "B", -#endif -#if defined(__GCW0__) || defined(__MIYOO__) - [SDLK_LSHIFT] = "X", - [SDLK_SPACE] = "Y", -#else [SDLK_LSHIFT] = "Y", [SDLK_SPACE] = "X", -#endif [SDLK_RETURN] = "START", [SDLK_ESCAPE] = "SELECT", - -#if defined(__MIYOO__) - [SDLK_TAB] = "L1", - [SDLK_BACKSPACE] = "R1", - [SDLK_RALT] = "L2", - [SDLK_RSHIFT] = "R2", - [SDLK_RCTRL] = "RESET", -#elif defined(__GCW0__) || defined(__DINGUX__) || defined(__RETROFW__) - [SDLK_TAB] = "L", - [SDLK_BACKSPACE] = "R", - [SDLK_POWER] = "POWER", - [SDLK_PAUSE] = "LOCK", -#else [SDLK_TAB] = "L1", [SDLK_BACKSPACE] = "R1", + + /* opendingux rg, gkd etc */ [SDLK_PAGEUP] = "L2", [SDLK_PAGEDOWN] = "R2", [SDLK_KP_DIVIDE] = "L3", [SDLK_KP_PERIOD] = "R3", [SDLK_HOME] = "POWER", -#endif + /* gcw0 */ + [SDLK_POWER] = "POWER", + [SDLK_PAUSE] = "LOCK", + /* miyoo */ + [SDLK_RALT] = "L2", + [SDLK_RSHIFT] = "R2", + [SDLK_RCTRL] = "RESET", }; -const char * const (*in_sdl_key_names)[SDLK_LAST] = &_in_sdl_key_names; +const char * const *in_sdl_key_names = _in_sdl_key_names; + + +static void nameset(int x1, const char *name) +{ + _in_sdl_key_names[x1] = name; +} + +static void nameswap(int x1, int x2) +{ + const char **p = &_in_sdl_key_names[x1]; + const char **q = &_in_sdl_key_names[x2]; + const char *t = *p; *p = *q; *q = t; +} + +static void keyswap(int k1, int k2) +{ + int x1, x2, t; + + for (x1 = in_sdl_key_map_sz-1; x1 >= 0; x1--) + if (_in_sdl_key_map[x1].key == k1) break; + for (x2 = in_sdl_key_map_sz-1; x2 >= 0; x2--) + if (_in_sdl_key_map[x2].key == k2) break; + if (x1 >= 0 && x2 >= 0) { + struct menu_keymap *p = &_in_sdl_key_map[x1]; + struct menu_keymap *q = &_in_sdl_key_map[x2]; + t = p->pbtn; p->pbtn = q->pbtn; q->pbtn = t; + } +} + +void plat_target_setup_input(void) +{ + if (strcmp(plat_device, "miyoo") == 0) { + /* swapped A/B and X/Y keys */ + keyswap(SDLK_LALT, SDLK_LCTRL); + nameswap(SDLK_LALT, SDLK_LCTRL); + nameswap(SDLK_SPACE, SDLK_LSHIFT); + } else if (strcmp(plat_device, "gcw0") == 0) { + /* swapped X/Y keys, single L/R keys */ + nameswap(SDLK_SPACE, SDLK_LSHIFT); + nameset(SDLK_TAB, "L"); nameset(SDLK_BACKSPACE, "R"); + } else if (strcmp(plat_device, "retrofw") == 0 || strcmp(plat_device, "dingux") == 0) { + /* single L/R keys */ + nameset(SDLK_TAB, "L"); nameset(SDLK_BACKSPACE, "R"); + } +} diff --git a/platform/pandora/plat.c b/platform/pandora/plat.c index 3b2af544..be1f5781 100644 --- a/platform/pandora/plat.c +++ b/platform/pandora/plat.c @@ -445,6 +445,11 @@ void *plat_mem_get_for_drc(size_t size) return NULL; } +int plat_parse_arg(int argc, char *argv[], int *x) +{ + return 1; +} + void plat_early_init(void) { } diff --git a/platform/psp/plat.c b/platform/psp/plat.c index 9832bd10..271d35dd 100644 --- a/platform/psp/plat.c +++ b/platform/psp/plat.c @@ -122,6 +122,12 @@ void plat_video_menu_leave(void) plat_video_set_buffer(g_screen_ptr); } +/* check arg at index x */ +int plat_parse_arg(int argc, char *argv[], int *x) +{ + return 1; +} + /* Preliminary initialization needed at program start */ void plat_early_init(void) { diff --git a/platform/win32/plat.c b/platform/win32/plat.c index 2c82ef7e..f275010d 100644 --- a/platform/win32/plat.c +++ b/platform/win32/plat.c @@ -20,6 +20,11 @@ static unsigned short screen_buff[320 * 240]; const char *renderer_names[] = { NULL }; const char *renderer_names32x[] = { NULL }; +int plat_parse_arg(int argc, char *argv[], int *x) +{ + return 1; +} + void plat_init(void) { g_screen_ptr = (void *)screen_buff; diff --git a/tools/release.sh b/tools/release.sh index f431c535..d5d134ea 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -11,7 +11,7 @@ # gph: ghcr.io/irixxxx/toolchain-gp2x # dingux: ghcr.io/irixxxx/toolchain-dingux # retrofw: ghcr.io/irixxxx/toolchain-retrofw -# gcw0, rg350: ghcr.io/irixxxx/toolchain-opendingux +# gcw0,opendingux:ghcr.io/irixxxx/toolchain-opendingux # miyoo: ghcr.io/irixxxx/toolchain-miyoo # psp: docker.io/pspdev/pspdev # pandora: ghcr.io/irixxxx/toolchain-pandora @@ -64,7 +64,7 @@ mv PicoDrive.opk release-$rel/PicoDrive-retrofw_$rel.opk # gcw0: JZ4770 (mips32r2 with fpu), swapped X/Y buttons docker pull ghcr.io/irixxxx/toolchain-opendingux echo " git config --global --add safe.directory /home/picodrive &&\ - ./configure --platform=gcw0 &&\ + ./configure --platform=opendingux-gcw0 &&\ make clean && make -j2 all "\ | docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-opendingux sh && mv PicoDrive.opk release-$rel/PicoDrive-gcw0_$rel.opk @@ -114,30 +114,30 @@ mv platform/pandora/PicoDrive_*.pnd release-$rel/ } [ -z "${plat##* odbeta-gcw0 *}" ] && { -# gcw0 (untested): JZ4770 (mips32r2 with fpu), swapped X/Y buttons +# gcw0, rg350 and similar devices: JZ4770 (mips32r2 with fpu) docker pull ghcr.io/irixxxx/toolchain-odbeta-gcw0 echo " git config --global --add safe.directory /home/picodrive &&\ - ./configure --platform=gcw0 --platform=odbeta &&\ + ./configure --platform=odbeta &&\ make clean && make -j2 all "\ | docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-gcw0 sh && mv PicoDrive.opk release-$rel/PicoDrive-odbeta-gcw0_$rel.opk } [ -z "${plat##* odbeta-lepus *}" ] && { -# rg300 and other Ingenic lepus based (untested): JZ4760 (mips32r1 with fpu) +# rg300 and other Ingenic lepus based: JZ4760 (mips32r1 with fpu) docker pull ghcr.io/irixxxx/toolchain-odbeta-lepus echo " git config --global --add safe.directory /home/picodrive &&\ - ./configure --platform=opendingux --platform=odbeta &&\ + ./configure --platform=odbeta &&\ make clean && make -j2 all "\ | docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-lepus sh && mv PicoDrive.opk release-$rel/PicoDrive-odbeta-lepus_$rel.opk } [ -z "${plat##* odbeta-rg99 *}" ] && { -# rg99 and other JZ4725B based (untested): JZ4760 (mips32r1 w/o fpu) +# rg99 and similar devices: JZ4725B (mips32r1 w/o fpu) docker pull ghcr.io/irixxxx/toolchain-odbeta-rs90 echo " git config --global --add safe.directory /home/picodrive &&\ - ./configure --platform=opendingux --platform=odbeta &&\ + ./configure --platform=odbeta &&\ make clean && make -j2 all "\ | docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-rs90 sh && mv PicoDrive.opk release-$rel/PicoDrive-odbeta-rg99_$rel.opk