linux: align endianess based on the Buildroot configuration
authorOfer Heifetz <oferh@marvell.com>
Thu, 19 May 2016 13:17:03 +0000 (16:17 +0300)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 11 Jun 2016 14:19:30 +0000 (16:19 +0200)
The endianess of the Linux kernel should be based on BR2_ENDIAN, so that
it is automatically built for the right endianness.

Signed-off-by: Ofer Heifetz <oferh@marvell.com>
[Thomas: tweak commit message, add comment in .mk file.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
linux/linux.mk

index fdd8421d948e54568705ae0e834b2680bd41ebc7..a751da93b09ca8a878f941bb766abf08064ffcdd 100644 (file)
@@ -216,6 +216,20 @@ LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS)
 # If no package has yet set it, set it from the Kconfig option
 LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES)
 
+# Make sure the Linux kernel is built with the right endianness. Not
+# all architectures support
+# CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN in Linux, but the
+# option will be thrown away and ignored if it doesn't exist.
+ifeq ($(BR2_ENDIAN),"BIG")
+define LINUX_FIXUP_CONFIG_ENDIANNESS
+       $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_BIG_ENDIAN,$(@D)/.config)
+endef
+else
+define LINUX_FIXUP_CONFIG_ENDIANNESS
+       $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_LITTLE_ENDIAN,$(@D)/.config)
+endef
+endif
+
 define LINUX_KCONFIG_FIXUP_CMDS
        $(if $(LINUX_NEEDS_MODULES),
                $(call KCONFIG_ENABLE_OPT,CONFIG_MODULES,$(@D)/.config))
@@ -223,6 +237,7 @@ define LINUX_KCONFIG_FIXUP_CMDS
        $(foreach opt, $(LINUX_COMPRESSION_OPT_),
                $(call KCONFIG_DISABLE_OPT,$(opt),$(@D)/.config)
        )
+       $(LINUX_FIXUP_CONFIG_ENDIANNESS)
        $(if $(BR2_arm)$(BR2_armeb),
                $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config))
        $(if $(BR2_TARGET_ROOTFS_CPIO),