Something went wrong on our end
executable.mk 760 B
GCC = gcc
INCDIR = $(TOP)/inc
OBJDIR = obj
EXEDIR = $(TOP)/bin
LIBDIR = $(TOP)/lib
SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h)
INCLUDES = $(addprefix $(INCDIR)/, $(HEADERS))
OBJECTS = $(patsubst %.c, $(OBJDIR)/%.o, $(SOURCES))
TARGET = $(EXEDIR)/$(NAME)
CLEANUP = $(TARGET) $(OBJDIR)
.PHONY: default run clean
################
## User Targets
################
default: $(TARGET)
run: $(TARGET)
cd $(EXEDIR) && ./$(NAME)
clean:
rm -rf $(CLEANUP)
####################
## Internal Targets
####################
$(TARGET): $(OBJECTS) | $(EXEDIR)
$(GCC) -g -o $(TARGET) $^ -I$(INCDIR) -L$(LIBDIR) $(REQLIBS)
$(OBJDIR)/%.o : %.c | $(OBJDIR) $(INCDIR)
$(GCC) -c -g -o $@ $< -I$(INCDIR)
$(OBJDIR):
mkdir $(OBJDIR)
$(EXEDIR):
mkdir $(EXEDIR)