os/kolos/makefile
2019-06-14 20:04:43 +02:00

43 lines
988 B
Makefile

TARGET = $(notdir $(CURDIR))
SRCEXT = .c
INCEXT = .h
OBJEXT = .o
SRCDIR = .
INCDIR = .
OBJDIR = .
CC = gcc
LD = gcc
LDFLAGS =
CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic
SRCTREE = $(shell find $(SRCDIR) -type d)
INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)')
SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)')
OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/'))
OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/'))
OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/'))
all: $(TARGET)
@echo Done.
run: $(TARGET)
@./$(TARGET)
clean:
@rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true
$(TARGET): $(OBJS) | $(OBJDIR)
@$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^
$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR)
@$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $?
$(OBJDIR):
@mkdir -p $(OBJDIR) $(OBJTREE)
.PHONY: all run clean