Author: nbd Date: 2016-01-02 15:47:57 +0100 (Sat, 02 Jan 2016) New Revision: 48067
Added: trunk/package/devel/perf/musl-compat.h Modified: trunk/package/devel/perf/Makefile Log: perf: fix musl compatibility Signed-off-by: Felix Fietkau <[email protected]> Modified: trunk/package/devel/perf/Makefile =================================================================== --- trunk/package/devel/perf/Makefile 2016-01-02 14:47:48 UTC (rev 48066) +++ trunk/package/devel/perf/Makefile 2016-01-02 14:47:57 UTC (rev 48067) @@ -24,7 +24,7 @@ define Package/perf SECTION:=devel CATEGORY:=Development - DEPENDS:= @USE_GLIBC +libelf1 +libdw +libpthread +librt +binutils + DEPENDS:= @!USE_UCLIBC +libelf1 +libdw +libpthread +librt +binutils TITLE:=Linux performance monitoring tool VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE) URL:=http://www.kernel.org @@ -57,6 +57,10 @@ WERROR=0 \ prefix=/usr +ifdef CONFIG_USE_MUSL + MAKE_FLAGS += EXTRA_CFLAGS="-include $(CURDIR)/musl-compat.h -D__UCLIBC__" +endif + define Build/Compile +$(MAKE_FLAGS) $(MAKE) $(PKG_JOBS) \ -C $(PKG_BUILD_DIR) \ Added: trunk/package/devel/perf/musl-compat.h =================================================================== --- trunk/package/devel/perf/musl-compat.h (rev 0) +++ trunk/package/devel/perf/musl-compat.h 2016-01-02 14:47:57 UTC (rev 48067) @@ -0,0 +1,62 @@ +#ifndef __PERF_MUSL_COMPAT_H +#define __PERF_MUSL_COMPAT_H + +#include <sys/ioctl.h> +#include <string.h> +#include <unistd.h> +#include <stdio.h> +#include <syscall.h> +#include <sched.h> + +#undef _IOWR +#undef _IOR +#undef _IOW +#undef _IOC +#undef _IO + +/* Change XSI compliant version into GNU extension hackery */ +#define strerror_r(err, buf, buflen) \ + (strerror_r(err, buf, buflen) ? NULL : buf) + +#define _SC_LEVEL1_DCACHE_LINESIZE -1 + +static inline long sysconf_wrap(int name) +{ + FILE *f; + int val; + + switch (name) { + case _SC_LEVEL1_DCACHE_LINESIZE: + f = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r"); + if (!f) + return 0; + + if (fscanf(f, "%d", &val) != 1) + return 0; + + fclose(f); + return val; + default: + return sysconf(name); + } +} + +#define sysconf(_n) sysconf_wrap(_n) + +static inline int compat_sched_getcpu(void) +{ +#ifdef __NR_getcpu + unsigned int val; + + if (syscall(__NR_getcpu, &val)) + return -1; + + return val; +#else + return -1; +#endif +} + +#define sched_getcpu compat_sched_getcpu + +#endif _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
