1*2b9843fbSBriana Oursler# SPDX-License-Identifier: GPL-2.0
2*2b9843fbSBriana Oursler
3*2b9843fbSBriana Ourslertop_srcdir = $(abspath ../../../..)
4*2b9843fbSBriana OurslerAPIDIR := $(top_scrdir)/include/uapi
5*2b9843fbSBriana OurslerTEST_GEN_FILES = action.o
6*2b9843fbSBriana Oursler
7*2b9843fbSBriana OurslerKSFT_KHDR_INSTALL := 1
8*2b9843fbSBriana Ourslerinclude ../lib.mk
9*2b9843fbSBriana Oursler
10*2b9843fbSBriana OurslerCLANG ?= clang
11*2b9843fbSBriana OurslerLLC   ?= llc
12*2b9843fbSBriana OurslerPROBE := $(shell $(LLC) -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)
13*2b9843fbSBriana Oursler
14*2b9843fbSBriana Ourslerifeq ($(PROBE),)
15*2b9843fbSBriana Oursler  CPU ?= probe
16*2b9843fbSBriana Ourslerelse
17*2b9843fbSBriana Oursler  CPU ?= generic
18*2b9843fbSBriana Ourslerendif
19*2b9843fbSBriana Oursler
20*2b9843fbSBriana OurslerCLANG_SYS_INCLUDES := $(shell $(CLANG) -v -E - </dev/null 2>&1 \
21*2b9843fbSBriana Oursler	| sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')
22*2b9843fbSBriana Oursler
23*2b9843fbSBriana OurslerCLANG_FLAGS = -I. -I$(APIDIR) \
24*2b9843fbSBriana Oursler	      $(CLANG_SYS_INCLUDES) \
25*2b9843fbSBriana Oursler	      -Wno-compare-distinct-pointer-types
26*2b9843fbSBriana Oursler
27*2b9843fbSBriana Oursler$(OUTPUT)/%.o: %.c
28*2b9843fbSBriana Oursler	$(CLANG) $(CLANG_FLAGS) \
29*2b9843fbSBriana Oursler		 -O2 -target bpf -emit-llvm -c $< -o - |      \
30*2b9843fbSBriana Oursler	$(LLC) -march=bpf -mcpu=$(CPU) $(LLC_FLAGS) -filetype=obj -o $@
31*2b9843fbSBriana Oursler
32*2b9843fbSBriana OurslerTEST_PROGS += ./tdc.sh
33*2b9843fbSBriana OurslerTEST_FILES := tdc*.py Tdc*.py plugins plugin-lib tc-tests
34