|
| 1 | +OBJECT_DIRECTORY := obj |
| 2 | +BINARY_DIRECTORY := bin |
| 3 | +OUTPUT_BINARY := $(BINARY_DIRECTORY)/host_tests |
| 4 | +CORE_PATH := ../../cores/esp8266 |
| 5 | + |
| 6 | +CORE_CPP_FILES := $(addprefix $(CORE_PATH)/,\ |
| 7 | + StreamString.cpp \ |
| 8 | + Stream.cpp \ |
| 9 | + WString.cpp \ |
| 10 | + Print.cpp \ |
| 11 | + FS.cpp \ |
| 12 | + spiffs_api.cpp \ |
| 13 | +) |
| 14 | + |
| 15 | +CORE_C_FILES := $(addprefix $(CORE_PATH)/,\ |
| 16 | + core_esp8266_noniso.c \ |
| 17 | + spiffs/spiffs_cache.c \ |
| 18 | + spiffs/spiffs_check.c \ |
| 19 | + spiffs/spiffs_gc.c \ |
| 20 | + spiffs/spiffs_hydrogen.c \ |
| 21 | + spiffs/spiffs_nucleus.c \ |
| 22 | +) |
| 23 | + |
| 24 | +MOCK_CPP_FILES := $(addprefix common/,\ |
| 25 | + Arduino.cpp \ |
| 26 | + spiffs_mock.cpp \ |
| 27 | + WMath.cpp \ |
| 28 | +) |
| 29 | + |
| 30 | +INC_PATHS += $(addprefix -I, \ |
| 31 | + common \ |
| 32 | + $(CORE_PATH) \ |
| 33 | +) |
| 34 | + |
| 35 | +TEST_CPP_FILES := \ |
| 36 | + fs/test_fs.cpp \ |
| 37 | + |
| 38 | +CXXFLAGS += -std=c++11 -Wall |
| 39 | +CFLAGS += -std=c99 -Wall |
| 40 | + |
| 41 | +remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1)))) |
| 42 | + |
| 43 | +C_SOURCE_FILES = $(CORE_C_FILES) |
| 44 | +CPP_SOURCE_FILES = $(MOCK_CPP_FILES) $(CORE_CPP_FILES) $(TEST_CPP_FILES) |
| 45 | +C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES)) |
| 46 | +C_PATHS = $(call remduplicates, $(dir $(C_SOURCE_FILES) ) ) |
| 47 | +C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILE_NAMES:.c=.c.o) ) |
| 48 | + |
| 49 | +CPP_SOURCE_FILE_NAMES = $(notdir $(CPP_SOURCE_FILES)) |
| 50 | +CPP_PATHS = $(call remduplicates, $(dir $(CPP_SOURCE_FILES) )) |
| 51 | +CPP_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(CPP_SOURCE_FILE_NAMES:.cpp=.cpp.o) ) |
| 52 | + |
| 53 | +$(warning $(call remduplicates, $(dir $(CPP_SOURCE_FILES) ))) |
| 54 | +vpath %.c $(C_PATHS) |
| 55 | +vpath %.cpp $(CPP_PATHS) |
| 56 | + |
| 57 | +OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) |
| 58 | + |
| 59 | +all: $(OUTPUT_BINARY) test |
| 60 | + |
| 61 | +test: $(OUTPUT_BINARY) |
| 62 | + $(OUTPUT_BINARY) |
| 63 | + |
| 64 | +$(OBJECT_DIRECTORY): |
| 65 | + mkdir -p $@ |
| 66 | + |
| 67 | +$(BINARY_DIRECTORY): |
| 68 | + mkdir -p $@ |
| 69 | + |
| 70 | +$(C_OBJECTS): $(OBJECT_DIRECTORY)/%.c.o: %.c |
| 71 | + $(CC) $(CFLAGS) $(INC_PATHS) -c -o $@ $< |
| 72 | + |
| 73 | +$(CPP_OBJECTS): $(OBJECT_DIRECTORY)/%.cpp.o: %.cpp |
| 74 | + $(CXX) $(CXXFLAGS) $(INC_PATHS) -c -o $@ $< |
| 75 | + |
| 76 | + |
| 77 | +# Link |
| 78 | +$(OUTPUT_BINARY): $(BINARY_DIRECTORY) $(OBJECT_DIRECTORY) $(OBJECTS) |
| 79 | + $(CXX) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(OUTPUT_BINARY) |
0 commit comments