mirror of https://github.com/probonopd/MiniDexed
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.1 KiB
154 lines
4.1 KiB
#!/bin/bash
|
|
|
|
set -e
|
|
set +x
|
|
|
|
# this script install the dev environment and assume that the repository is alreadw cloned
|
|
usage()
|
|
{
|
|
# Display Help
|
|
echo "usage: make-sh [ <option> ... ]"
|
|
echo "This script install the dev environment and assume that the repository is already cloned."
|
|
echo
|
|
echo "options:"
|
|
echo " -d, --debug Execute with debugging script"
|
|
echo " -h, --help Print this help"
|
|
echo " -r <version>, -RPI <version>, --raspberrypi <version"
|
|
echo " Set Raspberry PI version"
|
|
echo " -prepenv Prepare the development environment"
|
|
echo " -build Run build"
|
|
echo " -boot Fetch boot files"
|
|
echo " -sysex Fetch all System Exclusive cartridge"
|
|
echo " -zip Create the resulting zip file"
|
|
echo " -opt Run RUN_OPTIONALITIES"
|
|
echo
|
|
}
|
|
|
|
export RPI=4
|
|
export SETUP_ENV=0
|
|
export BUILD=0
|
|
export FETCH_BOOT=0
|
|
export CREATE_ZIP=0
|
|
export FETCH_SYSEX=0
|
|
export RUN_OPTIONALITIES=0
|
|
|
|
while true ; do
|
|
case "$1" in
|
|
-d|--debug) set -x ; shift;;
|
|
-h|--help) usage ; exit 0;;
|
|
-r|-RPI|--raspberrypi) export RPI=$2 ; shift 2;;
|
|
-prepenv) export SETUP_ENV=1 ; shift;;
|
|
-build) export BUILD=1 ; shift;;
|
|
-boot) export FETCH_BOOT=1 ; shift;;
|
|
-sysex) export FETCH_SYSEX=1 ; shift;;
|
|
-zip) export CREATE_ZIP=1 ; shift;;
|
|
-opt) export RUN_OPTIONALITIES=1 ; shift;;
|
|
--) shift ; break ;;
|
|
*) if [ $1 ]
|
|
then
|
|
echo "Error processing param #$1#"
|
|
exit 1
|
|
else
|
|
break
|
|
fi;;
|
|
esac
|
|
done
|
|
|
|
echo "Raspberry PI=$RPI"
|
|
echo "Setup environment=$SETUP_ENV"
|
|
echo "Run build=$BUILD"
|
|
echo "Fetch FETCH_SYSEX=$FETCH_SYSEX"
|
|
echo "Prepare zip file=$CREATE_ZIP"
|
|
echo "Run optional steps=$RUN_OPTIONALITIES"
|
|
|
|
if [ ${SETUP_ENV} -eq 1 ]
|
|
then
|
|
mkdir -p kernels sdcard
|
|
|
|
# Recursively pull git submodules
|
|
git submodule update --init --recursive
|
|
|
|
cd circle-stdlib/libs/circle
|
|
git checkout develop # move to develop branch
|
|
cd -
|
|
|
|
# Install toolchain
|
|
if [ "${RPI}" -gt 2 ]
|
|
then
|
|
if [ -f gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz ]
|
|
then
|
|
rm -f gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
|
|
fi
|
|
|
|
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
|
|
else
|
|
if [ -f gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz ]
|
|
then
|
|
rm -f gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz
|
|
fi
|
|
|
|
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz
|
|
fi
|
|
echo "Unpacking"
|
|
tar xf --checkpoint gcc-arm-*-*.tar.xz
|
|
fi
|
|
|
|
if [ ${BUILD} -eq 1 ]
|
|
then
|
|
# Build dependencies and MiniDexed
|
|
./build.sh -RPI ${RPI} -clean -all
|
|
cp ./src/kernel*.img ./kernels/
|
|
fi
|
|
|
|
if [ ${FETCH_BOOT} -eq 1 ]
|
|
then
|
|
# Get Raspberry Pi boot files
|
|
cd ./circle-stdlib/libs/circle/boot
|
|
make
|
|
if [ "${RPI}" -gt 2 ]
|
|
then
|
|
make armstub64
|
|
fi
|
|
cd -
|
|
fi
|
|
|
|
if [ ${CREATE_ZIP} -eq 1 ]
|
|
then
|
|
# Make zip that contains Raspberry Pi 4 boot files. The contents can be copied to a FAT32 formatted partition on a microSD card
|
|
if [ ${FETCH_SYSEX} -eq 1]
|
|
then
|
|
cd sdcard
|
|
../getFETCH_SYSEX.sh
|
|
cd ..
|
|
fi
|
|
|
|
cp -r ./circle-stdlib/libs/circle/boot/* sdcard
|
|
rm -rf sdcard/config*.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux
|
|
cp ./src/config.txt ./src/minidexed.ini ./src/*img ./src/performance.ini sdcard/
|
|
echo "usbspeed=full" > sdcard/cmdline.txt
|
|
cd sdcard
|
|
cp ../kernels/* . || true
|
|
zip -r ../MaxiDexed_$GITHUB_RUN_NUMBER_$(date +%Y-%m-%d).zip *
|
|
cd -
|
|
fi
|
|
|
|
if [ ${RUN_OPTIONALITIES} -eq 1 ]
|
|
then
|
|
# Optionally, create a RPi image. This can be written to a microSD card using tools like Etcher or dd
|
|
sudo apt install --yes mount parted
|
|
IMG="`date +%Y-%m-%d`_minidexed-RPi${RPI}.img"
|
|
dd of="${IMG}" seek=50MiB bs=1 count=0
|
|
sudo parted "${IMG}" mktable msdos
|
|
sudo parted "${IMG}" mkpart primary fat32 2048s 100%
|
|
DEV=`sudo losetup --find --partscan --show "${IMG}"`
|
|
sudo mkfs.vfat -F 32 -n BOOT "${DEV}p1"
|
|
mkdir boot
|
|
sudo mount "${DEV}p1" boot
|
|
sudo cp -R sdcard/* boot
|
|
sudo umount boot
|
|
sudo losetup -d "${DEV}"
|
|
rm -r boot
|
|
|
|
# Write to SD card
|
|
sudo dd if="${IMG}" of=/dev/mmcblk0 bs=512k status=progress && sync
|
|
fi |