* [PATCH] recipes-devtools: Add OVMF recipe
@ 2014-08-12 15:27 Matt Fleming
2014-08-12 15:51 ` Martin Jansa
0 siblings, 1 reply; 3+ messages in thread
From: Matt Fleming @ 2014-08-12 15:27 UTC (permalink / raw)
To: openembedded-core; +Cc: Darren Hart, Matt Fleming
From: Matt Fleming <matt.fleming@intel.com>
The EDK2 project provides a UEFI firmware image for Qemu.
Import the OVMF recipe from the meta-luv layer.
Partial solution for [YOCTO #5654]
Cc: Max Eliaser <max.eliaser@intel.com>
Cc: Darren Hart <dvhart@linux.intel.com>
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
---
...s-Force-tools-variables-to-host-toolchain.patch | 48 ++++++++++++++++++
meta/recipes-devtools/ovmf/ovmf_git.bb | 59 ++++++++++++++++++++++
2 files changed, 107 insertions(+)
create mode 100644 meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
create mode 100644 meta/recipes-devtools/ovmf/ovmf_git.bb
diff --git a/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch b/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
new file mode 100644
index 0000000..c0cc633
--- /dev/null
+++ b/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
@@ -0,0 +1,48 @@
+From 6e24bde1979c2d7149b37d142fb882dfde0e9770 Mon Sep 17 00:00:00 2001
+From: Matt Fleming <matt.fleming@intel.com>
+Date: Fri, 27 Jun 2014 11:12:18 +0100
+Subject: [PATCH] BaseTools: Force tools variables to host toolchain
+
+Signed-off-by: Matt Fleming <matt.fleming@intel.com>
+---
+ BaseTools/Source/C/Makefiles/app.makefile | 7 +++++++
+ BaseTools/Source/C/VfrCompile/GNUmakefile | 5 +++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile
+index 19269a1..62aad0f 100644
+--- a/BaseTools/Source/C/Makefiles/app.makefile
++++ b/BaseTools/Source/C/Makefiles/app.makefile
+@@ -16,6 +16,13 @@ include $(MAKEROOT)/Makefiles/header.makefile
+
+ APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
+
++CC = gcc
++CXX = g++
++AS = gcc
++AR = ar
++LD = ld
++LINKER = $(CC)
++
+ .PHONY:all
+ all: $(MAKEROOT)/bin $(APPLICATION)
+
+diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile
+index 82005e1..5ac5f7e 100644
+--- a/BaseTools/Source/C/VfrCompile/GNUmakefile
++++ b/BaseTools/Source/C/VfrCompile/GNUmakefile
+@@ -26,6 +26,11 @@ OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyn
+
+ VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)
+
++CC = gcc
++CXX = g++
++AS = gcc
++AR = ar
++LD = ld
+ LINKER = $(CXX)
+
+ EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h
+--
+1.9.0
+
diff --git a/meta/recipes-devtools/ovmf/ovmf_git.bb b/meta/recipes-devtools/ovmf/ovmf_git.bb
new file mode 100644
index 0000000..7afd695
--- /dev/null
+++ b/meta/recipes-devtools/ovmf/ovmf_git.bb
@@ -0,0 +1,59 @@
+DESCRIPTION = "OVMF - UEFI firmware for Qemu and KVM"
+HOMEPAGE = "http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://OvmfPkg/License.txt;md5=ffd52cf9a8e0e036b9a61a0de2dc87ed"
+
+SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \
+ file://0001-BaseTools-Force-tools-variables-to-host-toolchain.patch"
+
+SRCREV="dc4ad1532e59fd1a185d6b90d1c2a92cf8713f40"
+
+S = "${WORKDIR}/git"
+
+DEPENDS="util-linux-native iasl-native"
+
+# OVMF has trouble building with the default optimization of -O2.
+BUILD_OPTIMIZATION="-pipe"
+
+# OVMF supports IA only, although it could conceivably support ARM someday.
+COMPATIBLE_HOST='(i.86|x86_64).*'
+
+do_patch_append() {
+ bb.build.exec_func('do_fix_iasl', d)
+ bb.build.exec_func('do_fix_toolchain', d)
+}
+
+do_fix_iasl() {
+ sed -i -e 's#/usr/bin/iasl#${STAGING_BINDIR_NATIVE}/iasl#' ${S}/BaseTools/Conf/tools_def.template
+}
+
+do_fix_toolchain(){
+ sed -i -e 's#DEF(ELFGCC_BIN)/#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template
+ sed -i -e 's#DEF(GCC.*PREFIX)#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template
+ sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile
+ sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile
+ sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
+ sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
+}
+
+GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}' | awk -F. '{print $1$2}')"
+
+do_compile() {
+ export LFLAGS="${LDFLAGS}"
+ OVMF_ARCH="X64"
+ if [ "${TARGET_ARCH}" != "x86_64" ] ; then
+ OVMF_ARCH="IA32"
+ fi
+ ${S}/OvmfPkg/build.sh -a $OVMF_ARCH -b RELEASE -t GCC${GCC_VER}
+}
+
+do_install() {
+ OVMF_DIR_SUFFIX="X64"
+ if [ "${TARGET_ARCH}" != "x86_64" ] ; then
+ OVMF_DIR_SUFFIX="Ia32" # Note the different capitalization
+ fi
+ install -d ${D}${datadir}/ovmf
+ build_dir="${S}/Build/Ovmf$OVMF_DIR_SUFFIX/RELEASE_GCC${GCC_VER}"
+ install -m 0755 ${build_dir}/FV/OVMF.fd \
+ ${D}${datadir}/ovmf/bios.bin
+}
--
1.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] recipes-devtools: Add OVMF recipe
2014-08-12 15:27 [PATCH] recipes-devtools: Add OVMF recipe Matt Fleming
@ 2014-08-12 15:51 ` Martin Jansa
2014-08-12 19:05 ` Matt Fleming
0 siblings, 1 reply; 3+ messages in thread
From: Martin Jansa @ 2014-08-12 15:51 UTC (permalink / raw)
To: Matt Fleming; +Cc: Darren Hart, Matt Fleming, openembedded-core
[-- Attachment #1: Type: text/plain, Size: 6130 bytes --]
On Tue, Aug 12, 2014 at 04:27:46PM +0100, Matt Fleming wrote:
> From: Matt Fleming <matt.fleming@intel.com>
>
> The EDK2 project provides a UEFI firmware image for Qemu.
>
> Import the OVMF recipe from the meta-luv layer.
>
> Partial solution for [YOCTO #5654]
>
> Cc: Max Eliaser <max.eliaser@intel.com>
> Cc: Darren Hart <dvhart@linux.intel.com>
> Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
> ---
> ...s-Force-tools-variables-to-host-toolchain.patch | 48 ++++++++++++++++++
> meta/recipes-devtools/ovmf/ovmf_git.bb | 59 ++++++++++++++++++++++
> 2 files changed, 107 insertions(+)
> create mode 100644 meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
> create mode 100644 meta/recipes-devtools/ovmf/ovmf_git.bb
>
> diff --git a/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch b/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
> new file mode 100644
> index 0000000..c0cc633
> --- /dev/null
> +++ b/meta/recipes-devtools/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch
> @@ -0,0 +1,48 @@
> +From 6e24bde1979c2d7149b37d142fb882dfde0e9770 Mon Sep 17 00:00:00 2001
> +From: Matt Fleming <matt.fleming@intel.com>
> +Date: Fri, 27 Jun 2014 11:12:18 +0100
> +Subject: [PATCH] BaseTools: Force tools variables to host toolchain
> +
> +Signed-off-by: Matt Fleming <matt.fleming@intel.com>
> +---
> + BaseTools/Source/C/Makefiles/app.makefile | 7 +++++++
> + BaseTools/Source/C/VfrCompile/GNUmakefile | 5 +++++
> + 2 files changed, 12 insertions(+)
> +
> +diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile
> +index 19269a1..62aad0f 100644
> +--- a/BaseTools/Source/C/Makefiles/app.makefile
> ++++ b/BaseTools/Source/C/Makefiles/app.makefile
> +@@ -16,6 +16,13 @@ include $(MAKEROOT)/Makefiles/header.makefile
> +
> + APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
> +
> ++CC = gcc
> ++CXX = g++
> ++AS = gcc
> ++AR = ar
> ++LD = ld
> ++LINKER = $(CC)
> ++
> + .PHONY:all
> + all: $(MAKEROOT)/bin $(APPLICATION)
> +
> +diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile
> +index 82005e1..5ac5f7e 100644
> +--- a/BaseTools/Source/C/VfrCompile/GNUmakefile
> ++++ b/BaseTools/Source/C/VfrCompile/GNUmakefile
> +@@ -26,6 +26,11 @@ OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyn
> +
> + VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS)
> +
> ++CC = gcc
> ++CXX = g++
> ++AS = gcc
> ++AR = ar
> ++LD = ld
> + LINKER = $(CXX)
> +
> + EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h
> +--
> +1.9.0
> +
> diff --git a/meta/recipes-devtools/ovmf/ovmf_git.bb b/meta/recipes-devtools/ovmf/ovmf_git.bb
> new file mode 100644
> index 0000000..7afd695
> --- /dev/null
> +++ b/meta/recipes-devtools/ovmf/ovmf_git.bb
> @@ -0,0 +1,59 @@
> +DESCRIPTION = "OVMF - UEFI firmware for Qemu and KVM"
> +HOMEPAGE = "http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF"
> +LICENSE = "BSD"
> +LIC_FILES_CHKSUM = "file://OvmfPkg/License.txt;md5=ffd52cf9a8e0e036b9a61a0de2dc87ed"
> +
> +SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \
> + file://0001-BaseTools-Force-tools-variables-to-host-toolchain.patch"
> +
> +SRCREV="dc4ad1532e59fd1a185d6b90d1c2a92cf8713f40"
> +
> +S = "${WORKDIR}/git"
> +
> +DEPENDS="util-linux-native iasl-native"
I don't think we have iasl in oe-core.
Also the styleguide says you should use space around = (SRCREV, DEPENDS,
COMPATIBLE_HOST, BUILD_OPTIMIZATION, GCC_VER)
> +# OVMF has trouble building with the default optimization of -O2.
> +BUILD_OPTIMIZATION="-pipe"
> +
> +# OVMF supports IA only, although it could conceivably support ARM someday.
> +COMPATIBLE_HOST='(i.86|x86_64).*'
> +
> +do_patch_append() {
> + bb.build.exec_func('do_fix_iasl', d)
> + bb.build.exec_func('do_fix_toolchain', d)
Why don't you fix them in do_configure_prepend?
> +}
> +
> +do_fix_iasl() {
> + sed -i -e 's#/usr/bin/iasl#${STAGING_BINDIR_NATIVE}/iasl#' ${S}/BaseTools/Conf/tools_def.template
> +}
> +
> +do_fix_toolchain(){
> + sed -i -e 's#DEF(ELFGCC_BIN)/#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template
> + sed -i -e 's#DEF(GCC.*PREFIX)#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template
> + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile
> + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile
> + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
> + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
> +}
> +
> +GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}' | awk -F. '{print $1$2}')"
> +
> +do_compile() {
> + export LFLAGS="${LDFLAGS}"
> + OVMF_ARCH="X64"
> + if [ "${TARGET_ARCH}" != "x86_64" ] ; then
> + OVMF_ARCH="IA32"
> + fi
> + ${S}/OvmfPkg/build.sh -a $OVMF_ARCH -b RELEASE -t GCC${GCC_VER}
> +}
> +
> +do_install() {
> + OVMF_DIR_SUFFIX="X64"
> + if [ "${TARGET_ARCH}" != "x86_64" ] ; then
> + OVMF_DIR_SUFFIX="Ia32" # Note the different capitalization
> + fi
> + install -d ${D}${datadir}/ovmf
> + build_dir="${S}/Build/Ovmf$OVMF_DIR_SUFFIX/RELEASE_GCC${GCC_VER}"
> + install -m 0755 ${build_dir}/FV/OVMF.fd \
> + ${D}${datadir}/ovmf/bios.bin
> +}
> --
> 1.9.3
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] recipes-devtools: Add OVMF recipe
2014-08-12 15:51 ` Martin Jansa
@ 2014-08-12 19:05 ` Matt Fleming
0 siblings, 0 replies; 3+ messages in thread
From: Matt Fleming @ 2014-08-12 19:05 UTC (permalink / raw)
To: Martin Jansa; +Cc: Darren Hart, Matt Fleming, openembedded-core
On Tue, 12 Aug, at 05:51:38PM, Martin Jansa wrote:
>
> I don't think we have iasl in oe-core.
Oops, my bad. I thought I'd checked that but turns out I was looking in
the wrong tree.
I'll include the iasl recipe with the next submission.
> Also the styleguide says you should use space around = (SRCREV, DEPENDS,
> COMPATIBLE_HOST, BUILD_OPTIMIZATION, GCC_VER)
Thanks, I'll update the patch.
> > +# OVMF has trouble building with the default optimization of -O2.
> > +BUILD_OPTIMIZATION="-pipe"
> > +
> > +# OVMF supports IA only, although it could conceivably support ARM someday.
> > +COMPATIBLE_HOST='(i.86|x86_64).*'
> > +
> > +do_patch_append() {
> > + bb.build.exec_func('do_fix_iasl', d)
> > + bb.build.exec_func('do_fix_toolchain', d)
>
> Why don't you fix them in do_configure_prepend?
What's the tradeoff?
Though I realise that we're not actually *patching* anything and so
do_configure_prepend() probably does make more semantic sense.
Ah, after a bit of grepping I see that it's a pretty common pattern. OK,
sure, I'll update this.
Thanks for the review.
--
Matt Fleming, Intel Open Source Technology Center
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-08-12 19:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-12 15:27 [PATCH] recipes-devtools: Add OVMF recipe Matt Fleming
2014-08-12 15:51 ` Martin Jansa
2014-08-12 19:05 ` Matt Fleming
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox