https://github.com/cilium/cilium
Tip revision: 054dd163fdb792c44b3c493b8d6fd111e5e1a2bc authored by Joe Stringer on 21 May 2020, 01:59:30 UTC
matchpattern: Support matchPattern="*" to match "."
matchpattern: Support matchPattern="*" to match "."
Tip revision: 054dd16
Makefile
# Copyright 2017-2020 Authors of Cilium
# SPDX-License-Identifier: Apache-2.0
include ../Makefile.defs
.PHONY: all build_all subdirs check force preprocess assembly install clean $(BUILD_PERMUTATIONS_DEP)
SUBDIRS = sockops
BPF_SIMPLE = bpf_network.o bpf_alignchecker.o
BPF = bpf_lxc.o bpf_overlay.o bpf_sock.o bpf_host.o bpf_xdp.o $(BPF_SIMPLE)
TARGET=cilium-map-migrate cilium-probe-kernel-hz
include ./Makefile.bpf
ifeq ("$(PKG_BUILD)","")
all: $(BPF) $(TARGET) subdirs
build_all: force
@touch $(BUILD_PERMUTATIONS_DEP)
@$(ECHO_CHECK)/*.c BUILD_PERMUTATIONS=1
$(QUIET) $(MAKE) $(SUBMAKEOPTS) all BUILD_PERMUTATIONS=1
BUILD_PERMUTATIONS ?= ""
$(BPF_SIMPLE): %.o: %.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
# Hack to get make to replace : with a space
null :=
space := ${null} ${null}
# The following option combinations are compile tested
LB_OPTIONS = \
-DSKIP_DEBUG \
-DENABLE_IPV4:-DLB_L3 \
-DENABLE_IPV4:-DLB_L4 \
-DENABLE_IPV4:-DLB_L4:-DENABLE_IPV4_FRAGMENTS \
-DENABLE_IPV4:-DLB_L3:-DLB_L4 \
-DENABLE_IPV4:-DENABLE_IPSEC \
-DENABLE_IPV6:-DLB_L3 \
-DENABLE_IPV6:-DLB_L4 \
-DENABLE_IPV6:-DLB_L3:-DLB_L4 \
-DENABLE_IPV6:-DENABLE_IPSEC \
-DENABLE_IPV4:-DENABLE_IPV6 \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3 \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L4 \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4 \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_TCP \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_IPSEC:-DENABLE_ENCAP_HOST_REMAP \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_NODEPORT \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_NODEPORT_ACCELERATION \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_SESSION_AFFINITY \
-DENABLE_IPV4:-DENABLE_IPSEC:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_SESSION_AFFINITY \
-DENABLE_IPV6:-DENABLE_IPSEC:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_SESSION_AFFINITY \
# These options are intended to max out the BPF program complexity. it is load
# tested as well.
MAX_LB_OPTIONS = -DENABLE_IPV4 -DENABLE_IPV6 -DLB_L3 -DLB_L4 \
-DENABLE_HOST_SERVICES_TCP -DENABLE_HOST_SERVICES_UDP \
-DENABLE_IPSEC
bpf_sock.ll: bpf_sock.c $(LIB)
$(QUIET) set -e; \
if [ $(BUILD_PERMUTATIONS) != "" ]; then \
$(foreach OPTS,$(LB_OPTIONS), \
$(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \
${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \
${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \
fi
@$(ECHO_CC)
$(QUIET) ${CLANG} ${MAX_LB_OPTIONS} ${CLANG_FLAGS} -c $< -o $@
bpf_sock.o: bpf_sock.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
bpf_overlay.ll: bpf_overlay.c $(LIB)
$(QUIET) set -e; \
if [ $(BUILD_PERMUTATIONS) != "" ]; then \
$(foreach OPTS,$(LB_OPTIONS), \
$(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \
${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \
${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \
fi
@$(ECHO_CC)
$(QUIET) ${CLANG} ${MAX_LB_OPTIONS} ${CLANG_FLAGS} -c $< -o $@
bpf_overlay.o: bpf_overlay.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
NETDEV_OPTIONS = $(LXC_OPTIONS) \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_FIREWALL \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_HOST_FIREWALL \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_EXTERNAL_IP:-DENABLE_DSR \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_EXTERNAL_IP:-DENABLE_DSR \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_HOSTPORT \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_MASQUERADE \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_IPSEC:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_MASQUERADE \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_DSR \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID:-DENABLE_HOST_FIREWALL \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID:-DENABLE_PREFILTER \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID:-DENABLE_PREFILTER:-DENABLE_HOST_FIREWALL \
-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_NODEPORT_ACCELERATION:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID:-DENABLE_PREFILTER:-DENABLE_SESSION_AFFINITY:-DENABLE_HOST_FIREWALL
MAX_NETDEV_OPTIONS = $(MAX_LXC_OPTIONS) -DENABLE_HOST_FIREWALL
bpf_host.ll: bpf_host.c $(LIB)
$(QUIET) set -e; \
if [ $(BUILD_PERMUTATIONS) != "" ]; then \
$(foreach OPTS,$(NETDEV_OPTIONS), \
$(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \
${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \
${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \
fi
@$(ECHO_CC)
$(QUIET) ${CLANG} ${MAX_NETDEV_OPTIONS} ${CLANG_FLAGS} -c $< -o $@
bpf_host.o: bpf_host.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
XDP_OPTIONS = $(LB_OPTIONS) \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DFROM_HOST \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_IPSEC:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DFROM_HOST \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_HOSTPORT \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_MASQUERADE \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_IPSEC:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_MASQUERADE \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_DSR \
-DENABLE_IPV4:-DENABLE_IPV6:-DLB_L3:-DLB_L4:-DENABLE_HOST_SERVICES_UDP:-DENABLE_HOST_SERVICES_TCP:-DENABLE_NODEPORT:-DENABLE_EXTERNAL_IP:-DENABLE_DSR:-DENABLE_DSR_HYBRID
bpf_xdp.ll: bpf_xdp.c $(LIB)
$(QUIET) set -e; \
if [ $(BUILD_PERMUTATIONS) != "" ]; then \
$(foreach OPTS,$(XDP_OPTIONS), \
$(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \
${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \
${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \
fi
@$(ECHO_CC)
$(QUIET) ${CLANG} ${MAX_LB_OPTIONS} ${CLANG_FLAGS} -c $< -o $@
bpf_xdp.o: bpf_xdp.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
# The following option combinations are compile tested
LXC_OPTIONS = \
-DALLOW_ICMP_FRAG_NEEDED \
-DSKIP_DEBUG \
-DHAVE_LPM_TRIE_MAP_TYPE \
-DHAVE_LRU_HASH_MAP_TYPE \
-DENABLE_IPV4 \
-DENABLE_IPV4:-DENABLE_IPSEC \
-DENABLE_IPV4:-DHAVE_LPM_TRIE_MAP_TYPE \
-DENABLE_IPV4:-DHAVE_LPM_TRIE_MAP_TYPE:-DHAVE_LRU_HASH_MAP_TYPE \
-DENABLE_IPV4:-DENABLE_IPV4_FRAGMENTS \
-DENABLE_IPV6 \
-DENABLE_IPV6:-DENABLE_IPSEC \
-DENABLE_IPV6:-DHAVE_LPM_TRIE_MAP_TYPE \
-DENABLE_IPV6:-DHAVE_LPM_TRIE_MAP_TYPE:-DHAVE_LRU_HASH_MAP_TYPE \
-DENABLE_IPV6:-DENABLE_IPV4 \
-DENABLE_IPV6:-DENABLE_IPV4:-DENABLE_ROUTING \
-DENABLE_IPV6:-DENABLE_IPV4:-DENABLE_IPSEC:-DENABLE_ENCAP_HOST_REMAP \
-DENABLE_IPV4:-DENABLE_IPV6:-DHAVE_LPM_TRIE_MAP_TYPE:-DHAVE_LRU_HASH_MAP_TYPE \
-DENABLE_HOST_REDIRECT:-DENABLE_IPV4:-DENABLE_IPV6 \
-DENABLE_HOST_REDIRECT:-DENABLE_IPV4:-DENABLE_IPV6:-DENABLE_NAT46 \
-DENABLE_NODEPORT:-DENABLE_IPV4:-DENABLE_IPV6 \
-DENABLE_NODEPORT:-DENABLE_DSR:-DENABLE_IPV4:-DENABLE_IPV6
# These options are intended to max out the BPF program complexity. it is load
# tested as well.
MAX_LXC_OPTIONS = -DENABLE_IPV4 -DENABLE_IPV6 -DENABLE_HOST_REDIRECT -DENABLE_NAT46 \
-DENABLE_ROUTING -DENABLE_IPSEC
bpf_lxc.ll: bpf_lxc.c $(LIB)
$(QUIET) set -e; \
if [ $(BUILD_PERMUTATIONS) != "" ]; then \
$(foreach OPTS,$(LXC_OPTIONS), \
$(ECHO_CC) " [$(subst :,$(space),$(OPTS))]"; \
${CLANG} $(subst :,$(space),$(OPTS)) ${CLANG_FLAGS} -c $< -o $@; \
${LLC} ${LLC_FLAGS} -o /dev/null $@; ) \
fi
@$(ECHO_CC)
$(QUIET) ${CLANG} ${MAX_LXC_OPTIONS} ${CLANG_FLAGS} -c $< -o $@
bpf_lxc.o: bpf_lxc.ll
@$(ECHO_CC)
$(QUIET) ${LLC} ${LLC_FLAGS} -filetype=obj -o $@ $(patsubst %.o,%.ll,$@)
subdirs: $(SUBDIRS)
$(QUIET) $(foreach TARGET,$(SUBDIRS), \
$(MAKE) $(SUBMAKEOPTS) -C $(TARGET))
else
all: $(TARGET)
endif
$(TARGET): %: %.c
@$(ECHO_CC)
@# Due to gcc bug, -lelf needs to be at the end.
$(QUIET) ${HOST_CC} -Wall -O2 -Wno-format-truncation -I include/ $@.c -lelf -o $@
$(QUIET) ${HOST_STRIP} $@
install:
$(QUIET)$(INSTALL) -m 0755 $(TARGET) $(DESTDIR)$(BINDIR)
clean:
@$(ECHO_CLEAN)
$(QUIET) $(foreach TARGET,$(SUBDIRS), \
$(MAKE) $(SUBMAKEOPTS) -C $(TARGET) clean)
$(QUIET)rm -fr *.o *.ll *.i *.s
$(QUIET)rm -f $(TARGET)