Files
RT_GPU/Makefile

132 lines
3.5 KiB
Makefile
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ifeq ($(OS),Windows_NT)
BLACK = 
RED = 
GREEN = 
YELLOW = 
BLUE = 
MAGENTA = 
CYAN = 
WHITE = 
RESET = 
LINE_CLR = \33[2K\r
RM := del /S /Q
DIR_DUP = if not exist "$(@D)" mkdir "$(@D)"
CC := g++ -O3
IFLAGS := -I./includes -I./includes/RT -I./includes/imgui -I"D:/ffmpeg/include"
LDFLAGS := -L./lib -L"D:/ffmpeg/lib" -lglfw3 -lopengl32 -lgdi32 -lcglm -lavformat -lavcodec -lavutil -lswscale -lswresample
else
BLACK = \033[30;49;3m
RED = \033[31;49;3m
GREEN = \033[32;49;3m
YELLOW = \033[33;49;3m
BLUE = \033[34;49;3m
MAGENTA = \033[35;49;3m
CYAN = \033[36;49;3m
WHITE = \033[37;49;3m
RESET = \033[0m
LINE_CLR = \33[2K\r
RM := rm -rf
DIR_DUP = mkdir -p $(@D)
CC := clang++
CFLAGS := -Wall -Wextra -Werror -g -O3 -std=c++20
IFLAGS := -I./includes -I./includes/RT -I./includes/imgui
LDFLAGS += -lglfw -lGL -lGLU -lX11 -lpthread -ldl -lavformat -lavcodec -lavutil -lswscale -lswresample
CMP = 1
endif
NAME := RT
SRCS_DIR := srcs
OBJS_DIR := .objs
IMGUI_SRCS := imgui/imgui.cpp \
imgui/imgui_draw.cpp \
imgui/imgui_widgets.cpp \
imgui/imgui_tables.cpp \
imgui/imgui_impl_glfw.cpp \
imgui/imgui_impl_opengl3.cpp
ALL_SRCS := $(IMGUI_SRCS) \
gl.cpp \
RT.cpp RT_utils.cpp \
class/Window.cpp \
class/ShaderProgram.cpp \
class/Shader.cpp \
class/Camera.cpp \
class/Scene.cpp \
class/SceneParser.cpp \
class/ObjParser.cpp \
class/BVH.cpp \
class/Arguments.cpp \
class/Renderer/Renderer.cpp \
class/Renderer/imgui.cpp \
class/Renderer/movements.cpp\
class/Renderer/saveLoad.cpp \
class/Clusterizer/Clusterizer.cpp\
class/Clusterizer/client.cpp \
class/Clusterizer/server.cpp \
class/Clusterizer/imgui.cpp \
class/Ffmpeg.cpp \
SRCS := $(ALL_SRCS:%=$(SRCS_DIR)/%)
OBJS := $(addprefix $(OBJS_DIR)/, $(SRCS:%.cpp=%.o))
HEADERS := includes/RT.hpp
MAKEFLAGS += --no-print-directory
ifneq ($(OS),Windows_NT)
FILE = $(shell echo $(SRCS) | tr " " "\n" | wc -l)
endif
all: $(NAME)
ifeq ($(OS),Windows_NT)
$(NAME): $(OBJS) $(HEADERS)
@$(CC) $(OBJS) $(IFLAGS) $(LDFLAGS) -o $(NAME)
@echo $(WHITE) $(NAME): PROJECT COMPILED !$(RESET)
else
$(NAME): $(OBJS) $(HEADERS)
@printf "$(LINE_CLR)$(WHITE) $(NAME): linking ...$(RESET)"
@$(CC) $(OBJS) $(IFLAGS) $(CFLAGS) $(LDFLAGS) -o $(NAME)
@printf "$(LINE_CLR)$(WHITE) $(NAME): PROJECT COMPILED !$(RESET)\n"
endif
flags:
echo $(CFLAGS) $(IFLAGS) | tr " " "\n" > compile_flags.txt
$(OBJS_DIR)/%.o: %.cpp
@$(DIR_DUP)
ifeq ($(OS),Windows_NT)
@echo $(WHITE) $(NAME): $(WHITE)$<$(RESET) $(GREEN)compiling...$(RESET)
@$(CC) $(IFLAGS) -c $^ -o $@
else
@if [ $(CMP) -eq '1' ]; then printf "\n"; fi;
@printf "$(LINE_CLR)$(WHITE) $(NAME): $(CMP)/$(FILE) $(WHITE)$<$(RESET) $(GREEN)compiling...$(RESET)"
@$(CC) $(CFLAGS) $(IFLAGS) -c $^ -o $@
@$(eval CMP=$(shell echo $$(($(CMP)+1))))
@if [ $(CMP) -gt $(FILE) ]; then \
printf "$(LINE_CLR)$(WHITE) $(NAME): $$(($(CMP)-1))/$(FILE)\n$(LINE_CLR)$(GREEN) Compilation done !$(RESET)\n"; \
fi
endif
ifeq ($(OS),Windows_NT)
clean:
else
clean:
@$(RM) $(OBJS)
endif
fclean: clean
ifeq ($(OS),Windows_NT)
@echo $(WHITE)$(NAME):$(RED) cleaned.$(RESET)
@$(RM) $(NAME).exe
@rmdir /S /Q "$(OBJS_DIR)"
else
@printf "$(WHITE)$(NAME):$(RED) cleaned.$(RESET)\n"
@$(RM) $(NAME)
@$(RM) $(OBJS_DIR)
endif
re: fclean
$(MAKE) all -j$(shell nproc)
.PHONY: all clean fclean re windows linux