mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 08:48:31 +01:00
This is caused by dir->head not being updated when dir->m.pair may be. This causes the two to fall out of sync and later dir rewinds to fail. This bug stems all the way back from the first commits of littlefs, so it's surprising it has avoided detection for this long. Perhaps because lfs_dir_rewind is not used often.
88 lines
1.3 KiB
Makefile
88 lines
1.3 KiB
Makefile
TARGET = lfs.a
|
|
ifneq ($(wildcard test.c main.c),)
|
|
override TARGET = lfs
|
|
endif
|
|
|
|
CC ?= gcc
|
|
AR ?= ar
|
|
SIZE ?= size
|
|
|
|
SRC += $(wildcard *.c emubd/*.c)
|
|
OBJ := $(SRC:.c=.o)
|
|
DEP := $(SRC:.c=.d)
|
|
ASM := $(SRC:.c=.s)
|
|
|
|
TEST := $(patsubst tests/%.sh,%,$(wildcard tests/test_*))
|
|
|
|
SHELL = /bin/bash -o pipefail
|
|
|
|
ifdef DEBUG
|
|
override CFLAGS += -O0 -g3
|
|
else
|
|
override CFLAGS += -Os
|
|
endif
|
|
ifdef WORD
|
|
override CFLAGS += -m$(WORD)
|
|
endif
|
|
ifdef TRACE
|
|
override CFLAGS += -DLFS_YES_TRACE
|
|
endif
|
|
override CFLAGS += -I.
|
|
override CFLAGS += -std=c99 -Wall -pedantic
|
|
override CFLAGS += -Wextra -Wshadow -Wjump-misses-init -Wundef
|
|
# Remove missing-field-initializers because of GCC bug
|
|
override CFLAGS += -Wno-missing-field-initializers
|
|
|
|
|
|
all: $(TARGET)
|
|
|
|
asm: $(ASM)
|
|
|
|
size: $(OBJ)
|
|
$(SIZE) -t $^
|
|
|
|
.SUFFIXES:
|
|
test: \
|
|
test_format \
|
|
test_dirs \
|
|
test_files \
|
|
test_seek \
|
|
test_truncate \
|
|
test_entries \
|
|
test_interspersed \
|
|
test_alloc \
|
|
test_paths \
|
|
test_attrs \
|
|
test_move \
|
|
test_orphan \
|
|
test_relocations \
|
|
test_corrupt
|
|
@rm test.c
|
|
test_%: tests/test_%.sh
|
|
|
|
ifdef QUIET
|
|
@./$< | sed -nu '/^[-=]/p'
|
|
else
|
|
./$<
|
|
endif
|
|
|
|
-include $(DEP)
|
|
|
|
lfs: $(OBJ)
|
|
$(CC) $(CFLAGS) $^ $(LFLAGS) -o $@
|
|
|
|
%.a: $(OBJ)
|
|
$(AR) rcs $@ $^
|
|
|
|
%.o: %.c
|
|
$(CC) -c -MMD $(CFLAGS) $< -o $@
|
|
|
|
%.s: %.c
|
|
$(CC) -S $(CFLAGS) $< -o $@
|
|
|
|
clean:
|
|
rm -f $(TARGET)
|
|
rm -f $(OBJ)
|
|
rm -f $(DEP)
|
|
rm -f $(ASM)
|