From b85e0444cb88d85b789368905b59debff00b5d9a Mon Sep 17 00:00:00 2001 From: xtrm Date: Tue, 23 Apr 2024 22:46:32 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20chore:=20mauvaisfeedback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 68 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index c179744..f4d1ebe 100644 --- a/Makefile +++ b/Makefile @@ -6,22 +6,14 @@ # By: maldavid +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/10/04 16:43:41 by maldavid #+# #+# # -# Updated: 2024/04/23 20:38:01 by kiroussa ### ########.fr # +# Updated: 2024/04/23 22:45:41 by kiroussa ### ########.fr # # # # **************************************************************************** # NAME = libmlx.so MAKE = make --no-print-directory -SRCS = $(wildcard $(addsuffix /*.cpp, src/core)) -SRCS += $(wildcard $(addsuffix /*.cpp, src/platform)) -SRCS += $(wildcard $(addsuffix /*.cpp, src/renderer)) -SRCS += $(wildcard $(addsuffix /*.cpp, src/renderer/**)) - -OBJ_DIR = objs -OBJS := $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o)) - -OS := $(shell uname -s) +OS ?= $(shell uname -s) DEBUG ?= false TOOLCHAIN ?= clang IMAGES_OPTIMIZED ?= true @@ -30,6 +22,14 @@ GRAPHICS_MEMORY_DUMP ?= false PROFILER ?= false _ENABLEDFLAGS = +SRCS = $(wildcard $(addsuffix /*.cpp, src/core)) +SRCS += $(wildcard $(addsuffix /*.cpp, src/platform)) +SRCS += $(wildcard $(addsuffix /*.cpp, src/renderer)) +SRCS += $(wildcard $(addsuffix /*.cpp, src/renderer/**)) + +OBJ_DIR = objs/make/$(shell echo $(OS) | tr '[:upper:]' '[:lower:]') +OBJS := $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o)) + CXX = clang++ CXXFLAGS = -std=c++17 -O3 -fPIC -Wall -Wextra -Werror -DSDL_MAIN_HANDLED INCLUDES = -I./includes -I./src -I./third_party @@ -84,44 +84,46 @@ _GRAY := $(shell $(TPUT) setaf 8) _PURPLE := $(shell $(TPUT) setaf 5) ifeq ($(DEBUG), true) -MODE := $(_RESET)$(_PURPLE)$(_BOLD)Debug$(_RESET) +MODE := $(_RESET)$(_PURPLE)$(_BOLD)Debug$(_RESET)$(_PURPLE) else -MODE := $(_RESET)$(_GREEN)$(_BOLD)Release$(_RESET) +MODE := $(_RESET)$(_GREEN)$(_BOLD)Release$(_RESET)$(_GREEN) endif +OBJS_TOTAL = $(words $(OBJS)) +N_OBJS := $(shell find $(OBJ_DIR) -type f -name '*.o' 2>/dev/null | wc -l) +OBJS_TOTAL := $(shell echo $(OBJS_TOTAL) - $(N_OBJS) | bc) +CURR_OBJ = 0 + $(OBJ_DIR)/%.o: %.cpp - @mkdir -p $(dir $@) - @printf "$(MODE) $(_GRAY)|$(_RESET) Compiling $(_BOLD)$<$(_RESET) $(_GRAY)$(_ITALIC)($@)$(_RESET)\n" - @$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ + mkdir -p $(dir $@) + $(eval CURR_OBJ=$(shell echo $(CURR_OBJ) + 1 | bc)) + $(eval PERCENT=$(shell echo $(CURR_OBJ) \* 100 / $(OBJS_TOTAL) | bc)) + printf "$(_GREEN)($(_BOLD)%3s%%$(_RESET)$(_GREEN)) $(_RESET)Compiling $(_BOLD)$<$(_RESET)\n" "$(PERCENT)" + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ -all: $(NAME) +all: _printbuildinfos $(NAME) -$(NAME): $(OBJS) - @printf "$(MODE) $(_GRAY)|$(_RESET) Linking $(_BOLD)$(NAME)$(_RESET) $(_GRAY)$(_ITALIC)(from ./$(OBJ_DIR)/)$(_RESET)\n" - @$(CXX) -shared -o $(NAME) $(OBJS) $(LDFLAGS) - @printf "$(_BOLD)$(NAME)$(_RESET) compiled $(_GREEN)$(_BOLD)successfully$(_RESET)\n" +$(NAME): $(OBJS) + printf "Linking $(_BOLD)$(NAME)$(_RESET)\n" + $(CXX) -shared -o $(NAME) $(OBJS) $(LDFLAGS) + printf "$(_BOLD)$(NAME)$(_RESET) compiled $(_GREEN)$(_BOLD)successfully$(_RESET)\n" _printbuildinfos: - @printf "Building $(_BOLD)$(NAME)$(_RESET) in $(_BOLD)$(MODE)$(_RESET) mode\n" - @printf "\tOperating System: $(_BOLD)$(OS)$(_RESET)\n" - @printf "\tCompiler: $(_BOLD)$(CXX)$(_RESET)\n" - @printf "\tEnabled flags: $(_BOLD)$(_ENABLEDFLAGS)$(_RESET)\n" - @printf "\tCXXFLAGS: $(_BOLD)$(CXXFLAGS)$(_RESET)\n" - @printf "\tINCLUDES: $(_BOLD)$(INCLUDES)$(_RESET)\n" - @printf "\tLDFLAGS: $(_BOLD)$(LDFLAGS)$(_RESET)\n" + printf "$(_PURPLE)$(_BOLD)MacroLibX $(_RESET)Compiling in $(_BOLD)$(MODE)$(_RESET) mode on $(_BOLD)$(OS)$(_RESET) | Using $(_BOLD)$(CXX)$(_RESET), flags: $(_BOLD)$(_ENABLEDFLAGS)\n" debug: - @$(MAKE) _printbuildinfos DEBUG=true - @$(MAKE) all DEBUG=true -j + $(MAKE) all DEBUG=true -j clean: - @$(RM) $(OBJ_DIR) - @printf "Cleaned $(_BOLD)$(OBJ_DIR)$(_RESET)\n" + $(RM) $(OBJ_DIR) + printf "Cleaned $(_BOLD)$(OBJ_DIR)$(_RESET)\n" fclean: clean - @$(RM) $(NAME) - @printf "Cleaned $(_BOLD)$(NAME)$(_RESET)\n" + $(RM) $(NAME) + printf "Cleaned $(_BOLD)$(NAME)$(_RESET)\n" re: fclean all .PHONY: all clean debug fclean re + +.SILENT: