Add my trusty makefile
This commit is contained in:
parent
13deac366a
commit
183bea62db
42
makefile
Normal file
42
makefile
Normal 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
|
Loading…
Reference in New Issue
Block a user