github.com/datadog/cilium@v1.6.12/bpf/Makefile (about) 1 include ../Makefile.defs 2 3 .PHONY: all subdirs $(SUBDIRS) check preprocess assembly install clean 4 5 SUBDIRS = sockops 6 7 BPF_SIMPLE = bpf_netdev.o bpf_xdp.o bpf_ipsec.o bpf_network.o bpf_alignchecker.o bpf_hostdev_ingress.o 8 BPF = bpf_lxc.o bpf_lb.o bpf_overlay.o bpf_sock.o $(BPF_SIMPLE) 9 10 TARGET=cilium-map-migrate 11 12 include ./Makefile.bpf 13 14 ifeq ("$(PKG_BUILD)","") 15 all: $(BPF) $(TARGET) $(SUBDIRS) 16 17 build_all: 18 @$(ECHO_CHECK)/*.c BUILD_PERMUTATIONS=1 19 $(MAKE) all BUILD_PERMUTATIONS=1 20 21 BUILD_PERMUTATIONS ?= "" 22 23 $(BPF_SIMPLE): %.o: %.ll 24 @$(ECHO_CC) 25 $(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@) 26 27 # Hack to get make to replace : with a space 28 null := 29 space := ${null} ${null} 30 31 # The following option combinations are compile tested 32 LB_OPTIONS = \ 33 -DSKIP_DEBUG \ 34 -DENABLE_IPV4:-DLB_L3 \ 35 -DENABLE_IPV4:-DLB_L4 \ 36 -DENABLE_IPV4:-DLB_L3:-DLB_L4 \ 37 -DENABLE_IPV6:-DLB_L3 \ 38 -DENABLE_IPV6:-DLB_L4 \ 39 -DENABLE_IPV6:-DLB_L3:-DLB_L4 \ 40 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3 \ 41 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L4 \ 42 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4 \ 43 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP \ 44 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_TCP \ 45 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_NODEPORT \ 46 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT \ 47 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP \ 48 -DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT 49 50 # These options are intended to max out the BPF program complexity. it is load 51 # tested as well. 52 MAX_LB_OPTIONS = -DENABLE_IPV4 -DENABLE_IPV6 -DLB_L3 -DLB_L4 53 54 bpf_lb.ll: bpf_lb.c $(LIB) 55 $(QUIET) set -e; \ 56 if [ $(BUILD_PERMUTATIONS) != "" ]; then \ 57 $(foreach OPTS,$(LB_OPTIONS), \ 58 $(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \ 59 ${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \ 60 ${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \ 61 fi 62 @$(ECHO_CC) 63 $(QUIET) ${CLANG} ${MAX_LB_OPTIONS} ${CLANG_FLAGS} -c $< -o $@ 64 65 bpf_lb.o: bpf_lb.ll 66 @$(ECHO_CC) 67 $(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@) 68 69 bpf_sock.ll: bpf_sock.c $(LIB) 70 $(QUIET) set -e; \ 71 if [ $(BUILD_PERMUTATIONS) != "" ]; then \ 72 $(foreach OPTS,$(LB_OPTIONS), \ 73 $(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \ 74 ${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \ 75 ${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \ 76 fi 77 @$(ECHO_CC) 78 $(QUIET) ${CLANG} ${MAX_LB_OPTIONS} ${CLANG_FLAGS} -c $< -o $@ 79 80 bpf_sock.o: bpf_sock.ll 81 @$(ECHO_CC) 82 $(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@) 83 84 # The following option combinations are compile tested 85 OVERLAY_OPTIONS = \ 86 -DENABLE_IPV4 \ 87 -DENABLE_IPV6 88 89 # These options are intended to max out the BPF program complexity. it is load 90 # tested as well. 91 MAX_OVERLAY_OPTIONS = -DENABLE_IPV4 -DENABLE_IPV6 #-DENABLE_IPSEC (from node_config.h) 92 93 bpf_overlay.ll: bpf_overlay.c $(LIB) 94 $(QUIET) set -e; \ 95 if [ $(BUILD_PERMUTATIONS) != "" ]; then \ 96 $(foreach OPTS,$(OVERLAY_OPTIONS), \ 97 $(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \ 98 ${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \ 99 ${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \ 100 fi 101 @$(ECHO_CC) 102 $(QUIET) ${CLANG} ${MAX_OVERLAY_OPTIONS} ${CLANG_FLAGS} -c $< -o $@ 103 104 bpf_overlay.o: bpf_overlay.ll 105 @$(ECHO_CC) 106 $(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@) 107 108 # The following option combinations are compile tested 109 LXC_OPTIONS = \ 110 -DSKIP_DEBUG \ 111 -DHAVE_LPM_MAP_TYPE \ 112 -DHAVE_LRU_MAP_TYPE \ 113 -DENABLE_IPV4 \ 114 -DENABLE_IPV4:-DHAVE_LPM_MAP_TYPE \ 115 -DENABLE_IPV4:-DHAVE_LPM_MAP_TYPE:-DHAVE_LRU_MAP_TYPE \ 116 -DENABLE_IPV6 \ 117 -DENABLE_IPV6:-DHAVE_LPM_MAP_TYPE \ 118 -DENABLE_IPV6:-DHAVE_LPM_MAP_TYPE:-DHAVE_LRU_MAP_TYPE \ 119 -DENABLE_IPV6:-DENABLE_IPV4 \ 120 -DENABLE_IPV6:-DENABLE_IPV4:-DENABLE_ROUTING \ 121 -DENABLE_IPV4:-DENABLE_IPV6:-DHAVE_LPM_MAP_TYPE:-DHAVE_LRU_MAP_TYPE \ 122 -DENABLE_HOST_REDIRECT:-DENABLE_IPV4:-DENABLE_IPV6 \ 123 -DENABLE_HOST_REDIRECT:-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_NAT46 124 125 # These options are intended to max out the BPF program complexity. it is load 126 # tested as well. 127 MAX_LXC_OPTIONS = -DENABLE_IPV4 -DENABLE_IPV6 128 129 bpf_lxc.ll: bpf_lxc.c $(LIB) 130 $(QUIET) set -e; \ 131 if [ $(BUILD_PERMUTATIONS) != "" ]; then \ 132 $(foreach OPTS,$(LXC_OPTIONS), \ 133 $(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \ 134 ${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \ 135 ${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \ 136 fi 137 @$(ECHO_CC) 138 $(QUIET) ${CLANG} ${MAX_LXC_OPTIONS} ${CLANG_FLAGS} -c $< -o $@ 139 140 bpf_lxc.o: bpf_lxc.ll 141 @$(ECHO_CC) 142 $(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@) 143 144 subdirs: $(SUBDIRS) 145 $(SUBDIRS): 146 @$(MAKE) -C $@ 147 else 148 all: $(TARGET) 149 endif 150 151 $(TARGET): $(TARGET).c 152 @$(ECHO_CC) 153 @# Due to gcc bug, -lelf needs to be at the end. 154 $(QUIET) ${HOSTCC} -Wall -O2 -Wno-format-truncation -I include/ $@.c -lelf -o $@ 155 156 install: 157 $(INSTALL) -m 0755 $(TARGET) $(DESTDIR)$(BINDIR) 158 159 clean: 160 @$(ECHO_CLEAN) 161 $(QUIET) $(foreach TARGET,$(SUBDIRS), \ 162 $(MAKE) -C $(TARGET) clean) 163 $(QUIET)rm -fr *.o *.ll *.i *.s 164 $(QUIET)rm -f $(TARGET)