CC ?= gcc AR ?= ar RANLIB ?= ranlib CFLAGS ?= -Os -fno-builtin -ffreestanding -nostdinc LDFLAGS ?= -nostdlib -static -include config.mak ARCH ?= x86_64 CFLAGS += -I. -I include SRC_DIRS = src/string src/stdio src/stdlib src/internal OBJ_DIR = obj LIB_DIR = lib SRCS := $(shell find $(SRC_DIRS) -name '*.c' 2>/dev/null) OBJS := $(SRCS:%=$(OBJ_DIR)/%.o) CRT_OBJ := crt/crt1.o .PHONY: all clean distclean all: $(LIB_DIR)/libc.a $(CRT_OBJ) $(OBJ_DIR)/%.c.o: %.c @mkdir -p $(dir $@) $(CC) $(CFLAGS) -c -o $@ $< $(LIB_DIR)/libc.a: $(OBJS) @mkdir -p $(LIB_DIR) $(AR) crs $@ $^ $(RANLIB) $@ crt/crt1.o: crt/crt1.c $(CC) $(CFLAGS) -c -o $@ $< clean: rm -rf $(OBJ_DIR) $(LIB_DIR) distclean: clean rm -f config.mak