Changeset View
Changeset View
Standalone View
Standalone View
sysutils/uefi-edk2-qemu/Makefile
PORTNAME= uefi-edk2-qemu | PORTNAME= uefi-edk2-qemu | ||||
DISTVERSION= g20191122 | DISTVERSION= g202202 | ||||
CATEGORIES= sysutils | CATEGORIES= sysutils | ||||
MAINTAINER= bcran@FreeBSD.org | MAINTAINER= bcran@FreeBSD.org | ||||
COMMENT= OVMF package providing UEFI system firmware for QEMU | COMMENT= OVMF package providing UEFI system firmware for QEMU | ||||
LICENSE= BSD2CLAUSE | LICENSE= BSD2CLAUSE | ||||
ONLY_FOR_ARCHS= amd64 | ONLY_FOR_ARCHS= amd64 | ||||
BUILD_DEPENDS= bash:shells/bash \ | BUILD_DEPENDS= bash:shells/bash \ | ||||
nasm:devel/nasm \ | nasm:devel/nasm \ | ||||
${PYTHON_PKGNAMEPREFIX}sqlite3>=2.7:databases/py-sqlite3@${PY_FLAVOR} | |||||
FLAVORS= x86_64 i386 | FLAVORS= x86_64 i386 | ||||
USES= gmake \ | USES= gmake \ | ||||
python:3.4+,build | python:3.7+,build | ||||
USE_GCC= yes:build | USE_GCC= yes:build | ||||
x86_64_PKGNAMESUFFIX= -x86_64 | x86_64_PKGNAMESUFFIX= -x86_64 | ||||
i386_PKGNAMESUFFIX= -i386 | i386_PKGNAMESUFFIX= -i386 | ||||
USE_GITHUB= yes | USE_GITHUB= yes | ||||
GH_ACCOUNT= tianocore openssl:ssl | GH_ACCOUNT= tianocore | ||||
GH_PROJECT= edk2 openssl:ssl | GH_PROJECT= edk2 | ||||
GH_TAGNAME= edk2-stable201911 c3656cc594daac8167721dde7220f0e59ae146fc:ssl | GH_TAGNAME= edk2-stable202202 | ||||
GH_SUBDIR= CryptoPkg/Library/OpensslLib/openssl:ssl | GH_TUPLE= ucb-bar:berkeley-softfloat-3:master:softfloat/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \ | ||||
google:brotli:v1.0.9-35-gf4153a0:brotli/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli \ | |||||
openssl:openssl:OpenSSL_1_1_1j:openssl/CryptoPkg/Library/OpensslLib/openssl \ | |||||
kkos:oniguruma:v6.9.4_mark1:oniguruma/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma \ | |||||
akheron:jansson:v2.13.1:jansson/RedfishPkg/Library/JsonLib/jansson \ | |||||
BINARY_ALIAS= make=${LOCALBASE}/bin/gmake \ | |||||
gcc=${LOCALBASE}/bin/gcc${GCC_DEFAULT} \ | |||||
gcc-ar=${LOCALBASE}/bin/gcc-ar${GCC_DEFAULT} \ | |||||
g++=${LOCALBASE}/bin/g++${GCC_DEFAULT} \ | |||||
python3=${PYTHON_CMD} python=${PYTHON_CMD} | |||||
PLIST_FILES= share/uefi-edk2-qemu/QEMU_UEFI_CODE${PLIST_SUFFIX}-${PKGSUFFIX}.fd \ | PLIST_FILES= share/uefi-edk2-qemu/QEMU_UEFI_CODE${PLIST_SUFFIX}-${PKGSUFFIX}.fd \ | ||||
share/uefi-edk2-qemu/QEMU_UEFI_VARS${PLIST_SUFFIX}-${PKGSUFFIX}.fd | share/uefi-edk2-qemu/QEMU_UEFI_VARS${PLIST_SUFFIX}-${PKGSUFFIX}.fd | ||||
MAKE_ARGS= EXTRA_LDFLAGS=-static | |||||
BUILD_ARGS= -DDEBUG_ON_SERIAL_PORT=TRUE | |||||
OPTIONS_DEFINE= DEBUG HTTP_BOOT | OPTIONS_DEFINE= DEBUG HTTP_BOOT | ||||
OPTIONS_DEFAULT=HTTP_BOOT | OPTIONS_DEFAULT=HTTP_BOOT | ||||
DEBUG_DESC= Build a debug configuration | DEBUG_DESC= Build a debug configuration | ||||
HTTP_BOOT_DESC= Build with HTTP(S) boot support | HTTP_BOOT_DESC= Build with HTTP(S) boot support | ||||
DEBUG_VARS= uefi_target=DEBUG | DEBUG_VARS= PLAT_TARGET=DEBUG | ||||
DEBUG_VARS_OFF= uefi_target=RELEASE | DEBUG_VARS_OFF= PLAT_TARGET=RELEASE | ||||
HTTP_BOOT_VARS= build_args+=-DHTTP_BOOT_ENABLE=TRUE | HTTP_BOOT_VARS= PLAT_ARGS+=-DHTTP_BOOT_ENABLE=TRUE | ||||
PLAT_ARGS+= -DDEBUG_ON_SERIAL_PORT=TRUE | |||||
.if "${FLAVOR:U}" != i386 | .if "${FLAVOR:U}" != i386 | ||||
EDK2ARCH=X64 | PLAT_ARCH= X64 | ||||
EDK2BLDDIR=X64 | EDK2BLDDIR= X64 | ||||
PKGSUFFIX=x86_64 | PKGSUFFIX= x86_64 | ||||
PLAT_FILE= OvmfPkg/OvmfPkgX64.dsc | |||||
.endif | .endif | ||||
.if ${FLAVOR:U} == i386 | .if ${FLAVOR:U} == i386 | ||||
EDK2ARCH=IA32 | PLAT_ARCH= IA32 | ||||
EDK2BLDDIR=Ia32 | EDK2BLDDIR= Ia32 | ||||
PKGSUFFIX=i386 | PKGSUFFIX= i386 | ||||
PLAT_FILE= OvmfPkg/OvmfPkgIa32.dsc | |||||
.endif | .endif | ||||
post-patch: | PLAT_RESULT_CODE= Ovmf${EDK2BLDDIR}/${PLAT_TARGET}_GCC5/FV/OVMF_CODE.fd | ||||
${MKDIR} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}; | PLAT_RESULT_VARS= Ovmf${EDK2BLDDIR}/${PLAT_TARGET}_GCC5/FV/OVMF_VARS.fd | ||||
${LN} -sf ${LOCALBASE}/bin/gcc${GCC_DEFAULT} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/gcc | |||||
${LN} -sf ${LOCALBASE}/bin/gcc${GCC_DEFAULT} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/cc | |||||
${LN} -sf ${LOCALBASE}/bin/g++${GCC_DEFAULT} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/g++ | |||||
${LN} -sf ${LOCALBASE}/bin/ld ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/ld | |||||
${LN} -sf ${LOCALBASE}/bin/gmake ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/make | |||||
${LN} -sf ${LOCALBASE}/bin/gcc-ar${GCC_DEFAULT} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/gcc-ar | |||||
${LN} -sf ${LOCALBASE}/bin/gcc-nm${GCC_DEFAULT} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/gcc-nm | |||||
${LN} -sf ${LOCALBASE}/bin/objcopy ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/objcopy | |||||
${LN} -sf ${PYTHON_CMD} ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/python | |||||
${LN} -sf ${LOCALBASE}/bin/nasm ${BUILD_WRKSRC}/BaseTools/Bin/FreeBSD-${MACHINE}/nasm | |||||
# Emulate source edk2/edksetup.sh | |||||
MAKE_ENV+= WORKSPACE=${WRKDIR} \ | |||||
PACKAGES_PATH=${WRKDIR}/edk2-${GH_TAGNAME} \ | |||||
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 | |||||
# We can't have two submodule with the same origin in GH_TUPLE | |||||
post-extract: | |||||
(cd ${WRKDIR}/edk2-${GH_TAGNAME}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli && tar cf - * | tar xf - -C ../../../../BaseTools/Source/C/BrotliCompress/brotli) | |||||
do-build: | do-build: | ||||
bash -c "cd ${WRKSRC}; . ./edksetup.sh; ${MAKE_CMD} -j4 ${MAKE_ARGS} -C ${WRKSRC}/BaseTools" | # This is normaly done during source edksetup.sh | ||||
bash -c " \ | (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/build_rule.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/build_rule.txt) | ||||
cd ${BUILD_WRKSRC}; \ | (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/tools_def.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/tools_def.txt) | ||||
unset ARCH; unset MAKEFLAGS; \ | (cp ${WRKDIR}/edk2-${GH_TAGNAME}/BaseTools/Conf/target.template ${WRKDIR}/edk2-${GH_TAGNAME}/Conf/target.txt) | ||||
. ./edksetup.sh; \ | # Build the basetools | ||||
build -t GCC5 -a ${EDK2ARCH} -b ${UEFI_TARGET} -p OvmfPkg/OvmfPkg${EDK2ARCH}.dsc ${BUILD_ARGS} \ | (cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -C edk2-${GH_TAGNAME}/BaseTools -j ${MAKE_JOBS_NUMBER} ${_MAKE_JOBS}) | ||||
" | # Build EDK2 | ||||
(cd ${WRKDIR}/edk2-${GH_TAGNAME} && ${SETENV} ${MAKE_ENV} BaseTools/BinWrappers/PosixLike/build -a ${PLAT_ARCH} -p ${PLAT_FILE} -n ${MAKE_JOBS_NUMBER} -t GCC5 -b ${PLAT_TARGET} ${PLAT_ARGS}) | |||||
do-install: | do-install: | ||||
${MKDIR} ${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/ | ${MKDIR} ${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/ | ||||
${INSTALL} ${BUILD_WRKSRC}/Build/Ovmf${EDK2BLDDIR}/${UEFI_TARGET}_GCC5/FV/OVMF_CODE.fd \ | ${INSTALL} ${WRKDIR}/Build/${PLAT_RESULT_CODE} \ | ||||
${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/QEMU_UEFI_CODE${PLIST_SUFFIX}-${PKGSUFFIX}.fd | ${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/QEMU_UEFI_CODE${PLIST_SUFFIX}-${PKGSUFFIX}.fd | ||||
${INSTALL} ${BUILD_WRKSRC}/Build/Ovmf${EDK2BLDDIR}/${UEFI_TARGET}_GCC5/FV/OVMF_VARS.fd \ | ${INSTALL} ${WRKDIR}/Build/${PLAT_RESULT_VARS} \ | ||||
${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/QEMU_UEFI_VARS${PLIST_SUFFIX}-${PKGSUFFIX}.fd | ${STAGEDIR}${PREFIX}/share/uefi-edk2-qemu/QEMU_UEFI_VARS${PLIST_SUFFIX}-${PKGSUFFIX}.fd | ||||
.include <bsd.port.mk> | .include <bsd.port.mk> |