Makefile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. LWIP_COMPONENT_DIR=../
  2. CFLAGS=-D IDF_VER=\"v3.1\" \
  3. -DESP_PLATFORM \
  4. -DLWIP_NO_CTYPE_H=1 \
  5. -DWITH_POSIX \
  6. -fdata-sections \
  7. -ffunction-sections \
  8. -ggdb \
  9. -MMD \
  10. -MP \
  11. -nostdlib \
  12. -Og \
  13. -std=gnu99 \
  14. -Wall \
  15. -Werror=all \
  16. -Wextra \
  17. -Wno-address \
  18. -Wno-constant-conversion \
  19. -Wno-error=deprecated-declarations \
  20. -Wno-error=unused-function \
  21. -Wno-error=unused-variable \
  22. -Wno-incompatible-pointer-types \
  23. -Wno-incompatible-pointer-types-discards-qualifiers \
  24. -Wno-int-to-pointer-cast \
  25. -Wno-macro-redefined \
  26. -Wno-sign-compare \
  27. -Wno-typedef-redefinition \
  28. -Wno-unused-parameter \
  29. -Wno-unused-variable
  30. INC_DIRS=-I . \
  31. -I ./build/config \
  32. -I $(LWIP_COMPONENT_DIR)/include/apps \
  33. -I $(LWIP_COMPONENT_DIR)/include/apps/ping \
  34. -I $(LWIP_COMPONENT_DIR)/include/apps/sntp \
  35. -I $(LWIP_COMPONENT_DIR)/lwip/src/include \
  36. -I $(LWIP_COMPONENT_DIR)/lwip/src/include/netif \
  37. -I $(LWIP_COMPONENT_DIR)/lwip/src/include/posix \
  38. -I $(LWIP_COMPONENT_DIR)/lwip/src/include/posix \
  39. -I $(LWIP_COMPONENT_DIR)/port/esp32/include
  40. TEST_NAME=test
  41. FUZZ=afl-fuzz
  42. GEN_CFG=generate_config
  43. LD=$(CC)
  44. ifeq ($(MODE),dhcp_client)
  45. DEPENDENCY_INJECTION=-include dhcp_di.h
  46. OBJECTS=dhcp.o def.o esp32_mock.o test_dhcp_client.o
  47. SAMPLE_PACKETS=in_dhcp_client
  48. else ifeq ($(MODE),dhcp_server)
  49. DEPENDENCY_INJECTION=-include dhcpserver_di.h
  50. OBJECTS=dhcpserver.o def.o esp32_mock.o test_dhcp_server.o
  51. SAMPLE_PACKETS=in_dhcp_server
  52. else ifeq ($(MODE),dns)
  53. CFLAGS+=-DNOT_MOCK_DNS
  54. DEPENDENCY_INJECTION=-include dns_di.h
  55. OBJECTS=dns.o def.o esp32_mock.o test_dns.o
  56. SAMPLE_PACKETS=in_dns
  57. else
  58. $(error Please specify MODE: dhcp_server, dhcp_client, dns)
  59. endif
  60. ifeq ($(INSTR),off)
  61. CC=gcc
  62. CFLAGS+=-DINSTR_IS_OFF
  63. TEST_NAME=test_sim
  64. else
  65. CC=afl-clang-fast
  66. endif
  67. CFLAGS+=$(INC_DIRS)
  68. all: $(TEST_NAME)
  69. def.o: ../lwip/src/core/def.c $(GEN_CFG)
  70. @echo "[CC] $<"
  71. @$(CC) $(CFLAGS) -D BUILDING_DEF $(DEPENDENCY_INJECTION) -c $< -o $@
  72. dns.o: ../lwip/src/core/dns.c $(GEN_CFG)
  73. @echo "[CC] $<"
  74. @$(CC) $(CFLAGS) $(DEPENDENCY_INJECTION) -c $< -o $@
  75. dhcp.o: ../lwip/src/core/ipv4/dhcp.c $(GEN_CFG)
  76. @echo "[CC] $<"
  77. @$(CC) $(CFLAGS) $(DEPENDENCY_INJECTION) -c $< -o $@
  78. dhcpserver.o: ../apps/dhcpserver/dhcpserver.c $(GEN_CFG)
  79. @echo "[CC] $<"
  80. @$(CC) $(CFLAGS) $(DEPENDENCY_INJECTION) -c $< -o $@
  81. %.o: %.c $(GEN_CFG)
  82. @echo "[CC] $<"
  83. @$(CC) $(CFLAGS) -c $< -o $@
  84. .PHONY: $(GEN_CFG)
  85. $(GEN_CFG):
  86. $(IDF_PATH)/tools/idf.py reconfigure
  87. $(TEST_NAME): $(OBJECTS)
  88. @echo "[LD] $@"
  89. @$(LD) $(OBJECTS) -o $@ $(LDLIBS)
  90. fuzz: $(TEST_NAME)
  91. @$(FUZZ) -t 5000+ -i "$(SAMPLE_PACKETS)" -o "out" -- ./$(TEST_NAME)