src      = $(wildcard *.c)
obj      = $(patsubst %.c, %.o, $(src))
dep      = $(patsubst %.c, %.d, $(src))

incdir   = .
libdir   = .

target   = radix
opt      = DEBUG

cc       = gcc
rm       = del /F /Q

standard = --std=c89
strict   = -Wall -Wextra -pedantic
incdir  := $(patsubst %, -I%, $(incdir))
libdir  := $(patsubst %, -L%, $(libdir))
opt     := $(patsubst %, -D%, $(opt))
ccflags  = $(standard) $(strict) $(incdir) $(libdir) -MMD -o $@

%.o: %.c
	$(cc) $(ccflags) -c $<

.phony: all
all: $(target)

-include $(dep)

$(target): $(obj)
	$(cc) $(ccflags) $(obj)

.phony: execute
execute:
	$(target)

.phony: clean
clean:
	$(rm) $(target)* $(obj) $(dep)
