mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 06:33:35 +00:00
fixing compilation issues
This commit is contained in:
116
Makefile
116
Makefile
@@ -1,102 +1,120 @@
|
||||
NAME = libmlx.so
|
||||
MAKE = make --no-print-directory
|
||||
|
||||
SRCS = $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Core))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Platform))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Graphics))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Renderer))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Renderer/Vulkan))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Renderer/Pipelines))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, ./runtime/Sources/Renderer/RenderPasses))
|
||||
|
||||
OBJ_DIR = objs/makefile
|
||||
OBJS = $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o))
|
||||
|
||||
PCH = ./runtime/Includes/PreCompiled.h
|
||||
GCH = ./runtime/Includes/PreCompiled.h.gch
|
||||
|
||||
OS = $(shell uname -s)
|
||||
OS ?= $(shell uname -s)
|
||||
DEBUG ?= false
|
||||
TOOLCHAIN ?= clang
|
||||
IMAGES_OPTIMIZED ?= true
|
||||
FORCE_INTEGRATED_GPU ?= false
|
||||
GRAPHICS_MEMORY_DUMP ?= false
|
||||
PROFILER ?= false
|
||||
FORCE_WAYLAND ?= false
|
||||
_ENABLEDFLAGS =
|
||||
|
||||
MODE = "release"
|
||||
SRCS = $(wildcard $(addsuffix /*.cpp, runtime/Sources/Core))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, runtime/Sources/Graphics))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, runtime/Sources/Platform))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, runtime/Sources/Renderer))
|
||||
SRCS += $(wildcard $(addsuffix /*.cpp, runtime/Sources/Renderer/**))
|
||||
|
||||
OBJ_DIR = objs/make/$(shell echo $(OS) | tr '[:upper:]' '[:lower:]')
|
||||
OBJS := $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o))
|
||||
|
||||
CXX = clang++
|
||||
|
||||
CXXFLAGS = -std=c++20 -O3 -fPIC -Wall -Wextra -Wno-deprecated -DSDL_MAIN_HANDLED
|
||||
CXXFLAGS = -std=c++20 -O3 -fPIC -Wall -Wextra -DSDL_MAIN_HANDLED
|
||||
INCLUDES = -I./includes -I./runtime/Includes -I./runtime/Sources -I./third_party
|
||||
|
||||
LDLIBS =
|
||||
|
||||
ifeq ($(TOOLCHAIN), gcc)
|
||||
CXX = g++
|
||||
CXXFLAGS += -Wno-error=cpp
|
||||
else
|
||||
CXXFLAGS += -Wno-error=#warning
|
||||
endif
|
||||
|
||||
ifeq ($(OS), Darwin)
|
||||
LDLIBS += -L /opt/homebrew/lib -lSDL2
|
||||
LDFLAGS += -L /opt/homebrew/lib -lSDL2
|
||||
CXXFLAGS += -I /opt/homebrew/include
|
||||
NAME = libmlx.dylib
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG), true)
|
||||
CXXFLAGS += -g -D DEBUG
|
||||
MODE = "debug"
|
||||
CXXFLAGS += -g3 -D DEBUG
|
||||
LDFLAGS += -rdynamic
|
||||
endif
|
||||
|
||||
ifeq ($(FORCE_INTEGRATED_GPU), true)
|
||||
CXXFLAGS += -D FORCE_INTEGRATED_GPU
|
||||
_ENABLEDFLAGS += FORCE_INTEGRATED_GPU
|
||||
endif
|
||||
|
||||
ifeq ($(IMAGES_OPTIMIZED), true)
|
||||
CXXFLAGS += -D IMAGE_OPTIMIZED
|
||||
_ENABLEDFLAGS += IMAGE_OPTIMIZED
|
||||
endif
|
||||
|
||||
ifeq ($(GRAPHICS_MEMORY_DUMP), true)
|
||||
CXXFLAGS += -D GRAPHICS_MEMORY_DUMP
|
||||
_ENABLEDFLAGS += GRAPHICS_MEMORY_DUMP
|
||||
endif
|
||||
|
||||
ifeq ($(PROFILER), true)
|
||||
CXXFLAGS += -D PROFILER
|
||||
_ENABLEDFLAGS += PROFILER
|
||||
endif
|
||||
|
||||
ifeq ($(FORCE_WAYLAND), true)
|
||||
CXXFLAGS += -D FORCE_WAYLAND
|
||||
endif
|
||||
CXXFLAGS += $(addprefix -D, $(_ENABLEDFLAGS))
|
||||
|
||||
RM = rm -rf
|
||||
|
||||
$(OBJ_DIR)/%.o: %.cpp $(GCH)
|
||||
@printf "\033[1;32m[compiling... "$(MODE)" "$(CXX)"]\033[1;00m "$<"\n"
|
||||
TPUT = tput -T xterm-256color
|
||||
_RESET := $(shell $(TPUT) sgr0)
|
||||
_BOLD := $(shell $(TPUT) bold)
|
||||
_ITALIC := $(shell $(TPUT) sitm)
|
||||
_UNDER := $(shell $(TPUT) smul)
|
||||
_GREEN := $(shell $(TPUT) setaf 2)
|
||||
_YELLOW := $(shell $(TPUT) setaf 3)
|
||||
_RED := $(shell $(TPUT) setaf 1)
|
||||
_GRAY := $(shell $(TPUT) setaf 8)
|
||||
_PURPLE := $(shell $(TPUT) setaf 5)
|
||||
|
||||
ifeq ($(DEBUG), true)
|
||||
MODE := $(_RESET)$(_PURPLE)$(_BOLD)Debug$(_RESET)$(_PURPLE)
|
||||
COLOR := $(_PURPLE)
|
||||
else
|
||||
MODE := $(_RESET)$(_GREEN)$(_BOLD)Release$(_RESET)$(_GREEN)
|
||||
COLOR := $(_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) )))
|
||||
CURR_OBJ = 0
|
||||
|
||||
$(OBJ_DIR)/%.o: %.cpp
|
||||
@mkdir -p $(dir $@)
|
||||
@$(eval CURR_OBJ=$(shell echo $$(( $(CURR_OBJ) + 1 ))))
|
||||
@$(eval PERCENT=$(shell echo $$(( $(CURR_OBJ) * 100 / $(OBJS_TOTAL) ))))
|
||||
@printf "$(COLOR)($(_BOLD)%3s%%$(_RESET)$(COLOR)) $(_RESET)Compiling $(_BOLD)$<$(_RESET)\n" "$(PERCENT)"
|
||||
@$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
||||
|
||||
all: $(NAME)
|
||||
all: _printbuildinfos
|
||||
@$(MAKE) $(NAME)
|
||||
|
||||
$(GCH):
|
||||
@printf "\033[1;32m[compiling... "$(MODE)" "$(CXX)"]\033[1;00m PreCompiled header\n"
|
||||
@$(CXX) $(CXXFLAGS) $(INCLUDES) -c $(PCH) -o $(GCH)
|
||||
$(NAME): $(OBJS)
|
||||
@printf "Linking $(_BOLD)$(NAME)$(_RESET)\n"
|
||||
@$(CXX) -shared -o $(NAME) $(OBJS) $(LDFLAGS)
|
||||
@printf "$(_BOLD)$(NAME)$(_RESET) compiled $(COLOR)$(_BOLD)successfully$(_RESET)\n"
|
||||
|
||||
$(NAME): $(OBJ_DIR) $(GCH) $(OBJS)
|
||||
@printf "\033[1;32m[linking ... "$(MODE)"]\033[1;00m "$@"\n"
|
||||
@$(CXX) -shared -o $(NAME) $(OBJS) $(LDLIBS)
|
||||
@printf "\033[1;32m[build finished]\033[1;00m\n"
|
||||
_printbuildinfos:
|
||||
@printf "$(_PURPLE)$(_BOLD)MacroLibX $(_RESET)Compiling in $(_BOLD)$(MODE)$(_RESET) mode on $(_BOLD)$(OS)$(_RESET) | Using $(_BOLD)$(CXX)$(_RESET), flags: $(_BOLD)$(_ENABLEDFLAGS)$(_RESET)\n"
|
||||
|
||||
$(OBJ_DIR):
|
||||
@mkdir -p $(sort $(addprefix $(OBJ_DIR)/, $(dir $(SRCS))))
|
||||
@printf "\033[1;32m[created objs directory]\033[1;00m\n"
|
||||
debug:
|
||||
@$(MAKE) all DEBUG=true -j$(shell nproc)
|
||||
|
||||
clean:
|
||||
@$(RM) $(OBJ_DIR)
|
||||
@printf "\033[1;32m[object files removed]\033[1;00m\n"
|
||||
@printf "Cleaned $(_BOLD)$(OBJ_DIR)$(_RESET)\n"
|
||||
|
||||
fclean: clean
|
||||
@$(RM) $(NAME)
|
||||
@$(RM) $(GCH)
|
||||
@printf "\033[1;32m["$(NAME)" and gch removed]\033[1;00m\n"
|
||||
@printf "Cleaned $(_BOLD)$(NAME)$(_RESET)\n"
|
||||
|
||||
re: fclean all
|
||||
re: fclean _printbuildinfos
|
||||
@$(MAKE) $(NAME)
|
||||
|
||||
.PHONY: all clean fclean re pch
|
||||
.PHONY: all clean debug fclean re
|
||||
|
||||
Reference in New Issue
Block a user