From 983411ea68ce83c880f3b03f1689f957d07c85ec Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 28 Jul 2025 05:28:44 -0300 Subject: [PATCH] Adding (native | docker) option to ./compile.sh --- README.md | 9 ++--- examples/compile.sh | 80 ++++++++++++++++++++++++++++----------------- 2 files changed, 52 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index afb8b92..6371987 100644 --- a/README.md +++ b/README.md @@ -59,13 +59,8 @@ make [ clean | build | start | rebuild | restart ] Alternatively, you can compile the examples using Docker: ```bash -cd examples/LinkCable_basic - -docker run -it \ - --user "$(id -u):$(id -g)" \ - -v "$(pwd)/../..":/opt/gba \ - devkitpro/devkitarm:20241104 \ - bash -c "cd /opt/gba/examples/$(basename $PWD) && make rebuild" +cd examples +./compile.sh docker ``` ### C bindings diff --git a/examples/compile.sh b/examples/compile.sh index 23b348d..0085c41 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -2,111 +2,131 @@ set -e -compile() { - if [ "$1" = "multiboot" ]; then - args="bMB=1" - suffix=".mb" - folder="multiboot" +MODE="${1:-native}" # native | docker + +cmd_make() { + if [ "$MODE" = docker ]; then + docker run -it \ + --user "$(id -u):$(id -g)" \ + -v "$(pwd)/../..":/opt/gba \ + devkitpro/devkitarm:20241104 \ + bash -c "cd /opt/gba/examples/$(basename "$PWD") && make \"\$@\"" -- "$@" else - args="bMB=0" - suffix="" - folder="." + make "$@" + fi +} + +compile() { + if [ "$MODE" = docker ]; then + echo "Compiling in Docker mode..." + else + echo "Compiling in Native mode..." + fi + + if [ "$1" = "multiboot" ]; then + args="bMB=1" + suffix=".mb" + folder="multiboot" + else + args="bMB=0" + suffix="" + folder="." fi # LinkCable_basic cd LinkCable_basic/ - make rebuild $args + cmd_make rebuild $args cp LinkCable_basic$suffix.gba ../$folder/ cd .. # LinkCable_full cd LinkCable_full/ - make rebuild $args + cmd_make rebuild $args cp LinkCable_full$suffix.gba ../$folder/ cd .. # LinkCable_stress cd LinkCable_stress/ - make rebuild $args + cmd_make rebuild $args cp LinkCable_stress$suffix.gba ../$folder/ cd .. # LinkCard_demo cd LinkCard_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkCard_demo$suffix.out.gba ../$folder/LinkCard_demo$suffix.gba cd .. # LinkCube_demo cd LinkCube_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkCube_demo$suffix.gba ../$folder/ cd .. # LinkGPIO_demo cd LinkGPIO_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkGPIO_demo$suffix.gba ../$folder/ cd .. # LinkIR_demo cd LinkIR_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkIR_demo$suffix.gba ../$folder/ cd .. # LinkMobile_demo cd LinkMobile_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkMobile_demo$suffix.gba ../$folder/ cd .. # LinkPS2Keyboard_demo cd LinkPS2Keyboard_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkPS2Keyboard_demo$suffix.gba ../$folder/ cd .. # LinkPS2Mouse_demo cd LinkPS2Mouse_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkPS2Mouse_demo$suffix.gba ../$folder/ cd .. # LinkRawCable_demo cd LinkRawCable_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkRawCable_demo$suffix.gba ../$folder/ cd .. # LinkRawWireless_demo cd LinkRawWireless_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkRawWireless_demo$suffix.gba ../$folder/ cd .. # LinkSPI_demo cd LinkSPI_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkSPI_demo$suffix.gba ../$folder/ cd .. # LinkUART_demo cd LinkUART_demo/ - make rebuild $args + cmd_make rebuild $args cp LinkUART_demo$suffix.gba ../$folder/ cd .. # LinkUniversal_basic cd LinkUniversal_basic/ - make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" + cmd_make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkUniversal_basic$suffix.gba ../$folder/ cd .. # LinkUniversal_full cd LinkCable_full/ mv LinkCable_full$suffix.gba backup.gba || : - make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" + cmd_make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkCable_full$suffix.gba ../$folder/LinkUniversal_full$suffix.gba mv backup.gba LinkCable_full$suffix.gba || : cd .. @@ -114,21 +134,21 @@ compile() { # LinkUniversal_stress cd LinkCable_stress/ mv LinkCable_stress$suffix.gba backup.gba || : - make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" + cmd_make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkCable_stress$suffix.gba ../$folder/LinkUniversal_stress$suffix.gba mv backup.gba LinkCable_stress$suffix.gba || : cd .. # LinkWireless_demo cd LinkWireless_demo/ - make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" + cmd_make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkWireless_demo$suffix.gba ../$folder/ cd .. # LinkWireless_prof_code_iwram cd LinkWireless_demo/ mv LinkWireless_demo$suffix.gba backup.gba || : - make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1 -DLINK_WIRELESS_PROFILING_ENABLED=1" + cmd_make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1 -DLINK_WIRELESS_PROFILING_ENABLED=1" cp LinkWireless_demo$suffix.gba ../$folder/LinkWireless_prof_code_iwram$suffix.gba mv backup.gba LinkWireless_demo$suffix.gba || : cd .. @@ -136,7 +156,7 @@ compile() { # LinkWireless_prof_code_rom cd LinkWireless_demo/ mv LinkWireless_demo$suffix.gba backup.gba || : - make rebuild $args USERFLAGS="-DLINK_WIRELESS_PROFILING_ENABLED=1" + cmd_make rebuild $args USERFLAGS="-DLINK_WIRELESS_PROFILING_ENABLED=1" cp LinkWireless_demo$suffix.gba ../$folder/LinkWireless_prof_code_rom$suffix.gba mv backup.gba LinkWireless_demo$suffix.gba || : cd .. @@ -172,14 +192,14 @@ cp multiboot/roms.gbfs LinkWirelessMultiboot_demo/content.gbfs # LinkCableMultiboot_demo cd LinkCableMultiboot_demo/ -make rebuild +cmd_make rebuild cp LinkCableMultiboot_demo.out.gba ../LinkCableMultiboot_demo.gba cp ../hello.gbfs content.gbfs cd .. # LinkWirelessMultiboot_demo cd LinkWirelessMultiboot_demo/ -make rebuild USERFLAGS="-DLINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING=1" +cmd_make rebuild USERFLAGS="-DLINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING=1" cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba cp ../hello.gbfs content.gbfs cd ..