2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LOCAL_PATH := $(dir $(lastword $(MAKEFILE_LIST)))
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								INSTALL_SH := $(abspath $(LOCAL_PATH)/scripts/install.sh)
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								all:
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								.PHONY: help all clean
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								ifneq ($(V),1)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								_@ :=@
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endif
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-30 07:58:09 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								INC_DIRS ?=
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SRC_DIR ?= ./src
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TEST_DIR ?= ./test
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-30 07:58:09 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								OUT_DIR ?= ./out
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 20:33:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								OS := $(shell uname)
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								ifeq ($(DOCKER),1)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 23:15:43 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(warning DOCKER=1 is experimential and may not work as advertised)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 13:47:05 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LLVM_DIR = $(LOCAL_PATH)llvm-docker/
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 23:03:51 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LLVM_SYSTEM_INC_DIRS := /usr/local/lib/clang/8.0.0/include
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								else
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 13:47:05 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LLVM_DIR = $(LOCAL_PATH)llvm-native/
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 23:03:51 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/8.0.0/include
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								endif
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-01 09:26:06 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								ifdef LLVM_DIR
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								CC := $(LLVM_DIR)/bin/clang
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								CXX := $(LLVM_DIR)/bin/clang++
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								LLD := $(LLVM_DIR)/bin/ld.lld
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-01 09:26:06 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								OBJ_DUMP := $(LLVM_DIR)/bin/llvm-objdump
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endif
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-30 14:33:29 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								SYSTEM_INC_DIRS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(LOCAL_PATH)inc \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 23:03:51 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  $(LLVM_SYSTEM_INC_DIRS) \
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-31 06:59:47 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								C_FLAGS := \
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 19:56:15 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -Werror \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -O2 \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -fno-builtin \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -std=c17 \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  $(addprefix -isystem,$(SYSTEM_INC_DIRS)) \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  $(addprefix -I,$(INC_DIRS))
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								CXX_FLAGS := \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  $(C_FLAGS) \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -std=c++17 \
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 19:56:15 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								BPF_C_FLAGS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(C_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -target bpf \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-05 07:43:26 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -fPIC \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								BPF_CXX_FLAGS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(CXX_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -target bpf \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-05 07:43:26 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -fPIC \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 12:14:41 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -fomit-frame-pointer \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -fno-exceptions \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -fno-asynchronous-unwind-tables \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -fno-unwind-tables \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								BPF_LLD_FLAGS := \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-05 07:43:26 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -z notext \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -shared \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  --Bdynamic \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(LOCAL_PATH)bpf.ld \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 19:56:15 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								OBJ_DUMP_FLAGS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -color \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -source \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -disassemble \
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-01 11:36:17 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TESTFRAMEWORK_RPATH := $(abspath $(LOCAL_PATH)criterion/lib)
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TESTFRAMEWORK_FLAGS := \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 12:58:14 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -DSOL_TEST \
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-01 11:36:17 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -isystem $(LOCAL_PATH)criterion/include \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  -L $(LOCAL_PATH)criterion/lib \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 21:00:08 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -rpath $(TESTFRAMEWORK_RPATH) \
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  -lcriterion \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 21:00:08 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# The "-rpath" in TESTFRAMEWORK_FLAGS doesn't work in macOS so rewrite the name
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# post-link.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# TODO: Find a better way
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								MACOS_ADJUST_TEST_DYLIB := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								$(if $(filter $(OS),Darwin),\
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								 $(_@)install_name_tool -change libcriterion.3.dylib $(TESTFRAMEWORK_RPATH)/libcriterion.3.dylib, \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								 : \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TEST_C_FLAGS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(C_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(TESTFRAMEWORK_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								TEST_CXX_FLAGS := \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(CXX_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  $(TESTFRAMEWORK_FLAGS) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								help:
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'BPF Program makefile'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo 'This makefile will build BPF Programs from C or C++ source files into ELFs'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'Assumptions:'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - Programs are a single .c or .cc source file (may include headers)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - Programs are located in the source directory: $(SRC_DIR)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - Programs are named by their basename (eg. file name:foo.c/foo.cc -> program name:foo)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - Tests are located in the test directory: $(TEST_DIR)'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - Tests are named by their basename (eg. file name:foo.c/foo.cc -> test name:test_foo)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - Output files will be placed in the directory: $(OUT_DIR)'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'User settings'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-30 22:52:59 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - The following setting are overridable on the command line, default values shown:'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '    - Show commands while building: V=1'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      V=$(V)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-01 09:26:06 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '    - List of include directories:'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      INC_DIRS=$(INC_DIRS)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-01 09:26:06 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '    - List of system include directories:'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-31 00:02:09 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '      SYSTEM_INC_DIRS=$(SYSTEM_INC_DIRS)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '    - Location of source files:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      SRC_DIR=$(SRC_DIR)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '    - Location of test files:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      TEST_DIR=$(TEST_DIR)'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '    - Location to place output files:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      OUT_DIR=$(OUT_DIR)'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '    - Location of LLVM:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '      LLVM_DIR=$(LLVM_DIR)'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'Usage:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - make help - This help message'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - make all - Build all the programs'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo '  - make test - Build and run all tests'
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - make dump_<program name> - Dumps the contents of the program to stdout'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - make <program name> - Build a single program by name'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'Available programs:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(foreach name, $(PROGRAM_NAMES), @echo '  - $(name)'$(\n))
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo 'Available tests:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(foreach name, $(TEST_NAMES), @echo '  - $(name)'$(\n))
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo 'Example:'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '  - Assuming a programed named foo (src/foo.c)'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '    - make foo'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									@echo '    - make dump_foo'
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-28 14:41:53 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo ''
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								.PHONY: $(INSTALL_SH)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								$(INSTALL_SH):
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(INSTALL_SH)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-21 08:49:29 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								.PRECIOUS: $(OUT_DIR)/%.o
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								$(OUT_DIR)/%.o: $(SRC_DIR)/%.c $(INSTALL_SH)
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 19:32:20 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo "[cc] $@ ($<)"
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(_@)mkdir -p $(OUT_DIR)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-21 08:49:29 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)$(CC) $(BPF_C_FLAGS) -o $@ -c $< -MD -MF $(@:.o=.d)
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-21 08:49:29 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(OUT_DIR)/%.o: $(SRC_DIR)/%.cc $(INSTALL_SH)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 12:00:44 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo "[cxx] $@ ($<)"
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)mkdir -p $(OUT_DIR)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-21 08:49:29 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)$(CXX) $(BPF_CXX_FLAGS) -o $@ -c $< -MD -MF $(@:.o=.d)
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								.PRECIOUS: $(OUT_DIR)/%.so
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(OUT_DIR)/%.so: $(OUT_DIR)/%.o $(INSTALL_SH)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo "[lld] $@ ($<)"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(_@)$(LLD) $(BPF_LLD_FLAGS) -o $@ $<
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(OUT_DIR)/test_%: $(TEST_DIR)/%.c $(INSTALL_SH)
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo "[test cc] $@ ($<)"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(_@)mkdir -p $(OUT_DIR)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(_@)$(CC) $(TEST_C_FLAGS) -o $@ $< -MD -MF $(@:=.d)
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 21:00:08 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)$(MACOS_ADJUST_TEST_DYLIB) $@
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-11 15:20:40 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(OUT_DIR)/test_%: $(TEST_DIR)/%.cc $(INSTALL_SH)
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-02 12:00:44 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									@echo "[test cxx] $@ ($<)"
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)mkdir -p $(OUT_DIR)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(_@)$(CXX) $(TEST_CXX_FLAGS) -o $@ $< -MD -MF $(@:=.d)
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 21:00:08 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)$(MACOS_ADJUST_TEST_DYLIB) $@
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-01 09:26:06 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-31 10:12:17 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								-include $(wildcard $(OUT_DIR)/*.d)
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-11 09:54:27 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								PROGRAM_NAMES := $(notdir $(basename $(wildcard $(SRC_DIR)/*.c $(SRC_DIR)/*.cc)))
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TEST_NAMES := $(addprefix test_,$(notdir $(basename $(wildcard $(TEST_DIR)/*.c))))
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								define \n
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endef
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								all: $(PROGRAM_NAMES)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								test: $(TEST_NAMES)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									$(foreach test, $(TEST_NAMES), $(OUT_DIR)/$(test)$(\n))
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(PROGRAM_NAMES): %: $(addprefix $(OUT_DIR)/, %.so) ;
							 | 
						
					
						
							
								
									
										
										
										
											2018-11-26 10:35:24 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								$(TEST_NAMES): %: $(addprefix $(OUT_DIR)/, %) ;
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								dump_%: %
							 | 
						
					
						
							
								
									
										
										
										
											2018-12-04 22:03:32 -08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									$(_@)$(OBJ_DUMP) $(OBJ_DUMP_FLAGS) $(addprefix $(OUT_DIR)/, $(addsuffix .so, $<))
							 | 
						
					
						
							
								
									
										
										
										
											2018-10-29 15:40:12 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								clean:
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									rm -rf $(OUT_DIR)
							 |