c25c893219
Removing the dependency to the parent pointer solves many issues with non-atomic updates of children's parent pointers with respect to any move operations. However, this comes with an embarrassingly terrible runtime as the only other option is to exhaustively check every dir entry to find a child's parent. Fortunately, deorphaning should be a relatively rare operation.
57 lines
753 B
Makefile
57 lines
753 B
Makefile
TARGET = lfs
|
|
|
|
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_*))
|
|
|
|
ifdef DEBUG
|
|
CFLAGS += -O0 -g3
|
|
else
|
|
CFLAGS += -Os
|
|
endif
|
|
ifdef WORD
|
|
CFLAGS += -m$(WORD)
|
|
endif
|
|
CFLAGS += -I.
|
|
CFLAGS += -std=c99 -Wall -pedantic
|
|
|
|
|
|
all: $(TARGET)
|
|
|
|
asm: $(ASM)
|
|
|
|
size: $(OBJ)
|
|
$(SIZE) -t $^
|
|
|
|
.SUFFIXES:
|
|
test: test_format test_dirs test_files test_alloc test_orphan
|
|
test_%: tests/test_%.sh
|
|
./$<
|
|
|
|
-include $(DEP)
|
|
|
|
$(TARGET): $(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)
|