Changeset View
Changeset View
Standalone View
Standalone View
sysutils/edk2/Makefile
PORTNAME= edk2 | PORTNAME= edk2 | ||||
PORTVERSION= g202005 | PORTVERSION= g202005 | ||||
CATEGORIES= sysutils | CATEGORIES= sysutils | ||||
MAINTAINER= uboot@FreeBSD.org | MAINTAINER= uboot@FreeBSD.org | ||||
COMMENT= EDK2 Firmware for ${FLAVOR} | COMMENT= EDK2 Firmware for ${FLAVOR} | ||||
LICENSE= BSD3CLAUSE | LICENSE= BSD3CLAUSE | ||||
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 riscv64 | ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 riscv64 | ||||
ONLY_FOR_ARCHS_REASON= source code is not yet ported to anything other than IA32, X64, ARM, AARCH64, RISCV64 or EBC | ONLY_FOR_ARCHS_REASON= source code is not yet ported to anything other than IA32, X64, ARM, AARCH64, RISCV64 or EBC | ||||
PKGNAMESUFFIX= -${FLAVOR:C/_/-/g} | PKGNAMESUFFIX= -${FLAVOR:C/_/-/g} | ||||
FLAVORS= macchiatobin rpi3 rpi4 | FLAVORS= macchiatobin rpi3 rpi4 xen | ||||
FLAVOR?= macchiatobin | FLAVOR?= macchiatobin | ||||
USES= gmake python:3.7+,build | USES= gmake python:3.7+,build | ||||
BUILD_DEPENDS+= aarch64-none-elf-gcc:devel/aarch64-none-elf-gcc \ | BUILD_DEPENDS+= gcc8:lang/gcc8 \ | ||||
gcc8:lang/gcc8 \ | |||||
dtc>=1.4.1:sysutils/dtc \ | dtc>=1.4.1:sysutils/dtc \ | ||||
bash:shells/bash | bash:shells/bash | ||||
# Both platform and non-osi repository don't have release, use latest known to work tag | # Both platform and non-osi repository don't have release, use latest known to work tag | ||||
PLATFORM_TAG= b716f363 | PLATFORM_TAG= b716f363 | ||||
NONOSI_TAG= f8023973 | NONOSI_TAG= f8023973 | ||||
USE_GITHUB= yes | USE_GITHUB= yes | ||||
GH_ACCOUNT= tianocore | GH_ACCOUNT= tianocore | ||||
GH_TAGNAME= edk2-stable202005 | GH_TAGNAME= edk2-stable202005 | ||||
GH_TUPLE= tianocore:edk2-platforms:${PLATFORM_TAG}:platforms \ | GH_TUPLE= tianocore:edk2-platforms:${PLATFORM_TAG}:platforms \ | ||||
tianocore:edk2-non-osi:${NONOSI_TAG}:nonosi \ | tianocore:edk2-non-osi:${NONOSI_TAG}:nonosi \ | ||||
openssl:openssl:OpenSSL_1_1_1d-2-gc3656cc594:openssl/CryptoPkg/Library/OpensslLib/openssl \ | openssl:openssl:OpenSSL_1_1_1d-2-gc3656cc594:openssl/CryptoPkg/Library/OpensslLib/openssl \ | ||||
ucb-bar:berkeley-softfloat-3:master:softfloat/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \ | ucb-bar:berkeley-softfloat-3:master:softfloat/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \ | ||||
kkos:oniguruma:v6.9.4_mark1:oniguruma/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma \ | kkos:oniguruma:v6.9.4_mark1:oniguruma/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma \ | ||||
google:brotli:v1.0.7-17-g666c328:brotli/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli | google:brotli:v1.0.7-17-g666c328:brotli/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli | ||||
BINARY_ALIAS= make=${LOCALBASE}/bin/gmake \ | BINARY_ALIAS= make=${LOCALBASE}/bin/gmake \ | ||||
dtc=${LOCALBASE}/bin/dtc \ | dtc=${LOCALBASE}/bin/dtc \ | ||||
gcc=${LOCALBASE}/bin/gcc8 \ | gcc=${LOCALBASE}/bin/gcc8 \ | ||||
gcc-ar=${LOCALBASE}/bin/gcc-ar8 \ | |||||
g++=${LOCALBASE}/bin/g++8 \ | g++=${LOCALBASE}/bin/g++8 \ | ||||
python3=${PYTHON_CMD} python=${PYTHON_CMD} | python3=${PYTHON_CMD} python=${PYTHON_CMD} | ||||
.if ${FLAVOR} == macchiatobin | .if ${FLAVOR} == macchiatobin | ||||
PLAT= macchiatobin | PLAT= macchiatobin | ||||
PLAT_ARCH= AARCH64 | PLAT_ARCH= AARCH64 | ||||
PLAT_ARGS= -D X64EMU_ENABLE=TRUE -D CAPSULE_ENABLE=FALSE | PLAT_ARGS= -D X64EMU_ENABLE=TRUE -D CAPSULE_ENABLE=FALSE | ||||
PLAT_TARGET= RELEASE | PLAT_TARGET= RELEASE | ||||
Show All 17 Lines | |||||
PLAT_ARCH= AARCH64 | PLAT_ARCH= AARCH64 | ||||
PLAT_ARGS= -D X64EMU_ENABLE=FALSE -D CAPSULE_ENABLE=FALSE | PLAT_ARGS= -D X64EMU_ENABLE=FALSE -D CAPSULE_ENABLE=FALSE | ||||
PLAT_TARGET= RELEASE | PLAT_TARGET= RELEASE | ||||
PLATFILE= Platform/RaspberryPi/RPi4/RPi4.dsc | PLATFILE= Platform/RaspberryPi/RPi4/RPi4.dsc | ||||
PLAT_RESULT= RPi4/${PLAT_TARGET}_GCC5/FV/RPI_EFI.fd | PLAT_RESULT= RPi4/${PLAT_TARGET}_GCC5/FV/RPI_EFI.fd | ||||
PLAT_FILENAME= RPI_EFI.fd | PLAT_FILENAME= RPI_EFI.fd | ||||
.endif | .endif | ||||
.if ${FLAVOR} == xen | |||||
PLAT= xen | |||||
PLAT_ARCH= X64 | |||||
PLAT_TARGET= RELEASE | |||||
PLATFILE= OvmfPkg/OvmfXen.dsc | |||||
PLAT_RESULT= OvmfXen/${PLAT_TARGET}_GCC5/FV/OVMF.fd | |||||
PLAT_FILENAME= XEN_EFI.fd | |||||
.endif | |||||
PLIST_FILES= ${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} | PLIST_FILES= ${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} | ||||
# Emulate source edk2/edksetup.sh | # Emulate source edk2/edksetup.sh | ||||
MAKE_ENV+= WORKSPACE=${WRKDIR} \ | MAKE_ENV+= WORKSPACE=${WRKDIR} \ | ||||
PACKAGES_PATH=${WRKDIR}/edk2-${GH_TAGNAME}:${WRKDIR}/edk2-platforms-${PLATFORM_TAG}:${WRKDIR}/edk2-non-osi-${NONOSI_TAG} \ | PACKAGES_PATH=${WRKDIR}/edk2-${GH_TAGNAME}:${WRKDIR}/edk2-platforms-${PLATFORM_TAG}:${WRKDIR}/edk2-non-osi-${NONOSI_TAG} \ | ||||
CONF_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/Conf \ | CONF_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/Conf \ | ||||
EDK_TOOLS_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools \ | EDK_TOOLS_PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools \ | ||||
PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/BinWrappers/PosixLike:${PATH} \ | PATH=${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/BinWrappers/PosixLike:${PATH} \ | ||||
PYTHON_COMMAND=python3 \ | PYTHON_COMMAND=python3 \ | ||||
PYTHONHASHSEED=1 | PYTHONHASHSEED=1 | ||||
.if ${PLAT_ARCH} == AARCH64 | .if ${PLAT_ARCH} == AARCH64 | ||||
BUILD_DEPENDS+= aarch64-none-elf-gcc:devel/aarch64-none-elf-gcc | |||||
MAKE_ENV+= GCC5_AARCH64_PREFIX=aarch64-none-elf- | MAKE_ENV+= GCC5_AARCH64_PREFIX=aarch64-none-elf- | ||||
.endif | .endif | ||||
.if ${PLAT_ARCH} == X64 | |||||
BUILD_DEPENDS+= nasm:devel/nasm | |||||
manu: Does all the x64 targets needs nasm or only xen ? | |||||
Done Inline ActionsAll X64 (and IA32) need nasm. See uefi-edk2-qemu for example, or the -bhyve one. royger: All X64 (and IA32) need nasm. See uefi-edk2-qemu for example, or the -bhyve one. | |||||
.endif | |||||
# We can't have two submodule with the same origin in GH_TUPLE | # We can't have two submodule with the same origin in GH_TUPLE | ||||
post-extract: | post-extract: | ||||
(cd ${WRKDIR}/edk2-${GH_TAGNAME}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli && tar cf - * | tar xf - -C ../../../../BaseTools/Source/C/BrotliCompress/brotli) | (cd ${WRKDIR}/edk2-${GH_TAGNAME}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli && tar cf - * | tar xf - -C ../../../../BaseTools/Source/C/BrotliCompress/brotli) | ||||
do-build: | do-build: | ||||
# This is normaly done during source edksetup.sh | # 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/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/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) | (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/target.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/target.txt) | ||||
# Build the basetools | # Build the basetools | ||||
(cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -C edk2-${GH_TAGNAME}/BaseTools ${_MAKE_JOBS}) | (cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -C edk2-${GH_TAGNAME}/BaseTools ${_MAKE_JOBS}) | ||||
# Build EDK2 | # 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}) | (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}) | ||||
do-install: | do-install: | ||||
${MKDIR} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/ | ${MKDIR} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/ | ||||
${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/ | ${INSTALL_DATA} ${WRKDIR}/Build/${PLAT_RESULT} ${STAGEDIR}/${PREFIX}/share/${PORTNAME}-${PLAT}/${PLAT_FILENAME} | ||||
.include <bsd.port.mk> | .include <bsd.port.mk> |
Does all the x64 targets needs nasm or only xen ?