Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .PHONY: all shadersCompile gch engineBuild clientBuild run clean
- # --Setup--
- APP_NAME = app
- BUILD_DIR = ./bin
- SHADERS_DIR = ./engine/shaders
- SPIRV_DIR = $(BUILD_DIR)/spirv
- # --Compiler--
- CXX = g++
- CXXFLAGS = -std=c++20 -O3 -g -fvisibility=hidden
- # --LIBRARY--
- # Precompiled Header
- PCH_FILE = $(wildcard $(shell find ./engine/src -name 'bhy_pch.hpp'))
- PCH_GCH_FILE = $(PCH_FILE).gch
- # General
- LIB_NAME:= bhy
- LIB_DEFINES:= -DBHY_EXPORT -dynamiclib
- LIB_INCLUDES:= -I./engine/src/ -I./engine/lib/ -I./engine/lib/imgui/ -I./engine/lib/imgui/backends -I/usr/local/include
- LIB_LINKERS:= -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi
- LIB_CPP_FILES := $(wildcard $(shell find ./engine/src -name '*.cpp'))
- LIB_OUTPUT := $(BUILD_DIR)/lib$(LIB_NAME).dylib
- # --ImGui source files--
- # TODO make this part of pch compile
- IMGUI_DIR = ./engine/lib/imgui
- IMGUI_BACKENDS_DIR = $(IMGUI_DIR)/backends
- IMGUI_SRC_FILES = $(IMGUI_DIR)/imgui.cpp $(IMGUI_DIR)/imgui_demo.cpp $(IMGUI_DIR)/imgui_draw.cpp $(IMGUI_DIR)/imgui_widgets.cpp $(IMGUI_DIR)/imgui_tables.cpp $(IMGUI_BACKENDS_DIR)/imgui_impl_glfw.cpp $(IMGUI_BACKENDS_DIR)/imgui_impl_vulkan.cpp
- # --CLIENT--
- APP_DEFINES:=
- APP_INCLUDES:= -I./client/src/ -I./engine/src/ -I./engine/lib/ -I./engine/lib/imgui/ -I./engine/lib/imgui/backends
- APP_LINKERS:= -L$(BUILD_DIR) -l$(LIB_NAME)
- APP_CPP_FILES := $(wildcard $(shell find ./client/src -name '*.cpp'))
- # --BUILD--
- all: shadersCompile engineBuild clientBuild run
- @echo "Built $(LIB_OUTPUT) and $(APP_NAME) in $(BUILD_DIR)/$(APP_NAME)"
- release: shadersCompile releaseEngineBuild clientBuild run
- @echo "Built $(LIB_OUTPUT) in $(BUILD_DIR)/$(APP_NAME)"
- engine: shadersCompile engineBuild run
- @echo "Built $(LIB_OUTPUT) in $(BUILD_DIR)/$(APP_NAME)"
- client: clientBuild run
- @echo "Built $(APP_NAME) in $(BUILD_DIR)/$(APP_NAME)"
- gch: $(PCH_GCH_FILE)
- $(CXX) $(CXXFLAGS) -c $(PCH_FILE) $(LIB_INCLUDES)
- $(PCH_GCH_FILE): $(PCH_FILE)
- $(CXX) $(CXXFLAGS) -c $(PCH_FILE) $(LIB_INCLUDES)
- releaseEngineBuild: $(PCH_GCH_FILE)
- $(CXX) $(CXXFLAGS) -DNDEBUG $(LIB_CPP_FILES) $(IMGUI_SRC_FILES) $(PCH_GCH_FILE) $(LIB_DEFINES) \
- -o $(LIB_OUTPUT) $(LIB_LINKERS) $(LIB_INCLUDES)
- # TODO releaseClientBuild
- engineBuild: $(PCH_GCH_FILE)
- $(CXX) $(CXXFLAGS) $(LIB_CPP_FILES) $(IMGUI_SRC_FILES) $(PCH_GCH_FILE) $(LIB_DEFINES) \
- -o $(LIB_OUTPUT) $(LIB_LINKERS) $(LIB_INCLUDES)
- clientBuild:
- $(CXX) $(CXXFLAGS) $(APP_CPP_FILES) -o \
- $(BUILD_DIR)/$(APP_NAME) $(APP_LINKERS) $(APP_INCLUDES)
- shadersCompile: $(SPIRV_DIR)/shader.vert.spv $(SPIRV_DIR)/shader.frag.spv
- $(SPIRV_DIR)/shader.vert.spv: $(SHADERS_DIR)/shader.vert | $(SPIRV_DIR)
- @echo "Compiling $< -> $@"
- @glslc -o $@ $<
- $(SPIRV_DIR)/shader.frag.spv: $(SHADERS_DIR)/shader.frag | $(SPIRV_DIR)
- @echo "Compiling $< -> $@"
- @glslc -o $@ $<
- $(SPIRV_DIR):
- @mkdir -p $(SPIRV_DIR)
- shaders: shadersCompile
- run:
- $(BUILD_DIR)/$(APP_NAME)
- clean:
- rm -rf $(BUILD_DIR)/*
- @echo "Removed contents from $(BUILD_DIR)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement