Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
442f04c3 | 2 | include ../scripts/Makefile.include |
630e7a29 | 3 | include ../scripts/Makefile.arch |
442f04c3 | 4 | |
442f04c3 | 5 | ifeq ($(srctree),) |
e19b7cee | 6 | srctree := $(patsubst %/,%,$(dir $(CURDIR))) |
442f04c3 JP |
7 | srctree := $(patsubst %/,%,$(dir $(srctree))) |
8 | endif | |
9 | ||
bdb8bf7d IR |
10 | LIBSUBCMD_DIR = $(srctree)/tools/lib/subcmd/ |
11 | ifneq ($(OUTPUT),) | |
12 | LIBSUBCMD_OUTPUT = $(abspath $(OUTPUT))/libsubcmd | |
13 | else | |
14 | LIBSUBCMD_OUTPUT = $(CURDIR)/libsubcmd | |
15 | endif | |
16 | LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a | |
442f04c3 JP |
17 | |
18 | OBJTOOL := $(OUTPUT)objtool | |
19 | OBJTOOL_IN := $(OBJTOOL)-in.o | |
20 | ||
d5ea4fec CTS |
21 | LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null) |
22 | LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf) | |
056d28d1 | 23 | |
442f04c3 JP |
24 | all: $(OBJTOOL) |
25 | ||
6a77cff8 | 26 | INCLUDES := -I$(srctree)/tools/include \ |
32b50485 | 27 | -I$(srctree)/tools/include/uapi \ |
6a77cff8 | 28 | -I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \ |
6f8ca676 | 29 | -I$(srctree)/tools/arch/$(SRCARCH)/include \ |
7786032e | 30 | -I$(srctree)/tools/objtool/include \ |
bdb8bf7d IR |
31 | -I$(srctree)/tools/objtool/arch/$(SRCARCH)/include \ |
32 | -I$(LIBSUBCMD_OUTPUT)/include | |
cd955bdd IR |
33 | # Note, EXTRA_WARNINGS here was determined for CC and not HOSTCC, it |
34 | # is passed here to match a legacy behavior. | |
2486baae | 35 | WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs |
cd955bdd IR |
36 | OBJTOOL_CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS) |
37 | OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS) | |
442f04c3 | 38 | |
2e51f262 | 39 | # Allow old libelf to be used: |
bf71940f | 40 | elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - 2>/dev/null | grep elf_getshdr) |
cd955bdd IR |
41 | OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) |
42 | ||
43 | # Always want host compilation. | |
44 | HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" | |
2e51f262 | 45 | |
442f04c3 | 46 | AWK = awk |
bdb8bf7d | 47 | MKDIR = mkdir |
0decf1f8 | 48 | |
b51277eb | 49 | BUILD_ORC := n |
0decf1f8 MH |
50 | |
51 | ifeq ($(SRCARCH),x86) | |
b51277eb | 52 | BUILD_ORC := y |
0decf1f8 | 53 | endif |
3c7266cd TY |
54 | |
55 | ifeq ($(SRCARCH),loongarch) | |
56 | BUILD_ORC := y | |
57 | endif | |
0decf1f8 | 58 | |
b51277eb | 59 | export BUILD_ORC |
60cbdf5d | 60 | export srctree OUTPUT CFLAGS SRCARCH AWK |
442f04c3 JP |
61 | include $(srctree)/tools/build/Makefile.include |
62 | ||
cd955bdd | 63 | $(OBJTOOL_IN): fixdep $(LIBSUBCMD) FORCE |
8c4526ca | 64 | $(Q)$(CONFIG_SHELL) ./sync-check.sh |
cd955bdd IR |
65 | $(Q)$(MAKE) $(build)=objtool $(HOST_OVERRIDES) CFLAGS="$(OBJTOOL_CFLAGS)" \ |
66 | LDFLAGS="$(OBJTOOL_LDFLAGS)" | |
67 | ||
442f04c3 JP |
68 | |
69 | $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN) | |
cd955bdd | 70 | $(QUIET_LINK)$(HOSTCC) $(OBJTOOL_IN) $(OBJTOOL_LDFLAGS) -o $@ |
442f04c3 JP |
71 | |
72 | ||
bdb8bf7d | 73 | $(LIBSUBCMD_OUTPUT): |
8c4526ca | 74 | $(Q)$(MKDIR) -p $@ |
bdb8bf7d IR |
75 | |
76 | $(LIBSUBCMD): fixdep $(LIBSUBCMD_OUTPUT) FORCE | |
8c4526ca | 77 | $(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=$(LIBSUBCMD_OUTPUT) \ |
bdb8bf7d | 78 | DESTDIR=$(LIBSUBCMD_OUTPUT) prefix= subdir= \ |
cd955bdd | 79 | $(HOST_OVERRIDES) EXTRA_CFLAGS="$(OBJTOOL_CFLAGS)" \ |
bdb8bf7d IR |
80 | $@ install_headers |
81 | ||
82 | $(LIBSUBCMD)-clean: | |
83 | $(call QUIET_CLEAN, libsubcmd) | |
84 | $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) | |
442f04c3 | 85 | |
bdb8bf7d | 86 | clean: $(LIBSUBCMD)-clean |
442f04c3 JP |
87 | $(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL) |
88 | $(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete | |
bdb8bf7d | 89 | $(Q)$(RM) $(OUTPUT)arch/x86/lib/inat-tables.c $(OUTPUT)fixdep |
442f04c3 JP |
90 | |
91 | FORCE: | |
92 | ||
93 | .PHONY: clean FORCE |