xref: /linux/kernel/bpf/Makefile (revision 99a832a2b5b8a8ecc1a2bdd64017892caf4aa096)
1# SPDX-License-Identifier: GPL-2.0
2obj-y := core.o
3ifneq ($(CONFIG_BPF_JIT_ALWAYS_ON),y)
4# ___bpf_prog_run() needs GCSE disabled on x86; see 3193c0836f203 for details
5cflags-nogcse-$(CONFIG_X86)$(CONFIG_CC_IS_GCC) := -fno-gcse
6endif
7CFLAGS_core.o += -Wno-override-init $(cflags-nogcse-yy)
8
9obj-$(CONFIG_BPF_SYSCALL) += syscall.o verifier.o inode.o helpers.o tnum.o log.o token.o liveness.o const_fold.o
10obj-$(CONFIG_BPF_SYSCALL) += bpf_iter.o map_iter.o task_iter.o prog_iter.o link_iter.o
11obj-$(CONFIG_BPF_SYSCALL) += hashtab.o arraymap.o percpu_freelist.o bpf_lru_list.o lpm_trie.o map_in_map.o bloom_filter.o
12obj-$(CONFIG_BPF_SYSCALL) += local_storage.o queue_stack_maps.o ringbuf.o bpf_insn_array.o
13obj-$(CONFIG_BPF_SYSCALL) += bpf_local_storage.o bpf_task_storage.o
14obj-$(CONFIG_BPF_SYSCALL) += fixups.o cfg.o states.o backtrack.o check_btf.o
15obj-${CONFIG_BPF_LSM}	  += bpf_inode_storage.o
16obj-$(CONFIG_BPF_SYSCALL) += disasm.o mprog.o
17obj-$(CONFIG_BPF_JIT) += trampoline.o
18obj-$(CONFIG_BPF_SYSCALL) += btf.o memalloc.o rqspinlock.o stream.o
19ifeq ($(CONFIG_MMU)$(CONFIG_64BIT),yy)
20obj-$(CONFIG_BPF_SYSCALL) += arena.o range_tree.o
21endif
22obj-$(CONFIG_BPF_JIT) += dispatcher.o
23ifeq ($(CONFIG_NET),y)
24obj-$(CONFIG_BPF_SYSCALL) += devmap.o
25obj-$(CONFIG_BPF_SYSCALL) += cpumap.o
26obj-$(CONFIG_BPF_SYSCALL) += offload.o
27obj-$(CONFIG_BPF_SYSCALL) += net_namespace.o
28obj-$(CONFIG_BPF_SYSCALL) += tcx.o
29endif
30ifeq ($(CONFIG_PERF_EVENTS),y)
31obj-$(CONFIG_BPF_SYSCALL) += stackmap.o
32endif
33ifeq ($(CONFIG_CGROUPS),y)
34obj-$(CONFIG_BPF_SYSCALL) += cgroup_iter.o bpf_cgrp_storage.o
35endif
36obj-$(CONFIG_CGROUP_BPF) += cgroup.o
37ifeq ($(CONFIG_INET),y)
38obj-$(CONFIG_BPF_SYSCALL) += reuseport_array.o
39endif
40ifeq ($(CONFIG_SYSFS),y)
41obj-$(CONFIG_DEBUG_INFO_BTF) += sysfs_btf.o
42endif
43ifeq ($(CONFIG_BPF_JIT),y)
44obj-$(CONFIG_BPF_SYSCALL) += bpf_struct_ops.o
45obj-$(CONFIG_BPF_SYSCALL) += cpumask.o
46# bpf_lsm_proto.o must precede bpf_lsm.o. The current pahole logic
47# deduplicates function prototypes within
48# btf_encoder__add_saved_func() by keeping the first instance seen. We
49# need the function prototype(s) in bpf_lsm_proto.o to take precedence
50# over those within bpf_lsm.o. Having bpf_lsm_proto.o precede
51# bpf_lsm.o ensures its DWARF CU is processed early, forcing the
52# generated BTF to contain the overrides.
53#
54# Notably, this is a temporary workaround whilst the deduplication
55# semantics within pahole are revisited accordingly.
56obj-${CONFIG_BPF_LSM} += bpf_lsm_proto.o bpf_lsm.o
57endif
58ifneq ($(CONFIG_CRYPTO),)
59obj-$(CONFIG_BPF_SYSCALL) += crypto.o
60endif
61obj-$(CONFIG_BPF_PRELOAD) += preload/
62
63obj-$(CONFIG_BPF_SYSCALL) += relo_core.o
64obj-$(CONFIG_BPF_SYSCALL) += btf_iter.o
65obj-$(CONFIG_BPF_SYSCALL) += btf_relocate.o
66obj-$(CONFIG_BPF_SYSCALL) += kmem_cache_iter.o
67ifeq ($(CONFIG_DMA_SHARED_BUFFER),y)
68obj-$(CONFIG_BPF_SYSCALL) += dmabuf_iter.o
69endif
70
71CFLAGS_REMOVE_percpu_freelist.o = $(CC_FLAGS_FTRACE)
72CFLAGS_REMOVE_bpf_lru_list.o = $(CC_FLAGS_FTRACE)
73CFLAGS_REMOVE_queue_stack_maps.o = $(CC_FLAGS_FTRACE)
74CFLAGS_REMOVE_lpm_trie.o = $(CC_FLAGS_FTRACE)
75CFLAGS_REMOVE_ringbuf.o = $(CC_FLAGS_FTRACE)
76CFLAGS_REMOVE_rqspinlock.o = $(CC_FLAGS_FTRACE)
77