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 JP |
26 | INCLUDES := -I$(srctree)/tools/include \ |
27 | -I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \ | |
6f8ca676 | 28 | -I$(srctree)/tools/arch/$(SRCARCH)/include \ |
7786032e | 29 | -I$(srctree)/tools/objtool/include \ |
bdb8bf7d IR |
30 | -I$(srctree)/tools/objtool/arch/$(SRCARCH)/include \ |
31 | -I$(LIBSUBCMD_OUTPUT)/include | |
cd955bdd IR |
32 | # Note, EXTRA_WARNINGS here was determined for CC and not HOSTCC, it |
33 | # is passed here to match a legacy behavior. | |
2486baae | 34 | WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs |
cd955bdd IR |
35 | OBJTOOL_CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS) |
36 | OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS) | |
442f04c3 | 37 | |
2e51f262 | 38 | # Allow old libelf to be used: |
cd955bdd IR |
39 | elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - | grep elf_getshdr) |
40 | OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) | |
41 | ||
42 | # Always want host compilation. | |
43 | HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" | |
2e51f262 | 44 | |
442f04c3 | 45 | AWK = awk |
bdb8bf7d | 46 | MKDIR = mkdir |
0decf1f8 | 47 | |
8c4526ca IR |
48 | ifeq ($(V),1) |
49 | Q = | |
50 | else | |
51 | Q = @ | |
52 | endif | |
53 | ||
b51277eb | 54 | BUILD_ORC := n |
0decf1f8 MH |
55 | |
56 | ifeq ($(SRCARCH),x86) | |
b51277eb | 57 | BUILD_ORC := y |
0decf1f8 | 58 | endif |
3c7266cd TY |
59 | |
60 | ifeq ($(SRCARCH),loongarch) | |
61 | BUILD_ORC := y | |
62 | endif | |
0decf1f8 | 63 | |
b51277eb | 64 | export BUILD_ORC |
60cbdf5d | 65 | export srctree OUTPUT CFLAGS SRCARCH AWK |
442f04c3 JP |
66 | include $(srctree)/tools/build/Makefile.include |
67 | ||
cd955bdd | 68 | $(OBJTOOL_IN): fixdep $(LIBSUBCMD) FORCE |
8c4526ca | 69 | $(Q)$(CONFIG_SHELL) ./sync-check.sh |
cd955bdd IR |
70 | $(Q)$(MAKE) $(build)=objtool $(HOST_OVERRIDES) CFLAGS="$(OBJTOOL_CFLAGS)" \ |
71 | LDFLAGS="$(OBJTOOL_LDFLAGS)" | |
72 | ||
442f04c3 JP |
73 | |
74 | $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN) | |
cd955bdd | 75 | $(QUIET_LINK)$(HOSTCC) $(OBJTOOL_IN) $(OBJTOOL_LDFLAGS) -o $@ |
442f04c3 JP |
76 | |
77 | ||
bdb8bf7d | 78 | $(LIBSUBCMD_OUTPUT): |
8c4526ca | 79 | $(Q)$(MKDIR) -p $@ |
bdb8bf7d IR |
80 | |
81 | $(LIBSUBCMD): fixdep $(LIBSUBCMD_OUTPUT) FORCE | |
8c4526ca | 82 | $(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=$(LIBSUBCMD_OUTPUT) \ |
bdb8bf7d | 83 | DESTDIR=$(LIBSUBCMD_OUTPUT) prefix= subdir= \ |
cd955bdd | 84 | $(HOST_OVERRIDES) EXTRA_CFLAGS="$(OBJTOOL_CFLAGS)" \ |
bdb8bf7d IR |
85 | $@ install_headers |
86 | ||
87 | $(LIBSUBCMD)-clean: | |
88 | $(call QUIET_CLEAN, libsubcmd) | |
89 | $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) | |
442f04c3 | 90 | |
bdb8bf7d | 91 | clean: $(LIBSUBCMD)-clean |
442f04c3 JP |
92 | $(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL) |
93 | $(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete | |
bdb8bf7d | 94 | $(Q)$(RM) $(OUTPUT)arch/x86/lib/inat-tables.c $(OUTPUT)fixdep |
442f04c3 JP |
95 | |
96 | FORCE: | |
97 | ||
98 | .PHONY: clean FORCE |