# GNU/Linux specific Make directives. # Declare tools. SHELL = /bin/sh CC = clang LD = clang ECHO = @echo CFLAGS = -std=c17 -Wall -Wextra -O0 -Wno-unused-variable -Wno-unused-parameter -I./include LDFLAGS = EXECUTABLE = inverT SOURCES = main.c functions.c OBJECTS = $(SOURCES:.c=.o) CLEANFILES = main.o functions.o # To get a fully verbose make output do declare 'AT' at the command line like so: 'make AT='. # By default AT is undefined and thus assigned the string '@' which suppresses output from commands. AT ?= @ # Colors and efects ####################################### NORMAL = \033[m FG_BLACK = \033[30m FG_DKRED = \033[31m FG_DKGREEN = \033[32;7m FG_DKYELLOW = \033[33m FG_DKBLUE = \033[34m FG_DKMAGENTA = \033[35m FG_DKCYAN = \033[36m FG_GRAY = \033[37m FG_DKGRAY = \033[30;1m FG_REDFULL = \033[31;7m FG_GREEN = \033[32;1m FG_YELLOW = \033[33;7m FG_BLUE = \033[34;7m FG_MAGENTA = \033[35;1m FG_CYAN = \033[36;1m FG_WHITE = \033[37;1m BG_BLACK = \033[40m BG_DKRED = \033[41m BG_DKGREEN = \033[42m BG_DKYELLOW = \033[43m BG_DKBLUE = \033[44m BG_DKMAGENTA = \033[45m BG_DKCYAN = \033[46m BG_GRAY = \033[47m BG_DKGRAY = \033[40;1m BG_RED = \033[41;1m BG_GREEN = \033[42;1m BG_YELLOW = \033[43;1m BG_BLUE = \033[44;1m BG_MAGENTA = \033[45;1m BG_CYAN = \033[46;1m BG_WHITE = \033[47;1m ########################################## .SUFFIXES: .c .o .PHONY: clean # Compile all: clean $(EXECUTABLE) .c.o: $(ECHO) "[$(FG_BLUE)COMPILING$(NORMAL)] $@" $(AT) $(CC) $(CFLAGS) -o $*.o -c $< $(EXECUTABLE): $(OBJECTS) $(ECHO) "[$(FG_YELLOW)LINKING$(NORMAL)] $(EXECUTABLE)" $(AT) $(LD) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE) $(ECHO) "[$(FG_DKGREEN)SUCCESS$(NORMAL)] Run ./$(EXECUTABLE) to start your application, Enjoy :)" clean: $(ECHO) "[$(FG_REDFULL)CLEANED$(NORMAL)] $(CLEANFILES)" $(AT) rm -rf $(CLEANFILES)