Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PRODUCT := chill
- SRCDIR := src
- DEPDIR := dep
- BINDIR := bin
- OBJDIR := obj
- CC := gcc
- CCEXT := c
- CCFLAGS := -Wall -std=c11
- # CCFLAGS := -Wall -Ofast -std=c11
- FILES := $(shell find $(SRCDIR) -name *.$(CCEXT))
- $(PRODUCT): $(patsubst %,$(OBJDIR)/%.o,$(subst /,__,$(patsubst $(SRCDIR)/%,%,$(FILES))))
- @$(CC) -o $(BINDIR)/$(PRODUCT) $(patsubst %,$(OBJDIR)/%.o,$(subst /,__,$(patsubst $(SRCDIR)/%,%,$(FILES)))) $(CCFLAGS)
- -include $(patsubst %,$(DEPDIR)/%.dep,$(subst /,__,$(patsubst $(SRCDIR)/%,%,$(FILES))))
- $(OBJDIR)/%.$(CCEXT).o:
- @$(eval CPATH := $(patsubst %,$(SRCDIR)/%,$(subst __,/,$*.$(CCEXT))))
- @$(eval DPATH := $(patsubst %,$(DEPDIR)/%,$*.$(CCEXT)).dep)
- @$(CC) $(CCFLAGS) -c $(CPATH) -o $(OBJDIR)/$*.$(CCEXT).o
- @$(CC) $(CCFLAGS) -MM $(CPATH) > $(DPATH)
- @mv -f $(DPATH) $(DPATH).tmp
- @sed -e 's|.*:|$(OBJDIR)/$*.$(CCEXT).o:|' < $(DPATH).tmp > $(DPATH)
- @sed -e 's/.*://' -e 's/\\$$//' < $(DPATH).tmp | fmt -1 | \
- sed -e 's/^ *//' -e 's/$$/:/' >> $(DPATH)
- @rm -f $(DPATH).tmp
- clean:
- @rm -f $(BINDIR)/$(PRODUCT) $(OBJDIR)/*.o $(DEPDIR)/*.dep
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement