# # Variables # PROJECT_ROOT = . BUILDDIR = $(PROJECT_ROOT)/build SOURCEDIR = $(PROJECT_ROOT)/src INCLUDEDIRS = $(SOURCEDIR) INCLUDES = $(addprefix -I,$(INCLUDEDIRS)) LIBNAMES = LIBS = $(addprefix -l,$(LIBNAMES)) DEBUGFLAGS = -g CFLAGS = -Wall -DDEBUG_MODE -DDEBUG CFLAGS += -DLINUX $(DEBUGFLAGS) LDFLAGS = $(DEBUGFLAGS) CC = g++ LD = g++ LINK_TARGET = $(BUILDDIR)/scheduler_sim SOURCES := $(wildcard $(SOURCEDIR)/*.cpp) OBJS_TMP := $(foreach srcfile,$(SOURCES),$(srcfile).o) OBJS := $(foreach tmp,$(OBJS_TMP),$(patsubst $(SOURCEDIR)/%.cpp.o,$(BUILDDIR)/%.o,$(tmp))) REBUILDABLES = $(OBJS) $(LINK_TARGET) .PHONY: clean clean : rm -f $(REBUILDABLES) rm -f $(BUILDDIR)/* rmdir $(BUILDDIR) @echo Clean done all : builddir $(LINK_TARGET) @echo All done builddir : @echo 'Creating build directory' mkdir -p $(BUILDDIR) $(LINK_TARGET) : $(OBJS) @echo 'Linking file: $@' $(LD) $(LDFLAGS) $(LIBS) -o $@ $^ $(BUILDDIR)/%.o : $(SOURCEDIR)/%.cpp @echo 'Building file: $<' $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<