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)