This change allows readonly FATFS to be mounted without wear levelling support. This will provide the customers a simple way to mount FATFS images generated on host and flashed onto the chip during factory provisioning. Since NVS encryption is not supported yet and NVS entry size is limited, the change will provide an easy alternative for securing the provisioning data by just marking FATFS parition as encrypted.
103 lines
2.7 KiB
Makefile
103 lines
2.7 KiB
Makefile
COMPONENT=fatfs
|
|
|
|
TEST_PROGRAM=test_$(COMPONENT)
|
|
|
|
#Expose as a library
|
|
COMPONENT_LIB=lib$(COMPONENT).a
|
|
|
|
#Use wear levelling and flash simulation
|
|
WEAR_LEVELLING=wear_levelling
|
|
WEAR_LEVELLING_DIR=../../$(WEAR_LEVELLING)
|
|
WEAR_LEVELLING_HOST_DIR=$(WEAR_LEVELLING_DIR)/test_wl_host
|
|
WEAR_LEVELLING_LIB=lib$(WEAR_LEVELLING).a
|
|
|
|
SPI_FLASH=spi_flash
|
|
SPI_FLASH_DIR=../../$(SPI_FLASH)
|
|
SPI_FLASH_SIM_DIR=$(SPI_FLASH_DIR)/sim
|
|
SPI_FLASH_LIB=lib$(SPI_FLASH).a
|
|
|
|
all: $(TEST_PROGRAM)
|
|
|
|
SOURCE_FILES = \
|
|
$(addprefix ../src/, \
|
|
diskio.c \
|
|
ff.c \
|
|
ffsystem.c \
|
|
ffunicode.c \
|
|
diskio_wl.c \
|
|
) \
|
|
$(addprefix ./stubs/, log/log.c)
|
|
|
|
TEST_SOURCE_FILES = \
|
|
test_fatfs.cpp \
|
|
main.cpp \
|
|
test_utils.c
|
|
|
|
INCLUDE_FLAGS = $(addprefix -I,\
|
|
../src \
|
|
. \
|
|
$(addprefix ./stubs/, \
|
|
driver/include \
|
|
freertos/include \
|
|
sdmmc/include \
|
|
log/include \
|
|
) \
|
|
$(SPI_FLASH_DIR)/include \
|
|
$(WEAR_LEVELLING_DIR)/include \
|
|
../../esp32/include \
|
|
../../../tools/catch \
|
|
)
|
|
|
|
GCOV ?= gcov
|
|
|
|
CPPFLAGS += $(INCLUDE_FLAGS) -D CONFIG_LOG_DEFAULT_LEVEL -g -m32
|
|
CFLAGS += -fprofile-arcs -ftest-coverage
|
|
CXXFLAGS += -std=c++11 -Wall -Werror -fprofile-arcs -ftest-coverage
|
|
LDFLAGS += -lstdc++ -fprofile-arcs -ftest-coverage
|
|
|
|
OBJ_FILES = $(filter %.o, $(SOURCE_FILES:.cpp=.o) $(SOURCE_FILES:.c=.o))
|
|
TEST_OBJ_FILES = $(filter %.o, $(TEST_SOURCE_FILES:.cpp=.o) $(TEST_SOURCE_FILES:.c=.o))
|
|
|
|
$(WEAR_LEVELLING_HOST_DIR)/$(WEAR_LEVELLING_LIB): force
|
|
$(MAKE) -C $(WEAR_LEVELLING_HOST_DIR) lib
|
|
|
|
$(SPI_FLASH_SIM_DIR)/$(SPI_FLASH_LIB): force
|
|
$(MAKE) -C $(SPI_FLASH_SIM_DIR) lib
|
|
|
|
force:
|
|
|
|
$(COMPONENT_LIB): $(OBJ_FILES)
|
|
$(AR) rcs $@ $^
|
|
|
|
lib: $(COMPONENT_LIB)
|
|
|
|
partition_table.bin: partition_table.csv
|
|
python ../../partition_table/gen_esp32part.py --verify $< $@
|
|
|
|
$(TEST_PROGRAM): lib $(TEST_OBJ_FILES) $(SPI_FLASH_SIM_DIR)/$(SPI_FLASH_LIB) $(WEAR_LEVELLING_HOST_DIR)/$(WEAR_LEVELLING_LIB) partition_table.bin
|
|
g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(TEST_OBJ_FILES) -L$(abspath .) -l:$(COMPONENT_LIB) -L$(SPI_FLASH_SIM_DIR) -l:$(SPI_FLASH_LIB) -L$(WEAR_LEVELLING_HOST_DIR) -l:$(WEAR_LEVELLING_LIB) -g -m32
|
|
|
|
test: $(TEST_PROGRAM)
|
|
./$(TEST_PROGRAM)
|
|
|
|
COVERAGE_FILES = $(OBJ_FILES:.o=.gc*) $(TEST_OBJ_FILES:.o=.gc*)
|
|
|
|
$(COVERAGE_FILES): test
|
|
|
|
coverage.info: $(COVERAGE_FILES)
|
|
find ../ -name "*.gcno" -exec $(GCOV) -r -pb {} +
|
|
lcov --capture --directory ../ --no-external --output-file coverage.info --gcov-tool $(GCOV)
|
|
|
|
coverage_report: coverage.info
|
|
genhtml coverage.info --output-directory coverage_report
|
|
@echo "Coverage report is in coverage_report/index.html"
|
|
|
|
clean:
|
|
rm -f $(OBJ_FILES) $(TEST_OBJ_FILES) $(TEST_PROGRAM) $(COMPONENT_LIB) partition_table.bin
|
|
$(MAKE) -C $(WEAR_LEVELLING_HOST_DIR) clean
|
|
$(MAKE) -C $(SPI_FLASH_SIM_DIR) clean
|
|
rm -f $(COVERAGE_FILES) *.gcov
|
|
rm -rf coverage_report/
|
|
rm -f coverage.info
|
|
|
|
.PHONY: clean all test lib
|