# Used to generated .d file that deal with header dependencies
CPPFLAGS = -MMD
LDFLAGS += -m elf_i386
CFLAGS += -m32 -Wall -Wextra -Werror -ffreestanding -fno-exceptions -fno-pie -fno-stack-protector -fno-tree-vectorize -nostdinc -fno-asynchronous-unwind-tables -g
LIBGCC = $(shell $(CC) -print-libgcc-file-name $(CFLAGS))

SUBDIRS := . kernel

ARCH?=x86
INCDIRS += $(foreach dir, $(SUBDIRS), -I$(dir))
CPPFLAGS += $(INCDIRS)

csrc=$(wildcard *.c)
cobj=$(csrc:%.c=%.o)
deps=$(csrc:%.c=%.d)

PROG = user

$(PROG) : $(cobj) linker.ld
	$(CC) -static -Wl,--warn-common $(CFLAGS) -nostdlib -o $@ -T linker.ld $(cobj) $(LIBGCC)


clean:
	$(RM) $(PROG) $(cobj) $(deps)

ifneq ($(MAKECMDGOALS),clean)
-include $(deps)
endif