gba-link-connection/examples/compile.sh

189 lines
6.7 KiB
Bash
Executable File

#!/bin/bash
set -e
if [ "$(uname)" = "Darwin" ]; then
# macOS
sed_inplace_option="-i \"\""
else
sed_inplace_option="-i"
fi
compile() {
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
cp LinkCable_basic$suffix.gba ../$folder/
cd ..
# LinkCable_full
cd LinkCable_full/
make rebuild $args
cp LinkCable_full$suffix.gba ../$folder/
cd ..
# LinkCable_stress
cd LinkCable_stress/
make rebuild $args
cp LinkCable_stress$suffix.gba ../$folder/
cd ..
# LinkGPIO_demo
cd LinkGPIO_demo/
make rebuild $args
cp LinkGPIO_demo$suffix.gba ../$folder/
cd ..
# LinkMobile_demo
cd LinkMobile_demo/
make rebuild $args
cp LinkMobile_demo$suffix.gba ../$folder/
cd ..
# LinkPS2Keyboard_demo
cd LinkPS2Keyboard_demo/
make rebuild $args
cp LinkPS2Keyboard_demo$suffix.gba ../$folder/
cd ..
# LinkPS2Mouse_demo
cd LinkPS2Mouse_demo/
make rebuild $args
cp LinkPS2Mouse_demo$suffix.gba ../$folder/
cd ..
# LinkRawCable_demo
cd LinkRawCable_demo/
make rebuild $args
cp LinkRawCable_demo$suffix.gba ../$folder/
cd ..
# LinkRawWireless_demo
cd LinkRawWireless_demo/
sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp
make rebuild $args
sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp
cp LinkRawWireless_demo$suffix.gba ../$folder/
cd ..
# LinkSPI_demo
cd LinkSPI_demo/
make rebuild $args
cp LinkSPI_demo$suffix.gba ../$folder/
cd ..
# LinkUART_demo
cd LinkUART_demo/
make rebuild $args
cp LinkUART_demo$suffix.gba ../$folder/
cd ..
# LinkUniversal_basic
cd LinkUniversal_basic/
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
make rebuild $args
cp LinkUniversal_basic$suffix.gba ../$folder/
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
cd ..
# LinkUniversal_full
cd LinkCable_full/
sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
mv LinkCable_full$suffix.gba backup.gba
make rebuild $args
cp LinkCable_full$suffix.gba ../$folder/LinkUniversal_full$suffix.gba
mv backup.gba LinkCable_full$suffix.gba
sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
cd ..
# LinkUniversal_stress
cd LinkCable_stress/
sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
mv LinkCable_stress$suffix.gba backup.gba
make rebuild $args
cp LinkCable_stress$suffix.gba ../$folder/LinkUniversal_stress$suffix.gba
mv backup.gba LinkCable_stress$suffix.gba
sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
cd ..
# LinkWireless_demo
cd LinkWireless_demo/
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp
make rebuild $args
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp
cp LinkWireless_demo$suffix.gba ../$folder/
cd ..
# LinkWireless_demo_profiler
if [ "$1" != "multiboot" ]; then
cd LinkWireless_demo/
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp
mv LinkWireless_demo$suffix.gba backup.gba
make rebuild
cp LinkWireless_demo.gba ../$folder/LinkWireless_demo_profiler.gba
mv backup.gba LinkWireless_demo$suffix.gba
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp
sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp
cd ..
fi
}
# Cleanup
rm -rf multiboot/
mkdir -p multiboot/
rm -f *.gba *.sav *.sa2
# Compile all ROMs as multiboot
compile "multiboot"
cd multiboot/
cp ../hello.gbfs .
ungbfs hello.gbfs
rm hello.gbfs
for file in *.gba; do
../pad16.sh "$file"
done
gbfs roms.gbfs *
cd ..
# Bundle all multiboot ROMs in the multiboot launchers
cp multiboot/roms.gbfs LinkCableMultiboot_demo/content.gbfs
cp multiboot/roms.gbfs LinkWirelessMultiboot_demo/content.gbfs
# LinkCableMultiboot_demo
cd LinkCableMultiboot_demo/
make rebuild
cp LinkCableMultiboot_demo.out.gba ../LinkCableMultiboot_demo.gba
cp ../hello.gbfs content.gbfs
cd ..
# LinkWirelessMultiboot_demo
cd LinkWirelessMultiboot_demo/
sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp
make rebuild
cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba
cp ../hello.gbfs content.gbfs
sed $sed_inplace_option -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp
cd ..
# Compile all ROMs as normal
compile