Advertisement
Guest User

Untitled

a guest
Feb 28th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 0.90 KB | None | 0 0
  1. CC = clang
  2. WARNINGS = -Wall -Werror -Wfloat-equal -Wformat -g
  3. CFLAGS = -std=c99 -I./include
  4. LDLIBS = -lm
  5. version = 0.0.1
  6.  
  7. objs = $(srcs:.c=.o)
  8. exe = a
  9.  
  10. SRCDIR = src
  11. OBJDIR = build
  12.  
  13. STRUCTURE := $(shell find $(SRCDIR) -type d)
  14. CODEFILES := $(addsuffix /*,$(STRUCTURE))
  15. CODEFILES := $(wildcard $(CODEFILES))
  16.  
  17. SRCFILES := $(filter %.c,$(CODEFILES))
  18. OBJFILES := $(subst $(SRCDIR),$(OBJDIR),$(SRCFILES:%.c=%.o))
  19.  
  20. .PHONY: all clean
  21.  
  22. all: $(OBJDIR) $(exe)
  23.  
  24. $(OBJDIR):
  25.     @mkdir -p $@
  26.  
  27. $(OBJDIR)/%.o: $(addprefix $(SRCDIR)/,%.c)
  28.     @echo "Compiling    \x1B[92m$@\x1B[0m \x1B[2m<- $<\x1B[0m"
  29.     @mkdir -p $(dir $@)
  30.     @$(CC) $(WARNINGS) $(CFLAGS) -c $< -o $@
  31.  
  32. $(exe): $(OBJFILES)
  33.     @echo "Linking      \x1B[93m$@\x1B[0m \x1B[2m<- $(OBJDIR)/*\x1B[0m "
  34.     @$(CC) $(WARNINGS) $(LDLIBS) -o $@ $(foreach i,$^,$(i) )
  35.     @echo "\x1B[93mCompiled     v$(version)\x1B[0m"
  36.  
  37. clean:
  38.     $(Q)rm $(exe)
  39.     $(Q)rm -rf $(OBJDIR)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement