Add my trusty makefile

This commit is contained in:
Artur Tamborski 2018-12-01 18:09:44 +01:00
parent 13deac366a
commit 183bea62db

42
makefile Normal file
View File

@ -0,0 +1,42 @@
TARGET = $(notdir $(CURDIR))
SRCEXT = .c
INCEXT = .h
OBJEXT = .o
SRCDIR = src
INCDIR = .
OBJDIR = bin
CC = gcc
LD = gcc
LDFLAGS = -lm -lpthread
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