forked from luck/tmp_suning_uos_patched
ece9804985
At some point we decided not to directly include kernel sources files
when building tools/perf/, but when tools/lib/subcmd/ was forked from
tools/perf it somehow ended up adding it via these two lines in its
Makefile:
CFLAGS += -I$(srctree)/include/uapi
CFLAGS += -I$(srctree)/include
As $(srctree) points to the kernel sources.
Removing those lines and keeping just:
CFLAGS += -I$(srctree)/tools/include/
Is enough to build tools/perf and tools/objtool.
This fixes the build when building from the sources in environments such
as the Android NDK crossbuilding from a fedora:26 system:
subcmd-util.h:11:15: error: expected ',' or ';' before 'void'
static inline void report(const char *prefix, const char *err, va_list params)
^
In file included from /git/perf/include/uapi/linux/stddef.h:2:0,
from /git/perf/include/uapi/linux/posix_types.h:5,
from /opt/android-ndk-r12b/platforms/android-24/arch-arm/usr/include/sys/types.h:36,
from /opt/android-ndk-r12b/platforms/android-24/arch-arm/usr/include/unistd.h:33,
from run-command.c:2:
subcmd-util.h:18:17: error: '__no_instrument_function__' attribute applies only to functions
The /opt/android-ndk-r12b/platforms/android-24/arch-arm/usr/include/sys/types.h
file that includes linux/posix_types.h ends up getting the one in the kernel
sources causing the breakage. Fix it.
Test built tools/objtool/ too.
Reported-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Fixes: 4b6ab94eab
("perf subcmd: Create subcmd library")
Link: https://lkml.kernel.org/n/tip-5lhaoecrj12t0bqwvpiu14sm@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
62 lines
1.3 KiB
Makefile
62 lines
1.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
include ../../scripts/Makefile.include
|
|
include ../../scripts/utilities.mak # QUIET_CLEAN
|
|
|
|
ifeq ($(srctree),)
|
|
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
|
|
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
|
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
|
#$(info Determined 'srctree' to be $(srctree))
|
|
endif
|
|
|
|
CC ?= $(CROSS_COMPILE)gcc
|
|
LD ?= $(CROSS_COMPILE)ld
|
|
AR ?= $(CROSS_COMPILE)ar
|
|
|
|
RM = rm -f
|
|
|
|
MAKEFLAGS += --no-print-directory
|
|
|
|
LIBFILE = $(OUTPUT)libsubcmd.a
|
|
|
|
CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
|
|
CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC
|
|
|
|
ifeq ($(CC_NO_CLANG), 0)
|
|
CFLAGS += -O3
|
|
else
|
|
CFLAGS += -O6
|
|
endif
|
|
|
|
# Treat warnings as errors unless directed not to
|
|
ifneq ($(WERROR),0)
|
|
CFLAGS += -Werror
|
|
endif
|
|
|
|
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
|
|
|
|
CFLAGS += -I$(srctree)/tools/include/
|
|
|
|
SUBCMD_IN := $(OUTPUT)libsubcmd-in.o
|
|
|
|
all:
|
|
|
|
export srctree OUTPUT CC LD CFLAGS V
|
|
include $(srctree)/tools/build/Makefile.include
|
|
|
|
all: fixdep $(LIBFILE)
|
|
|
|
$(SUBCMD_IN): FORCE
|
|
@$(MAKE) $(build)=libsubcmd
|
|
|
|
$(LIBFILE): $(SUBCMD_IN)
|
|
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(SUBCMD_IN)
|
|
|
|
clean:
|
|
$(call QUIET_CLEAN, libsubcmd) $(RM) $(LIBFILE); \
|
|
find $(if $(OUTPUT),$(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM)
|
|
|
|
FORCE:
|
|
|
|
.PHONY: clean FORCE
|