diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2017-08-23 00:10:20 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-08-23 08:47:03 +0100 |
commit | ed52aa9e79d713c79aff787bcf3ac9168970f4ac (patch) | |
tree | bad38abae2e4e682c6002c8588ebb7bfba2e89c0 | |
parent | 1a73074d75b8aa12427a3c20f7f40223127e43dd (diff) | |
download | poky-ed52aa9e79d713c79aff787bcf3ac9168970f4ac.tar.gz |
grub2: fix build on gcc where _FORTIFY_SOURCE is defined
* e.g. with gentoo gcc-7.1 they define _FORTIFY_SOURCE by default with:
https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/7.1.0/gentoo/10_all_default-fortify-source.patch?view=markup
which results in following error while building grub-efi-native:
./config-util.h:1504:48: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
|| (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
^~~~~~~~~~~~~~~
this part comes from gnulib and it's used only for Apple and BSD,
so we can ignore it, but we cannot add -Wno-error=expansion-to-defined
because this warning was introduced only in gcc-7 and older gcc
will fail with:
cc1: error: -Werror=expansion-to-defined: no option -Wexpansion-to-defined
use #pragma to work around this
(From OE-Core rev: f5302b0ad2942f7705d46c33949ebc1c5ddf3f58)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch | 39 | ||||
-rw-r--r-- | meta/recipes-bsp/grub/grub2.inc | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch b/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch new file mode 100644 index 0000000000..f35df97bfc --- /dev/null +++ b/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | * e.g. with gentoo gcc-7.1 they define _FORTIFY_SOURCE by default with: | ||
2 | https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/7.1.0/gentoo/10_all_default-fortify-source.patch?view=markup | ||
3 | which results in following error while building grub-efi-native: | ||
4 | ./config-util.h:1504:48: error: this use of "defined" may not be portable [-Werror=expansion-to-defined] | ||
5 | || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ | ||
6 | ^~~~~~~~~~~~~~~ | ||
7 | this part comes from gnulib and it's used only for Apple and BSD, | ||
8 | so we can ignore it, but we cannot add -Wno-error=expansion-to-defined | ||
9 | because this warning was introduced only in gcc-7 and older gcc | ||
10 | will fail with: | ||
11 | cc1: error: -Werror=expansion-to-defined: no option -Wexpansion-to-defined | ||
12 | use #pragma to work around this | ||
13 | |||
14 | Upstream-Status: Pending (should be fixed in gnulib which is then rarely updated in grub) | ||
15 | |||
16 | Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> | ||
17 | |||
18 | diff -uNr grub-2.02.old/m4/extern-inline.m4 grub-2.02/m4/extern-inline.m4 | ||
19 | --- grub-2.02.old/m4/extern-inline.m4 2016-02-28 15:22:21.000000000 +0100 | ||
20 | +++ grub-2.02/m4/extern-inline.m4 2017-08-22 19:26:45.213637276 +0200 | ||
21 | @@ -39,6 +39,10 @@ | ||
22 | OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and | ||
23 | for clang but remains for g++; see <http://trac.macports.org/ticket/41033>. | ||
24 | Assume DragonFly and FreeBSD will be similar. */ | ||
25 | +#pragma GCC diagnostic push | ||
26 | +#if __GNUC__ >= 7 | ||
27 | +#pragma GCC diagnostic ignored "-Wexpansion-to-defined" | ||
28 | +#endif | ||
29 | #if (((defined __APPLE__ && defined __MACH__) \ | ||
30 | || defined __DragonFly__ || defined __FreeBSD__) \ | ||
31 | && (defined __header_inline \ | ||
32 | @@ -50,6 +52,7 @@ | ||
33 | && defined __GNUC__ && ! defined __cplusplus)))) | ||
34 | # define _GL_EXTERN_INLINE_STDHEADER_BUG | ||
35 | #endif | ||
36 | +#pragma GCC diagnostic pop | ||
37 | #if ((__GNUC__ \ | ||
38 | ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ | ||
39 | : (199901L <= __STDC_VERSION__ \ | ||
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc index 240a1f9286..a56fbe7bf8 100644 --- a/meta/recipes-bsp/grub/grub2.inc +++ b/meta/recipes-bsp/grub/grub2.inc | |||
@@ -17,6 +17,7 @@ SRC_URI = "https://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \ | |||
17 | file://autogen.sh-exclude-pc.patch \ | 17 | file://autogen.sh-exclude-pc.patch \ |
18 | file://grub-module-explicitly-keeps-symbole-.module_license.patch \ | 18 | file://grub-module-explicitly-keeps-symbole-.module_license.patch \ |
19 | file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \ | 19 | file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \ |
20 | file://fix.build.with.gcc-7.patch \ | ||
20 | " | 21 | " |
21 | SRC_URI[md5sum] = "1116d1f60c840e6dbd67abbc99acb45d" | 22 | SRC_URI[md5sum] = "1116d1f60c840e6dbd67abbc99acb45d" |
22 | SRC_URI[sha256sum] = "660ee136fbcee08858516ed4de2ad87068bfe1b6b8b37896ce3529ff054a726d" | 23 | SRC_URI[sha256sum] = "660ee136fbcee08858516ed4de2ad87068bfe1b6b8b37896ce3529ff054a726d" |