|
@@ -81,9 +81,10 @@ HOSTLOADLIBES_spintest += -lelf
|
|
HOSTLOADLIBES_map_perf_test += -lelf -lrt
|
|
HOSTLOADLIBES_map_perf_test += -lelf -lrt
|
|
HOSTLOADLIBES_test_overhead += -lelf -lrt
|
|
HOSTLOADLIBES_test_overhead += -lelf -lrt
|
|
|
|
|
|
-# Allows pointing LLC to a LLVM backend with bpf support, redefine on cmdline:
|
|
|
|
-# make samples/bpf/ LLC=~/git/llvm/build/bin/llc
|
|
|
|
|
|
+# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
|
|
|
|
+# make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
|
|
LLC ?= llc
|
|
LLC ?= llc
|
|
|
|
+CLANG ?= clang
|
|
|
|
|
|
# Trick to allow make to be run from this directory
|
|
# Trick to allow make to be run from this directory
|
|
all:
|
|
all:
|
|
@@ -93,16 +94,18 @@ clean:
|
|
$(MAKE) -C ../../ M=$$PWD clean
|
|
$(MAKE) -C ../../ M=$$PWD clean
|
|
@rm -f *~
|
|
@rm -f *~
|
|
|
|
|
|
-# Verify LLVM compiler is available and bpf target is supported
|
|
|
|
-.PHONY: verify_cmd_llc verify_target_bpf
|
|
|
|
|
|
+# Verify LLVM compiler tools are available and bpf target is supported by llc
|
|
|
|
+.PHONY: verify_cmds verify_target_bpf $(CLANG) $(LLC)
|
|
|
|
|
|
-verify_cmd_llc:
|
|
|
|
- @if ! (which "${LLC}" > /dev/null 2>&1); then \
|
|
|
|
- echo "*** ERROR: Cannot find LLVM tool 'llc' (${LLC})" ;\
|
|
|
|
- exit 1; \
|
|
|
|
- else true; fi
|
|
|
|
|
|
+verify_cmds: $(CLANG) $(LLC)
|
|
|
|
+ @for TOOL in $^ ; do \
|
|
|
|
+ if ! (which -- "$${TOOL}" > /dev/null 2>&1); then \
|
|
|
|
+ echo "*** ERROR: Cannot find LLVM tool $${TOOL}" ;\
|
|
|
|
+ exit 1; \
|
|
|
|
+ else true; fi; \
|
|
|
|
+ done
|
|
|
|
|
|
-verify_target_bpf: verify_cmd_llc
|
|
|
|
|
|
+verify_target_bpf: verify_cmds
|
|
@if ! (${LLC} -march=bpf -mattr=help > /dev/null 2>&1); then \
|
|
@if ! (${LLC} -march=bpf -mattr=help > /dev/null 2>&1); then \
|
|
echo "*** ERROR: LLVM (${LLC}) does not support 'bpf' target" ;\
|
|
echo "*** ERROR: LLVM (${LLC}) does not support 'bpf' target" ;\
|
|
echo " NOTICE: LLVM version >= 3.7.1 required" ;\
|
|
echo " NOTICE: LLVM version >= 3.7.1 required" ;\
|
|
@@ -115,6 +118,6 @@ $(src)/*.c: verify_target_bpf
|
|
# But, there is no easy way to fix it, so just exclude it since it is
|
|
# But, there is no easy way to fix it, so just exclude it since it is
|
|
# useless for BPF samples.
|
|
# useless for BPF samples.
|
|
$(obj)/%.o: $(src)/%.c
|
|
$(obj)/%.o: $(src)/%.c
|
|
- clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
|
|
|
|
|
|
+ $(CLANG) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
|
|
-D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
|
|
-D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
|
|
-O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@
|
|
-O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@
|