From 2dd26fda16a4574c91d02f4b1ccb2ce121e764c8 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 12 May 2020 15:23:01 +0200 Subject: [PATCH] kernel: fix portability issue with perf on linux 5.4 Remove dependencies on core kernel headers in host tools used to build perf, which break on any non-linux system Signed-off-by: Felix Fietkau --- package/devel/perf/Makefile | 3 ++ ...lity.patch => 212-tools_portability.patch} | 51 +++++++++++++++++-- 2 files changed, 51 insertions(+), 3 deletions(-) rename target/linux/generic/hack-5.4/{212-byteshift_portability.patch => 212-tools_portability.patch} (56%) diff --git a/package/devel/perf/Makefile b/package/devel/perf/Makefile index aa478a0431..3bb403916b 100644 --- a/package/devel/perf/Makefile +++ b/package/devel/perf/Makefile @@ -36,6 +36,8 @@ define Package/perf/description perf is the Linux performance monitoring tool endef +HOST_CFLAGS += -I$(LINUX_DIR)/tools/include + MAKE_FLAGS = \ ARCH="$(LINUX_KARCH)" \ NO_LIBPERL=1 \ @@ -54,6 +56,7 @@ MAKE_FLAGS = \ LD="$(TARGET_CROSS)ld" \ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ + KBUILD_HOSTCFLAGS="$(HOST_CFLAGS)" \ $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ WERROR=0 \ O=$(PKG_BUILD_DIR) \ diff --git a/target/linux/generic/hack-5.4/212-byteshift_portability.patch b/target/linux/generic/hack-5.4/212-tools_portability.patch similarity index 56% rename from target/linux/generic/hack-5.4/212-byteshift_portability.patch rename to target/linux/generic/hack-5.4/212-tools_portability.patch index 1a5ac87988..0d8eb6fb9d 100644 --- a/target/linux/generic/hack-5.4/212-byteshift_portability.patch +++ b/target/linux/generic/hack-5.4/212-tools_portability.patch @@ -1,9 +1,8 @@ From 48232d3d931c95953ce2ddfe7da7bb164aef6a73 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 7 Jul 2017 17:03:16 +0200 -Subject: linux-3.6: fix portability of some includes files in tools/ used on the host +Subject: fix portability of some includes files in tools/ used on the host -lede-commit: 6040b1d29ab1f047c5e49b748abcb6a3196add28 Signed-off-by: Felix Fietkau --- tools/include/tools/be_byteshift.h | 4 ++++ @@ -40,26 +39,72 @@ Signed-off-by: Felix Fietkau static inline uint16_t __get_unaligned_le16(const uint8_t *p) --- /dev/null +++ b/tools/include/tools/linux_types.h -@@ -0,0 +1,22 @@ +@@ -0,0 +1,26 @@ +#ifndef __LINUX_TYPES_H +#define __LINUX_TYPES_H + +#include + ++typedef int8_t __s8; +typedef uint8_t __u8; +typedef uint8_t __be8; +typedef uint8_t __le8; + ++typedef int16_t __s16; +typedef uint16_t __u16; +typedef uint16_t __be16; +typedef uint16_t __le16; + ++typedef int32_t __s32; +typedef uint32_t __u32; +typedef uint32_t __be32; +typedef uint32_t __le32; + ++typedef int64_t __s64; +typedef uint64_t __u64; +typedef uint64_t __be64; +typedef uint64_t __le64; + +#endif +--- a/tools/include/linux/types.h ++++ b/tools/include/linux/types.h +@@ -7,8 +7,12 @@ + #include + + #define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ ++#ifndef __linux__ ++#include ++#else + #include + #include ++#endif + + struct page; + struct kmem_cache; +--- a/tools/perf/pmu-events/jevents.c ++++ b/tools/perf/pmu-events/jevents.c +@@ -1,4 +1,6 @@ ++#ifdef __linux__ + #define _XOPEN_SOURCE 500 /* needed for nftw() */ ++#endif + #define _GNU_SOURCE /* needed for asprintf() */ + + /* Parse event JSON files */ +@@ -35,6 +37,7 @@ + #include + #include + #include ++#include + #include + #include + #include +--- a/tools/perf/pmu-events/json.c ++++ b/tools/perf/pmu-events/json.c +@@ -38,7 +38,6 @@ + #include + #include "jsmn.h" + #include "json.h" +-#include + + + static char *mapfile(const char *fn, size_t *size)