mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
"Full" plist is not useful for modern systems and its use has always been discouraged outside of Macs and old systems. Rename it to "Legacy" to avoid confusion.
200 lines
4.6 KiB
Bash
Executable File
200 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
buildutil() {
|
|
UTILS=(
|
|
"AppleEfiSignTool"
|
|
"EfiResTool"
|
|
"disklabel"
|
|
"icnspack"
|
|
"macserial"
|
|
"ocvalidate"
|
|
"TestBmf"
|
|
"TestDiskImage"
|
|
"TestHelloWorld"
|
|
"TestImg4"
|
|
"TestKextInject"
|
|
"TestMacho"
|
|
"TestRsaPreprocess"
|
|
"TestSmbios"
|
|
)
|
|
|
|
if [ "$HAS_OPENSSL_BUILD" = "1" ]; then
|
|
UTILS+=("RsaTool")
|
|
fi
|
|
|
|
pushd "${selfdir}/Utilities" || exit 1
|
|
for util in "${UTILS[@]}"; do
|
|
cd "$util" || exit 1
|
|
echo "Building ${util}..."
|
|
make || exit 1
|
|
#
|
|
# FIXME: Do not build RsaTool for Win32 without OpenSSL.
|
|
#
|
|
if [ "$util" = "RsaTool" ] && [ "$HAS_OPENSSL_W32BUILD" != "1" ]; then
|
|
continue
|
|
fi
|
|
|
|
if [ "$(which i686-w64-mingw32-gcc)" != "" ]; then
|
|
echo "Building ${util} for Windows..."
|
|
UDK_ARCH=Ia32 CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip DIST=Windows make clean || exit 1
|
|
UDK_ARCH=Ia32 CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip DIST=Windows make || exit 1
|
|
fi
|
|
cd - || exit 1
|
|
done
|
|
popd || exit
|
|
}
|
|
|
|
package() {
|
|
if [ ! -d "$1" ]; then
|
|
echo "Missing package directory"
|
|
exit 1
|
|
fi
|
|
|
|
local ver
|
|
ver=$(grep OPEN_CORE_VERSION ./Include/Acidanthera/OpenCore.h | sed 's/.*"\(.*\)".*/\1/' | grep -E '^[0-9.]+$')
|
|
if [ "$ver" = "" ]; then
|
|
echo "Invalid version $ver"
|
|
ver="UNKNOWN"
|
|
fi
|
|
|
|
selfdir=$(pwd)
|
|
pushd "$1" || exit 1
|
|
rm -rf tmp || exit 1
|
|
|
|
dirs=(
|
|
"tmp/EFI/BOOT"
|
|
"tmp/EFI/OC/ACPI"
|
|
"tmp/EFI/OC/Bootstrap"
|
|
"tmp/EFI/OC/Drivers"
|
|
"tmp/EFI/OC/Kexts"
|
|
"tmp/EFI/OC/Tools"
|
|
"tmp/EFI/OC/Resources/Audio"
|
|
"tmp/EFI/OC/Resources/Font"
|
|
"tmp/EFI/OC/Resources/Image"
|
|
"tmp/EFI/OC/Resources/Label"
|
|
"tmp/Docs/AcpiSamples"
|
|
"tmp/Utilities"
|
|
)
|
|
for dir in "${dirs[@]}"; do
|
|
mkdir -p "${dir}" || exit 1
|
|
done
|
|
|
|
# copy OpenCore main program.
|
|
cp OpenCore.efi tmp/EFI/OC/ || exit 1
|
|
|
|
# Mark binaries to be recognisable by OcBootManagementLib.
|
|
bootsig="${selfdir}/Library/OcBootManagementLib/BootSignature.bin"
|
|
efiOCBMs=(
|
|
"BOOTx64.efi"
|
|
"OpenCore.efi"
|
|
)
|
|
for efiOCBM in "${efiOCBMs[@]}"; do
|
|
dd if="${bootsig}" \
|
|
of="${efiOCBM}" seek=64 bs=1 count=64 conv=notrunc || exit 1
|
|
done
|
|
cp BOOTx64.efi tmp/EFI/BOOT/ || exit 1
|
|
cp BOOTx64.efi tmp/EFI/OC/Bootstrap/Bootstrap.efi || exit 1
|
|
|
|
efiTools=(
|
|
"BootKicker.efi"
|
|
"ChipTune.efi"
|
|
"CleanNvram.efi"
|
|
"GopStop.efi"
|
|
"HdaCodecDump.efi"
|
|
"KeyTester.efi"
|
|
"MmapDump.efi"
|
|
"ResetSystem.efi"
|
|
"RtcRw.efi"
|
|
"OpenControl.efi"
|
|
"VerifyMsrE2.efi"
|
|
)
|
|
for efiTool in "${efiTools[@]}"; do
|
|
cp "${efiTool}" tmp/EFI/OC/Tools/ || exit 1
|
|
done
|
|
# Special case: OpenShell.efi
|
|
cp Shell.efi tmp/EFI/OC/Tools/OpenShell.efi || exit 1
|
|
|
|
efiDrivers=(
|
|
"HiiDatabase.efi"
|
|
"NvmExpressDxe.efi"
|
|
"AudioDxe.efi"
|
|
"CrScreenshotDxe.efi"
|
|
"OpenCanopy.efi"
|
|
"OpenRuntime.efi"
|
|
"OpenUsbKbDxe.efi"
|
|
"Ps2MouseDxe.efi"
|
|
"Ps2KeyboardDxe.efi"
|
|
"UsbMouseDxe.efi"
|
|
"XhciDxe.efi"
|
|
)
|
|
for efiDriver in "${efiDrivers[@]}"; do
|
|
cp "${efiDriver}" tmp/EFI/OC/Drivers/ || exit 1
|
|
done
|
|
|
|
docs=(
|
|
"Configuration.pdf"
|
|
"Differences/Differences.pdf"
|
|
"Sample.plist"
|
|
"SampleLegacy.plist"
|
|
)
|
|
for doc in "${docs[@]}"; do
|
|
cp "${selfdir}/Docs/${doc}" tmp/Docs/ || exit 1
|
|
done
|
|
cp "${selfdir}/Changelog.md" tmp/Docs/ || exit 1
|
|
cp -r "${selfdir}/Docs/AcpiSamples/" tmp/Docs/AcpiSamples/ || exit 1
|
|
|
|
utilScpts=(
|
|
"LegacyBoot"
|
|
"CreateVault"
|
|
"LogoutHook"
|
|
"macrecovery"
|
|
"kpdescribe"
|
|
)
|
|
for utilScpt in "${utilScpts[@]}"; do
|
|
cp -r "${selfdir}/Utilities/${utilScpt}" tmp/Utilities/ || exit 1
|
|
done
|
|
|
|
buildutil || exit 1
|
|
utils=(
|
|
"macserial"
|
|
"ocvalidate"
|
|
"disklabel"
|
|
"icnspack"
|
|
)
|
|
for util in "${utils[@]}"; do
|
|
dest="tmp/Utilities/${util}"
|
|
mkdir -p "${dest}" || exit 1
|
|
bin="${selfdir}/Utilities/${util}/${util}"
|
|
cp "${bin}" "${dest}" || exit 1
|
|
binEXE="${bin}.exe"
|
|
if [ -f "${binEXE}" ]; then
|
|
cp "${binEXE}" "${dest}" || exit 1
|
|
fi
|
|
done
|
|
# additional docs for macserial.
|
|
cp "${selfdir}/Utilities/macserial/FORMAT.md" tmp/Utilities/macserial/ || exit 1
|
|
cp "${selfdir}/Utilities/macserial/README.md" tmp/Utilities/macserial/ || exit 1
|
|
|
|
pushd tmp || exit 1
|
|
zip -qr -FS ../"OpenCore-${ver}-${2}.zip" ./* || exit 1
|
|
popd || exit 1
|
|
rm -rf tmp || exit 1
|
|
popd || exit 1
|
|
}
|
|
|
|
cd "$(dirname "$0")" || exit 1
|
|
if [ "$ARCHS" = "" ]; then
|
|
ARCHS=(X64 IA32)
|
|
export ARCHS
|
|
fi
|
|
SELFPKG=OpenCorePkg
|
|
NO_ARCHIVES=0
|
|
|
|
export SELFPKG
|
|
export NO_ARCHIVES
|
|
|
|
src=$(curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/efibuild.sh) && eval "$src" || exit 1
|
|
|
|
cd Library/OcConfigurationLib || exit 1
|
|
./CheckSchema.py OcConfigurationLib.c || exit 1
|