Makefile 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # kbuild trick to avoid linker error. Can be omitted if a module is built.
  2. obj- := dummy.o
  3. # List of programs to build
  4. hostprogs-y := test_verifier test_maps
  5. hostprogs-y += sock_example
  6. hostprogs-y += fds_example
  7. hostprogs-y += sockex1
  8. hostprogs-y += sockex2
  9. hostprogs-y += sockex3
  10. hostprogs-y += tracex1
  11. hostprogs-y += tracex2
  12. hostprogs-y += tracex3
  13. hostprogs-y += tracex4
  14. hostprogs-y += tracex5
  15. hostprogs-y += tracex6
  16. hostprogs-y += trace_output
  17. hostprogs-y += lathist
  18. hostprogs-y += offwaketime
  19. hostprogs-y += spintest
  20. hostprogs-y += map_perf_test
  21. test_verifier-objs := test_verifier.o libbpf.o
  22. test_maps-objs := test_maps.o libbpf.o
  23. sock_example-objs := sock_example.o libbpf.o
  24. fds_example-objs := bpf_load.o libbpf.o fds_example.o
  25. sockex1-objs := bpf_load.o libbpf.o sockex1_user.o
  26. sockex2-objs := bpf_load.o libbpf.o sockex2_user.o
  27. sockex3-objs := bpf_load.o libbpf.o sockex3_user.o
  28. tracex1-objs := bpf_load.o libbpf.o tracex1_user.o
  29. tracex2-objs := bpf_load.o libbpf.o tracex2_user.o
  30. tracex3-objs := bpf_load.o libbpf.o tracex3_user.o
  31. tracex4-objs := bpf_load.o libbpf.o tracex4_user.o
  32. tracex5-objs := bpf_load.o libbpf.o tracex5_user.o
  33. tracex6-objs := bpf_load.o libbpf.o tracex6_user.o
  34. trace_output-objs := bpf_load.o libbpf.o trace_output_user.o
  35. lathist-objs := bpf_load.o libbpf.o lathist_user.o
  36. offwaketime-objs := bpf_load.o libbpf.o offwaketime_user.o
  37. spintest-objs := bpf_load.o libbpf.o spintest_user.o
  38. map_perf_test-objs := bpf_load.o libbpf.o map_perf_test_user.o
  39. # Tell kbuild to always build the programs
  40. always := $(hostprogs-y)
  41. always += sockex1_kern.o
  42. always += sockex2_kern.o
  43. always += sockex3_kern.o
  44. always += tracex1_kern.o
  45. always += tracex2_kern.o
  46. always += tracex3_kern.o
  47. always += tracex4_kern.o
  48. always += tracex5_kern.o
  49. always += tracex6_kern.o
  50. always += trace_output_kern.o
  51. always += tcbpf1_kern.o
  52. always += lathist_kern.o
  53. always += offwaketime_kern.o
  54. always += spintest_kern.o
  55. always += map_perf_test_kern.o
  56. HOSTCFLAGS += -I$(objtree)/usr/include
  57. HOSTCFLAGS_bpf_load.o += -I$(objtree)/usr/include -Wno-unused-variable
  58. HOSTLOADLIBES_fds_example += -lelf
  59. HOSTLOADLIBES_sockex1 += -lelf
  60. HOSTLOADLIBES_sockex2 += -lelf
  61. HOSTLOADLIBES_sockex3 += -lelf
  62. HOSTLOADLIBES_tracex1 += -lelf
  63. HOSTLOADLIBES_tracex2 += -lelf
  64. HOSTLOADLIBES_tracex3 += -lelf
  65. HOSTLOADLIBES_tracex4 += -lelf -lrt
  66. HOSTLOADLIBES_tracex5 += -lelf
  67. HOSTLOADLIBES_tracex6 += -lelf
  68. HOSTLOADLIBES_trace_output += -lelf -lrt
  69. HOSTLOADLIBES_lathist += -lelf
  70. HOSTLOADLIBES_offwaketime += -lelf
  71. HOSTLOADLIBES_spintest += -lelf
  72. HOSTLOADLIBES_map_perf_test += -lelf -lrt
  73. # point this to your LLVM backend with bpf support
  74. LLC=$(srctree)/tools/bpf/llvm/bld/Debug+Asserts/bin/llc
  75. # asm/sysreg.h inline assmbly used by it is incompatible with llvm.
  76. # But, ehere is not easy way to fix it, so just exclude it since it is
  77. # useless for BPF samples.
  78. $(obj)/%.o: $(src)/%.c
  79. clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
  80. -D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
  81. -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@
  82. clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
  83. -D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
  84. -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=asm -o $@.s