efivar: introduce BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS
authorErico Nunes <nunes.erico@gmail.com>
Mon, 5 Dec 2016 23:07:17 +0000 (00:07 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 7 Dec 2016 22:41:52 +0000 (23:41 +0100)
efivar only makes sense on platforms that support UEFI.
UEFI is only supported by some architectures at the moment, being mostly
employed on platforms such as x86, x86_64 and aarch64. Some other
platforms such as MIPS and PowerPC may have some unofficial UEFI
support. UEFI is also limited to little endian architectures.

efivar was being supported in Buildroot without architecture
restrictions so far, however this has led to the creation of a number of
hacks in the recipes, mostly for architectures that are not supported by
UEFI.
In order to avoid spending more time to debug these failures and
maintaining more hacks for unsupported architectures, efivar can be
restricted to that platforms where it makes sense and where it is more
likely to receive some testing and actual usage.

The existing hacks for the now unsupported architectures are removed,
and the dependency is propagated to efibootmgr as it depends on efivar.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/efibootmgr/Config.in
package/efivar/Config.in
package/efivar/efivar.mk

index cd4bda1d75a36c9d6b9fea8e2883b22382e0626f..a4011d6a1da17eac1a2d132ce986c0fe0ab99ce0 100644 (file)
@@ -1,11 +1,11 @@
 config BR2_PACKAGE_EFIBOOTMGR
        bool "efibootmgr"
+       depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS # efivar
        depends on !BR2_STATIC_LIBS # efivar
        depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar
        depends on !BR2_TOOLCHAIN_USES_MUSL # efivar
        depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar
-       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
-               !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII # efivar
+       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
        select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT
        select BR2_PACKAGE_EFIVAR
        help
@@ -17,9 +17,9 @@ config BR2_PACKAGE_EFIBOOTMGR
          https://github.com/rhinstaller/efibootmgr
 
 comment "efibootmgr needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9"
+       depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS
        depends on BR2_STATIC_LIBS || \
                !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \
                BR2_TOOLCHAIN_USES_MUSL || \
                !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
-               !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
+       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
index a97c766be4dae6e9cd399133d3e33456f126b53b..0ec836007b85e3be4f32e43a1048627df98b4421 100644 (file)
@@ -1,5 +1,12 @@
+config BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS
+       bool
+       depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 \
+               || BR2_powerpc64le || BR2_mipsel || BR2_mips64el
+       default y
+
 config BR2_PACKAGE_EFIVAR
        bool "efivar"
+       depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS
        depends on !BR2_STATIC_LIBS # dlfcn.h
        depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h
        # linux/nvme.h has been renamed to linux/nvme_ioctl.h since 4.4,
@@ -8,8 +15,7 @@ config BR2_PACKAGE_EFIVAR
        # don't have that header file renamed, and that is causing build
        # failures. So, prevent this package to be built using those
        # toolchains.
-       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
-               !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
+       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
        # doesn't build with musl due to lack of __bswap_constant_16
        depends on !BR2_TOOLCHAIN_USES_MUSL
        depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
@@ -20,9 +26,9 @@ config BR2_PACKAGE_EFIVAR
          https://github.com/rhinstaller/efivar
 
 comment "efivar needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9"
+       depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS
        depends on BR2_STATIC_LIBS || \
                !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \
                BR2_TOOLCHAIN_USES_MUSL || \
                !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
-               !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
+       depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
index 84735b8fb07263860e90ee43c6a668afdba99e3f..c31d87b84089f743f13e0701169ad3f3fe60c878 100644 (file)
@@ -21,12 +21,6 @@ EFIVAR_MAKE_OPTS = \
        BINTARGETS=efivar \
        LDFLAGS="$(TARGET_LDFLAGS) -fPIC"
 
-# Explicitly linking with shared libgcc is required on MicroBlaze and
-# Nios II, otherwise it fails due to FDE encoding in static libgcc.
-ifeq ($(BR2_microblaze)$(BR2_nios2),y)
-EFIVAR_MAKE_OPTS += SOFLAGS="-shared -shared-libgcc"
-endif
-
 define EFIVAR_BUILD_CMDS
        # makeguids is an internal host tool and must be built separately with
        # $(HOST_CC), otherwise it gets cross-built.