Akagi201
12/10/2014 - 7:59 AM

Makefile

# Brian Smith's Super Duper Makefile
# Change CC/CFLAGS/LDFLAGS to fit your needs
# Directory format it searchs for:
# src/ - have your .c/.cc/.cpp files in there
# include/ - have your .h/.hpp files in there
# build/ - empty folder for object files and the executable

# CHANGE THESE TO FIT YOUR NEEDS
CC = cc
CFLAGS = -c -Wall -Iinclude/
LDFLAGS = -lpthread
# DONT TOUCH AFTER THIS - IT'S ALL AUTO

NAME = $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
EXT = .c
SOURCES = $(strip $(wildcard src/*.c))

ifeq ($(SOURCES),)
	EXT = .cpp
	SOURCES = $(strip $(wildcard src/*.cpp))
endif

ifeq ($(SOURCES),)
	EXT = .cc
	SOURCES = $(strip $(wildcard src/*.cc))
endif

ifeq ($(SOURCES),)
	$(error Unable to find the files!)
endif

OBJECTS = $(subst src/, build/, $(SOURCES:$(EXT)=.o))
EXECUTABLE = build/$(NAME)
TAR = $(NAME).tar

.PHONY: depend clean

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
	$(CC) $(LDFLAGS) $(OBJECTS) -o $@

$(OBJECTS):
	$(CC) $(CFLAGS) $(subst .o,$(EXT), $(subst build/, src/, $@)) -o $@

clean:
	rm -f build/*.o $(EXECUTABLE) $(TAR)

tar:
	tar cfv $(TAR) $(SOURCES)