diff options
Diffstat (limited to 'sysutils/edk2/Makefile')
| -rw-r--r-- | sysutils/edk2/Makefile | 130 |
1 files changed, 75 insertions, 55 deletions
diff --git a/sysutils/edk2/Makefile b/sysutils/edk2/Makefile index 8cc289fb77ec..55e051f2f218 100644 --- a/sysutils/edk2/Makefile +++ b/sysutils/edk2/Makefile @@ -1,13 +1,13 @@ PORTNAME= edk2 -PORTVERSION= g202308 -PORTREVISION= 4 +PORTVERSION= g202508 +PORTREVISION= 2 CATEGORIES= sysutils PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ MAINTAINER= uboot@FreeBSD.org COMMENT= EDK2 Firmware for ${FLAVOR} -WWW= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/ReadMe.rst +WWW= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/ LICENSE= BSD3CLAUSE @@ -15,39 +15,51 @@ ONLY_FOR_ARCHS= aarch64 amd64 ONLY_FOR_ARCHS_REASON= only provides firmware for aarch64 and amd64 PKGNAMESUFFIX= -${FLAVOR:C/_/-/g} -FLAVORS= macchiatobin fvp rpi3 rpi4 xen_x64 bhyve qemu_x64 qemu_i386 +FLAVORS= bhyve macchiatobin fvp rpi3 rpi4 xen_x64 qemu_x64 qemu_i386 -USES= cpe gmake python:build +USES= dos2unix cpe gmake python:build CPE_VENDOR= tianocore USE_GCC= yes:build +DOS2UNIX_FILES= UefiCpuPkg/CpuDxe/CpuDxe.inf \ + UefiCpuPkg/CpuDxe/CpuDxe.c \ + UefiCpuPkg/CpuDxe/CpuPageTable.c \ + UefiCpuPkg/CpuDxe/CpuPageTable.h BUILD_DEPENDS+= dtc>=1.4.1:sysutils/dtc \ bash:shells/bash # Both platform and non-osi repository don't have release, use latest known to work tag -PLATFORM_TAG= e509ac5a72 -NONOSI_TAG= 8c09bd0955 +PLATFORM_TAG= aa035ed7f469295802d51c7c001477e32da8a65f +NONOSI_TAG= 3415f616e08a0d9c7bd264cab674929a7b0f5e33 USE_GITHUB= yes GH_ACCOUNT= tianocore -GH_TAGNAME= edk2-stable202308 +GH_TAGNAME= edk2-stable202508 GH_TUPLE= tianocore:edk2-platforms:${PLATFORM_TAG}:platforms \ tianocore:edk2-non-osi:${NONOSI_TAG}:nonosi \ - google:brotli:v1.0.9-35-gf4153a0:brotli/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli \ - google:googletest:release-1.8.0-2983-g86add134:googletest/UnitTestFrameworkPkg/Library/GoogleTestLib/googletest \ - MIPI-Alliance:public-mipi-sys-t:v1.1+edk2:mipisyst/MdePkg/Library/MipiSysTLib/mipisyst \ - openssl:openssl:openssl-3.0.9:openssl/CryptoPkg/Library/OpensslLib/openssl \ - tianocore:edk2-cmocka:cmocka-1.1.5-23-g1cc9cde:cmocka/UnitTestFrameworkPkg/Library/CmockaLib/cmocka + tianocore:edk2-subhook:83d4e1ebef3588fae48b69a7352cc21801cb70bc:edk2_subhook/UnitTestFrameworkPkg/Library/SubhookLib/subhook \ + tianocore:edk2-cmocka:1cc9cde3448cdd2e000886a26acf1caac2db7cf1:edk2_cmocka/UnitTestFrameworkPkg/Library/CmockaLib/cmocka \ + openssl:openssl:aea7aaf2abb04789f5868cbabec406ea43aa84bf:openssl/CryptoPkg/Library/OpensslLib/openssl \ + kkos:oniguruma:4ef89209a239c1aea328cf13c05a2807e5c146d1:oniguruma/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma \ + google:googletest:86add13493e5c881d7e4ba77fb91c1f57752b3a4:googletest/UnitTestFrameworkPkg/Library/GoogleTestLib/googletest \ + google:brotli:f4153a09f87cbb9c826d8fc12c74642bb2d879ea:brotli/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli \ + devicetree-org:pylibfdt:cfff805481bdea27f900c32698171286542b8d3c:pylibfdt/MdePkg/Library/BaseFdtLib/libfdt \ + akheron:jansson:e9ebfa7e77a6bee77df44e096b100e7131044059:jansson/RedfishPkg/Library/JsonLib/jansson \ + MIPI-Alliance:public-mipi-sys-t:370b5944c046bab043dd8b133727b2135af7747a:public_mipi_sys_t/MdePkg/Library/MipiSysTLib/mipisyst \ + DMTF:libspdm:98ef964e1e9a0c39c7efb67143d3a13a819432e0:libspdm/SecurityPkg/DeviceSecurity/SpdmLib/libspdm \ + ARMmbed:mbedtls:8c89224991adff88d53cd380f42a2baa36f91454:mbedtls/CryptoPkg/Library/MbedTlsLib/mbedtls .include <bsd.port.pre.mk> # Heavily dependent on bsd.port.pre.mk definitions for lang/gcc* details: -BINARY_ALIAS= make=${LOCALBASE}/bin/gmake \ - dtc=${LOCALBASE}/bin/dtc \ +BINARY_ALIAS= make=${GMAKE} \ ar=${AR} \ + dtc=${LOCALBASE}/bin/dtc \ gcc=${LOCALBASE}/bin/${CC} \ - gcc-ar=${LOCALBASE}/bin/${CC:S/gcc/&-ar/} \ g++=${LOCALBASE}/bin/${CXX} \ + gcc-nm=${LOCALBASE}/bin/${CC:S/gcc/&-nm/} \ + gcc-ar=${LOCALBASE}/bin/${CC:S/gcc/&-ar/} \ + gcc-ranlib=${LOCALBASE}/bin/${CC:S/gcc/&-ranlib/} \ python3=${PYTHON_CMD} python=${PYTHON_CMD} # Avoid: "ld-elf.so.1: /lib/libgcc_s.so.1: version GCC_4.5.0 @@ -65,7 +77,7 @@ PLAT_ARCH= AARCH64 PLAT_ARGS+= -D X64EMU_ENABLE=FALSE -D CAPSULE_ENABLE=FALSE PLAT_TARGET= RELEASE PLATFILE= Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc -PLAT_RESULT= ArmVExpress-FVP-AArch64/${PLAT_TARGET}_GCC5/FV/FVP_AARCH64_EFI.fd +PLAT_RESULT= ArmVExpress-FVP-AArch64/${PLAT_TARGET}_GCC/FV/FVP_AARCH64_EFI.fd PLAT_FILENAME= FVP_AARCH64_EFI.fd .endif @@ -75,7 +87,7 @@ PLAT_ARCH= AARCH64 PLAT_ARGS+= -D X64EMU_ENABLE=TRUE -D CAPSULE_ENABLE=FALSE PLAT_TARGET= RELEASE PLATFILE= Platform/SolidRun/Armada80x0McBin/Armada80x0McBin.dsc -PLAT_RESULT= Armada80x0McBin-AARCH64/${PLAT_TARGET}_GCC5/FV/ARMADA_EFI.fd +PLAT_RESULT= Armada80x0McBin-AARCH64/${PLAT_TARGET}_GCC/FV/ARMADA_EFI.fd PLAT_FILENAME= ARMADA_EFI.fd .endif @@ -85,7 +97,7 @@ PLAT_ARCH= AARCH64 PLAT_ARGS+= -D X64EMU_ENABLE=FALSE -D CAPSULE_ENABLE=FALSE PLAT_TARGET= RELEASE PLATFILE= Platform/RaspberryPi/RPi3/RPi3.dsc -PLAT_RESULT= RPi3/${PLAT_TARGET}_GCC5/FV/RPI_EFI.fd +PLAT_RESULT= RPi3/${PLAT_TARGET}_GCC/FV/RPI_EFI.fd PLAT_FILENAME= RPI_EFI.fd .endif @@ -95,7 +107,7 @@ PLAT_ARCH= AARCH64 PLAT_ARGS+= -D X64EMU_ENABLE=FALSE -D CAPSULE_ENABLE=FALSE PLAT_TARGET= RELEASE PLATFILE= Platform/RaspberryPi/RPi4/RPi4.dsc -PLAT_RESULT= RPi4/${PLAT_TARGET}_GCC5/FV/RPI_EFI.fd +PLAT_RESULT= RPi4/${PLAT_TARGET}_GCC/FV/RPI_EFI.fd PLAT_FILENAME= RPI_EFI.fd .endif @@ -106,7 +118,7 @@ PLAT= xen PLAT_ARCH= X64 PLAT_TARGET= RELEASE PLATFILE= OvmfPkg/OvmfXen.dsc -PLAT_RESULT= OvmfXen/${PLAT_TARGET}_GCC5/FV/OVMF.fd +PLAT_RESULT= OvmfXen/${PLAT_TARGET}_GCC/FV/OVMF.fd PLAT_FILENAME= XEN_X64_EFI.fd .endif @@ -118,9 +130,9 @@ PLAT_ARCH= X64 PLAT_ARGS+= -D SECURE_BOOT_ENABLE=TRUE -D TPM2_ENABLE=TRUE PLAT_TARGET= RELEASE PLATFILE= OvmfPkg/Bhyve/BhyveX64.dsc -PLAT_RESULT= BhyveX64/${PLAT_TARGET}_GCC5/FV/BHYVE.fd -PLAT_RESULT_CODE= BhyveX64/${PLAT_TARGET}_GCC5/FV/BHYVE_CODE.fd -PLAT_RESULT_VARS= BhyveX64/${PLAT_TARGET}_GCC5/FV/BHYVE_VARS.fd +PLAT_RESULT= BhyveX64/${PLAT_TARGET}_GCC/FV/BHYVE.fd +PLAT_RESULT_CODE= BhyveX64/${PLAT_TARGET}_GCC/FV/BHYVE_CODE.fd +PLAT_RESULT_VARS= BhyveX64/${PLAT_TARGET}_GCC/FV/BHYVE_VARS.fd PLAT_FILENAME= BHYVE_UEFI.fd PLAT_FILENAME_CODE= BHYVE_UEFI_CODE.fd PLAT_FILENAME_VARS= BHYVE_UEFI_VARS.fd @@ -133,9 +145,9 @@ PLAT= qemu PLAT_ARCH= X64 PLAT_TARGET= RELEASE PLATFILE= OvmfPkg/OvmfPkgX64.dsc -PLAT_RESULT= OvmfX64/${PLAT_TARGET}_GCC5/FV/OVMF.fd -PLAT_RESULT_CODE= OvmfX64/${PLAT_TARGET}_GCC5/FV/OVMF_CODE.fd -PLAT_RESULT_VARS= OvmfX64/${PLAT_TARGET}_GCC5/FV/OVMF_VARS.fd +PLAT_RESULT= OvmfX64/${PLAT_TARGET}_GCC/FV/OVMF.fd +PLAT_RESULT_CODE= OvmfX64/${PLAT_TARGET}_GCC/FV/OVMF_CODE.fd +PLAT_RESULT_VARS= OvmfX64/${PLAT_TARGET}_GCC/FV/OVMF_VARS.fd PLAT_FILENAME= QEMU_UEFI-x86_64.fd PLAT_FILENAME_CODE= QEMU_UEFI_CODE-x86_64.fd PLAT_FILENAME_VARS= QEMU_UEFI_VARS-x86_64.fd @@ -148,9 +160,9 @@ PLAT= qemu PLAT_ARCH= IA32 PLAT_TARGET= RELEASE PLATFILE= OvmfPkg/OvmfPkgIa32.dsc -PLAT_RESULT= OvmfIa32/${PLAT_TARGET}_GCC5/FV/OVMF.fd -PLAT_RESULT_CODE= OvmfIa32/${PLAT_TARGET}_GCC5/FV/OVMF_CODE.fd -PLAT_RESULT_VARS= OvmfIa32/${PLAT_TARGET}_GCC5/FV/OVMF_VARS.fd +PLAT_RESULT= OvmfIa32/${PLAT_TARGET}_GCC/FV/OVMF.fd +PLAT_RESULT_CODE= OvmfIa32/${PLAT_TARGET}_GCC/FV/OVMF_CODE.fd +PLAT_RESULT_VARS= OvmfIa32/${PLAT_TARGET}_GCC/FV/OVMF_VARS.fd PLAT_FILENAME= QEMU_UEFI-i386.fd PLAT_FILENAME_CODE= QEMU_UEFI_CODE-i386.fd PLAT_FILENAME_VARS= QEMU_UEFI_VARS-i386.fd @@ -169,50 +181,58 @@ PLIST_FILES+= ${PREFIX}/share/uefi-firmware/${PLAT_FILENAME_CODE} PLIST_FILES+= ${PREFIX}/share/uefi-firmware/${PLAT_FILENAME_VARS} .endif -# Emulate source edk2/edksetup.sh -MAKE_ENV+= WORKSPACE=${WRKDIR} \ - PACKAGES_PATH=${WRKDIR}/edk2-${GH_TAGNAME}:${WRKDIR}/edk2-platforms-${PLATFORM_TAG}:${WRKDIR}/edk2-non-osi-${NONOSI_TAG} \ - CONF_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/Conf \ - EDK_TOOLS_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools \ - PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/BinWrappers/PosixLike:${PATH} \ - PYTHON_COMMAND=python3 \ - PYTHONHASHSEED=1 \ - EXTRA_LDFLAGS=${EXTRA_LDFLAGS} - .if ${PLAT_ARCH} == AARCH64 && ${ARCH} != aarch64 BUILD_DEPENDS+= aarch64-none-elf-gcc:devel/aarch64-none-elf-gcc -MAKE_ENV+= GCC5_AARCH64_PREFIX=aarch64-none-elf- +MAKE_ENV+= GCC_AARCH64_PREFIX=aarch64-none-elf- .endif .if ${PLAT_ARCH} == X64 || ${PLAT_ARCH} == IA32 BUILD_DEPENDS+= nasm:devel/nasm .endif -# We can't have two submodule with the same origin in GH_TUPLE +MAKE_ENV+= PYTHON_COMMAND=python3 \ + EXTRA_LDFLAGS=${EXTRA_LDFLAGS} \ + PACKAGES_PATH=${WRKDIR}/edk2-${GH_TAGNAME}:${WRKDIR}/edk2-platforms-${PLATFORM_TAG}:${WRKDIR}/edk2-non-osi-${NONOSI_TAG} + +# custom logo for bhyve's ovmf +.if ${FLAVOR} == bhyve +MASTER_SITES+= LOCAL/dch/bhyve/ +DISTFILES+= BhyveLogo.bmp +EXTRACT_ONLY= ${DISTFILES:M*.gz*:C/.gz:.*/.gz/} +.endif + post-extract: - (cd ${WRKDIR}/edk2-${GH_TAGNAME}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli && tar cf - * | tar xf - -C ../../../../BaseTools/Source/C/BrotliCompress/brotli) + # We can't have two submodule with the same origin in GH_TUPLE + (cd ${WRKDIR}/edk2-${GH_TAGNAME} && ${CP} -a MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/* BaseTools/Source/C/BrotliCompress/brotli) + +.if ${FLAVOR} == bhyve + (${CP} ${DISTDIR}/BhyveLogo.bmp ${WRKDIR}/edk2-${GH_TAGNAME}/MdeModulePkg/Logo/Logo.bmp) +.endif + do-build: - # This is normaly done during source edksetup.sh - (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/build_rule.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/build_rule.txt) - (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/tools_def.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/tools_def.txt) - (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/target.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/target.txt) - # Build the basetools - (cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -C edk2-${GH_TAGNAME}/BaseTools ${_MAKE_JOBS}) - # Build EDK2 - (cd ${WRKDIR}/edk2-${GH_TAGNAME} && ${SETENV} ${MAKE_ENV} BaseTools/BinWrappers/PosixLike/build -a ${PLAT_ARCH} -p ${PLATFILE} -n ${MAKE_JOBS_NUMBER} -t GCC5 -b ${PLAT_TARGET} ${PLAT_ARGS}) + # Just run a bash subshell for build instead of emulating edksetup.sh + (bash -c ' \ + export ${MAKE_ENV} && \ + cd ${WRKDIR}/edk2-${GH_TAGNAME} && \ + ${MAKE_CMD} -C BaseTools -j ${MAKE_JOBS_NUMBER} && \ + source edksetup.sh && \ + build -a ${PLAT_ARCH} -p ${PLATFILE} -n ${MAKE_JOBS_NUMBER} -t GCC -b ${PLAT_TARGET} ${PLAT_ARGS} \ + ') do-install: ${MKDIR} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/ - ${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} + ${INSTALL_DATA} ${WRKDIR}/edk2-${GH_TAGNAME}/Build/${PLAT_RESULT} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} .if defined(PLAT_FILENAME_CODE) - ${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT_CODE} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME_CODE} + ${INSTALL_DATA} ${WRKDIR}/edk2-${GH_TAGNAME}/Build/${PLAT_RESULT_CODE} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME_CODE} .endif .if defined(PLAT_FILENAME_VARS) - ${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT_VARS} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME_VARS} + ${INSTALL_DATA} ${WRKDIR}/edk2-${GH_TAGNAME}/Build/${PLAT_RESULT_VARS} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME_VARS} .endif + .if ${FLAVOR} == bhyve - ${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT_CODE} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} + # For now BHYVE cannot load the regular firmware file that contains vars so we just replace it with CODE + ${INSTALL_DATA} ${WRKDIR}/edk2-${GH_TAGNAME}/Build/${PLAT_RESULT_CODE} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} # For backwards compatibility ${MKDIR} ${STAGEDIR}/${PREFIX}/share/uefi-firmware/ ${RLN} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} ${STAGEDIR}/${PREFIX}/share/uefi-firmware/${PLAT_FILENAME} |
