-TARGET = coquet
+SRCDIR := src
+BINDIR := bin
+OBJDIR := obj
+
+TARGET := $(BINDIR)/coquet
+SRCFILES := main.c unix.c util.c coquet.c superblock.c sha2.c
+SRC := $(addprefix $(SRCDIR)/,$(SRCFILES))
+OBJ := $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
+DEPS := $(SRCFILES:%.c=$(OBJDIR)/%.d)
+
+# TARGET = coquet
LIBS =
CC = gcc
CFLAGS = -g -Wall --std=c99
-FILES = main.c unix.c util.c coquet.c superblock.c sha2.c
.PHONY: default all clean
default: $(TARGET)
all: default
-OBJECTS = $(patsubst %.c, %.o, $(FILES))
-HEADERS = $(wildcard *.h)
-
-%.o: %.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
-.PRECIOUS: $(TARGET) $(OBJECTS)
+$(OBJDIR)/%.d: $(SRCDIR)/%.c
+ $(CC) -MM -MP -MT $(@:.d=.o) $< > $@
-$(TARGET): $(OBJECTS)
- $(CC) $(OBJECTS) -Wall $(LIBS) -o $@
+$(TARGET): $(OBJ)
+ $(CC) $(OBJ) -Wall $(LIBS) -o $@
+
+# .PRECIOUS: $(TARGET) $(OBJECTS)
clean:
- -rm -f *.o
- -rm -f $(TARGET)
\ No newline at end of file
+ -rm -f $(OBJDIR)/*
+ -rm -f $(TARGET)
+
+-include $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.d)
ret = super_write(cq,super,!old.from_b,old.sb_serial+1);
} else if(ret == COQUET_RET_CORRUPT) {
// XXX log
+ /* save */
ret = super_write(cq,super,0,1);
}
+ /* sync */
+ ret = (cq->vfs_funcs.sync)(cq->vfs_data,COQUET_FILE_MAIN,1);
+
/* unlock */
r = lock_super(cq,COQUET_LMODE_UN,wait);
if(r != COQUET_RET_OK) {
struct cq_super_config {
uint8_t global_iv[GLOBAL_IV_LEN];
- uint8_t block_size; /* log bits */
- uint8_t nursery_size; /* log blocks */
+ uint8_t block_size; /* log2 bytes */
+ uint8_t nursery_size; /* log2 blocks */
};
struct cq_super {