Ventoy/EDK2/build.sh
Tobias Svenblad f668360d59
Refactor EDK2 build script for improved clarity and efficiency
Refactor EDK2 build script for improved clarity and efficiency

- Implement a case statement for setting architecture and postfix based on the input argument, enhancing readability and scalability.
- Add a directory change check to exit the script if the `cd` command to the EDK2 source directory fails, improving robustness.
- Consolidate file removal commands into a single line for each set of related files, simplifying the script structure.
- Streamline the build commands with a conditional segment specifically for the AARCH64 architecture, making the script more concise.
- Enhance the success check logic by verifying the existence of all expected output files before declaring success.
2023-12-07 20:33:00 +02:00

63 lines
1.8 KiB
Bash

#!/bin/sh
# Set architecture based on input argument
case "$1" in
"ia32")
EDKARCH=IA32
postfix=ia32
;;
"aa64")
EDKARCH=AARCH64
postfix=aa64
;;
*)
EDKARCH=X64
postfix=x64
;;
esac
cd edk2-edk2-stable201911 || exit 1
# Clean up configuration and cache files
rm -rf ./Conf/.cache
rm -f ./Conf/.AutoGenIdFile.txt
# Define paths for EFI files
VTEFI_PATH=Build/MdeModule/RELEASE_GCC48/$EDKARCH/MdeModulePkg/Application/Ventoy/Ventoy/OUTPUT/Ventoy.efi
DST_PATH=../../INSTALL/ventoy/ventoy_${postfix}.efi
VTEFI_PATH2=Build/MdeModule/RELEASE_GCC48/$EDKARCH/MdeModulePkg/Application/VtoyUtil/VtoyUtil/OUTPUT/VtoyUtil.efi
DST_PATH2=../../INSTALL/ventoy/vtoyutil_${postfix}.efi
VTEFI_PATH3=Build/MdeModule/RELEASE_GCC48/$EDKARCH/MdeModulePkg/Application/VDiskChain/VDiskChain/OUTPUT/VDiskChain.efi
DST_PATH3=../../VDiskChain/Tool/vdiskchain_${postfix}.efi
# Remove old EFI files
rm -f $VTEFI_PATH $DST_PATH $VTEFI_PATH2 $DST_PATH2 $VTEFI_PATH3
[ -d ../../VDiskChain ] && rm -f $DST_PATH3
# Setup build environment
unset WORKSPACE
source ./edksetup.sh
# Build based on architecture
if [ "$EDKARCH" = "AARCH64" ]; then
GCC48_AARCH64_PREFIX=aarch64-linux-gnu- \
build -p MdeModulePkg/MdeModulePkg.dsc -a $EDKARCH -b RELEASE -t GCC48
else
build -p MdeModulePkg/MdeModulePkg.dsc -a $EDKARCH -b RELEASE -t GCC48
fi
# Check if build was successful and copy files
if [ -e $VTEFI_PATH ] && [ -e $VTEFI_PATH2 ] && [ -e $VTEFI_PATH3 ]; then
echo -e '\n\n====================== SUCCESS ========================\n\n'
cp -a $VTEFI_PATH $DST_PATH
cp -a $VTEFI_PATH2 $DST_PATH2
[ -d ../../VDiskChain ] && cp -a $VTEFI_PATH3 $DST_PATH3
cd ..
else
echo -e '\n\n====================== FAILED ========================\n\n'
cd ..
exit 1
fi