diff options
Diffstat (limited to 'import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar')
9 files changed, 327 insertions, 0 deletions
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch new file mode 100644 index 000000000..b4ce132a2 --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch @@ -0,0 +1,33 @@ +From d65c325dd8681edf2ee3332eeb0a547229c7ffb5 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 24 Aug 2017 15:54:47 -0700 +Subject: [PATCH] efivar-dp.h: Add -Wunknown-attributes when using clang + +change !dp check to a comparision against NULL to silent clang warning +nonnull parameter 'dp' will evaluate to 'true' on first encounter + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + src/include/efivar/efivar-dp.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/include/efivar/efivar-dp.h b/src/include/efivar/efivar-dp.h +index 3a509b7..c140e8d 100644 +--- a/src/include/efivar/efivar-dp.h ++++ b/src/include/efivar/efivar-dp.h +@@ -783,9 +783,14 @@ extern int efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out); + * though older or other compilers might just ignore that attribute if they + * don't support it. Ugh. + */ ++#pragma GCC diagnostic push + #if defined(__GNUC__) && __GNUC__ >= 6 + #pragma GCC diagnostic ignored "-Wnonnull-compare" + #endif ++#if defined(__clang__) ++#pragma GCC diagnostic ignored "-Wunknown-attributes" ++#pragma GCC diagnostic ignored "-Wpointer-bool-conversion" ++#endif + + static inline int16_t + __attribute__((__artificial__)) diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch new file mode 100644 index 000000000..251e50c90 --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch @@ -0,0 +1,32 @@ +From a9115d9e6f0f62d6bb735ce3698858d1f89f8d73 Mon Sep 17 00:00:00 2001 +From: Kai Kang <kai.kang@windriver.com> +Date: Fri, 25 Sep 2015 18:14:31 +0800 +Subject: [PATCH] efivar: fix for cross compile + +It builds and calls elf file makeguids to generate a header file which +doesn't work for cross compile. Fix it. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +Upstream-Status: Pending +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> + +--- + src/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 0c16597..dcc7fc8 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -40,8 +40,8 @@ abicheck : $(patsubst %.so,%.abicheck,$(LIBTARGETS)) + ./guid-symbols.c : include/efivar/efivar-guids.h + ./guids.bin : include/efivar/efivar-guids.h + ./names.bin : include/efivar/efivar-guids.h +-include/efivar/efivar-guids.h : makeguids guids.txt +- ./makeguids guids.txt guids.bin names.bin \ ++include/efivar/efivar-guids.h : guids.txt ++ makeguids guids.txt guids.bin names.bin \ + guid-symbols.c include/efivar/efivar-guids.h + + makeguids : CPPFLAGS+=-DEFIVAR_BUILD_ENVIRONMENT diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch new file mode 100644 index 000000000..2a6eb065f --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch @@ -0,0 +1,35 @@ +From dd4291265b7b3d7d7ffa1d8adf32781ae25dbfeb Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sat, 15 Jul 2017 00:29:42 -0700 +Subject: [PATCH] makeguids: Do not use __bswap_constant_{16|32} macros + +not available on musl + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + src/makeguids.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/makeguids.c b/src/makeguids.c +index da2f5f7..daf821a 100644 +--- a/src/makeguids.c ++++ b/src/makeguids.c +@@ -155,13 +155,13 @@ main(int argc, char *argv[]) + #if BYTE_ORDER == BIG_ENDIAN\n\ + #define cpu_to_be32(n) (n)\n\ + #define cpu_to_be16(n) (n)\n\ +-#define cpu_to_le32(n) (__bswap_constant_32(n))\n\ +-#define cpu_to_le16(n) (__bswap_constant_16(n))\n\ ++#define cpu_to_le32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\ ++#define cpu_to_le16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\ + #else\n\ + #define cpu_to_le32(n) (n)\n\ + #define cpu_to_le16(n) (n)\n\ +-#define cpu_to_be32(n) (__bswap_constant_32(n))\n\ +-#define cpu_to_be16(n) (__bswap_constant_16(n))\n\ ++#define cpu_to_be32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\ ++#define cpu_to_be16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\ + #endif\n\ + """); + diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch new file mode 100644 index 000000000..83105fe0d --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch @@ -0,0 +1,42 @@ +From dea4a55714249b2734a36701120fd22c91c64ec2 Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Sat, 7 May 2016 02:06:47 -0400 +Subject: [PATCH] Makefile: fix efivar.pc not found + +It fixes efivar.pc not found: +... +| install -d -m 755 efivar/0.23-r0/image/usr/lib/pkgconfig/ +| install -m 644 efivar.pc efivar/0.23-r0/image/usr/lib/pkgconfig/ +; install -m 644 efiboot.pc efivar/0.23-r0/image/usr/lib/pkgconfig/ +; +| install: cannot stat 'efivar.pc': No such file or directory +| install: cannot stat 'efiboot.pc': No such file or directory +| make[1]: *** [install] Error 1 +| make[1]: Leaving directory `efivar/0.23-r0/git/src' +| make: *** [install] Error 2 +| ERROR: oe_runmake failed +... + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> + +--- + src/Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index dcc7fc8..691aa8a 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -94,7 +94,9 @@ install : all + ln -fs $(x).1.$(VERSION) $(DESTDIR)$(libdir)/$(x) ;\ + ) + $(INSTALL) -d -m 755 $(DESTDIR)$(PCDIR) +- $(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(x) $(DESTDIR)$(PCDIR) ;) ++ $(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(TOPDIR)/src/$(x).in $(DESTDIR)$(PCDIR)/$(x) ;\ ++ sed -i -e "s:@@LIBDIR@@:$(libdir):g" -e "s:@@VERSION@@:$(VERSION):g" \ ++ $(DESTDIR)$(PCDIR)/$(x); ) + $(INSTALL) -d -m 755 $(DESTDIR)$(includedir)/efivar + $(foreach x, $(wildcard $(TOPDIR)/src/include/efivar/*.h), $(INSTALL) -m 644 $(x) $(DESTDIR)$(includedir)/efivar/$(notdir $(x));) + $(INSTALL) -d -m 755 $(DESTDIR)$(bindir) diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch new file mode 100644 index 000000000..96d0c6b3b --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch @@ -0,0 +1,35 @@ +From b3d35e7dd27a755df5acbe050837885914dbb28b Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Tue, 10 May 2016 11:34:50 -0400 +Subject: [PATCH] fix unknow option for gold linker + +- Revert the following patch, since oe-core work with gcc 5 +... +commit 3055a3797f16693dfdd855fa68bc57fd900dc408 +Author: Peter Jones <pjones@redhat.com> +Date: Mon Feb 15 14:15:40 2016 -0500 + + Make gcc.specs work with gcc 6 / binutils 2.26 + + Apparently binutils 2.26 gets real picky about "ld -PIC" vs "ld -fPIC". + + Signed-off-by: Peter Jones <pjones@redhat.com> +... + +- Remove unknown option '--add-needed' + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + gcc.specs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: git/gcc.specs +=================================================================== +--- git.orig/gcc.specs ++++ git/gcc.specs +@@ -14,4 +14,4 @@ + + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now} + + *link: +-+ %{!static:--fatal-warnings} --no-undefined-version --no-allow-shlib-undefined --add-needed -z now --build-id %{!static:%{!shared:-pie}} %{shared:-z relro} %{static:%<pie} +++ %{!static:--fatal-warnings} --no-undefined-version --no-allow-shlib-undefined -z now --build-id %{!static:%{!shared:-pie}} %{shared:-z relro} %{static:%<pie} diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch new file mode 100644 index 000000000..f88af1fe1 --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch @@ -0,0 +1,32 @@ +From c801dcb03d42eb533a9bead0b397d7ce4fc5a6fe Mon Sep 17 00:00:00 2001 +From: Kai Kang <kai.kang@windriver.com> +Date: Wed, 10 Aug 2016 17:49:50 +0800 +Subject: [PATCH] allow multi definitions for native + +Upstream-Status: Pending + +It fails to create .so file when build efivar-native: + +| lib.o:(*IND*+0x0): multiple definition of `efi_set_variable' +| lib.o:lib.c:(.text+0xa0): first defined here + +Add link option '-z muldefs' to fix it. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +--- + Make.rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Make.rules b/Make.rules +index 88b9aa7..799332f 100644 +--- a/Make.rules ++++ b/Make.rules +@@ -20,6 +20,7 @@ include $(TOPDIR)/Make.version + $(CCLD) $(ccldflags) $(CPPFLAGS) $(SOFLAGS) \ + -Wl,-soname,$@.1 \ + -Wl,--version-script=$(MAP) \ ++ -Wl,-z,muldefs \ + -o $@ $^ $(LDLIBS) + + %.abixml : %.so diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch new file mode 100644 index 000000000..dbc9a5755 --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch @@ -0,0 +1,43 @@ +From 3edce6a0019bcb90febc1f654b5b2e2bad5c59bd Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Thu, 26 May 2016 21:50:01 -0400 +Subject: [PATCH] fix compile failure with older host gcc (<=4.6) + +While host gcc version is 4.6.3 in ubuntu 1204, it +did not recognize -std=gnu11 and -Wmaybe-uninitialized. + +While host gcc version is 4.4.7 in centos6, it +did not recognize -std=gnu11, -Wmaybe-uninitialized, +and -flto. + +For native build, use -std=gnu99 to replace -std=gnu11, +and directly remove -Wmaybe-uninitialized and -flto. + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> + +--- + gcc.specs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gcc.specs b/gcc.specs +index 45d43d1..f1c6944 100644 +--- a/gcc.specs ++++ b/gcc.specs +@@ -2,13 +2,13 @@ + + -D_GNU_SOURCE + + *efivar_cpp_options: +- -Werror -Wall -std=gnu11 -Wextra ++ -Werror -Wall -std=gnu99 -Wextra + + *cpp_options: + + %(efivar_cpp_options) + + *cc1_options: +-+ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} +++ %(efivar_cpp_options) -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} + + *self_spec: + + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now} diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch new file mode 100644 index 000000000..5864ac63e --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch @@ -0,0 +1,25 @@ +From 8000b9afc858472912aace985004b44f8eb467e0 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 18 Aug 2017 09:49:49 -0700 +Subject: [PATCH] support musl + +Upstream-Status: Pending +--- + src/linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/linux.c b/src/linux.c +index 34ed479..1304f2b 100644 +--- a/src/linux.c ++++ b/src/linux.c +@@ -40,6 +40,10 @@ + #include <efivar.h> + #include <efiboot.h> + ++#if !defined(__GLIBC__) ++#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s) ++#endif ++ + #include "dp.h" + #include "linux.h" + #include "util.h" diff --git a/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb new file mode 100644 index 000000000..9d4cdc97b --- /dev/null +++ b/import-layers/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb @@ -0,0 +1,50 @@ +SUMMARY = "Tools to manipulate UEFI variables" +DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility" +HOMEPAGE = "https://github.com/rhinstaller/efivar" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393" + +DEPENDS = "popt" +DEPENDS_append_class-target = " efivar-native" + +inherit pkgconfig + +COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" + +SRCREV = "11324799c68193116e1dd5f94b416591bd324f90" +SRC_URI = "git://github.com/rhinstaller/efivar.git \ + file://allow-multi-definitions-for-native.patch \ + file://0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch \ + file://musl-strndupa.patch \ + file://0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch \ + " +SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch \ + file://0003-efivar-fix-for-cross-compile.patch \ + ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'file://0004-fix-unknow-option-for-gold-linker.patch', '', d)} \ + " +SRC_URI_append_class-native = " file://fix-compile-failure-with-host-gcc-4.6.patch \ + " + +S = "${WORKDIR}/git" + +# Setting CROSS_COMPILE breaks pkgconfig, so just set AR +EXTRA_OEMAKE = "AR=${TARGET_PREFIX}gcc-ar" + +do_compile_prepend() { + sed -i -e s:-Werror::g ${S}/gcc.specs +} + +do_compile_class-native() { + oe_runmake -C src makeguids +} + +do_install() { + oe_runmake install DESTDIR=${D} +} + +do_install_class-native() { + install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids +} + +BBCLASSEXTEND = "native" |