Advertisement
Guest User

precompiled headers makefile help

a guest
May 19th, 2024
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 2.98 KB | None | 0 0
  1. .PHONY: all shadersCompile gch engineBuild clientBuild run clean
  2.  
  3. # --Setup--
  4. APP_NAME = app
  5. BUILD_DIR = ./bin
  6. SHADERS_DIR = ./engine/shaders
  7. SPIRV_DIR = $(BUILD_DIR)/spirv
  8.  
  9. # --Compiler--
  10. CXX = g++
  11. CXXFLAGS = -std=c++20 -O3 -g -fvisibility=hidden
  12.  
  13. # --LIBRARY--
  14.  
  15. # Precompiled Header
  16. PCH_FILE = $(wildcard $(shell find ./engine/src -name 'bhy_pch.hpp'))
  17. PCH_GCH_FILE = $(PCH_FILE).gch
  18.  
  19. # General
  20. LIB_NAME:= bhy
  21. LIB_DEFINES:= -DBHY_EXPORT -dynamiclib
  22. LIB_INCLUDES:= -I./engine/src/ -I./engine/lib/ -I./engine/lib/imgui/ -I./engine/lib/imgui/backends -I/usr/local/include
  23. LIB_LINKERS:= -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi
  24. LIB_CPP_FILES := $(wildcard $(shell find ./engine/src -name '*.cpp'))
  25. LIB_OUTPUT := $(BUILD_DIR)/lib$(LIB_NAME).dylib
  26.  
  27. # --ImGui source files--
  28. # TODO make this part of pch compile
  29. IMGUI_DIR = ./engine/lib/imgui
  30. IMGUI_BACKENDS_DIR = $(IMGUI_DIR)/backends
  31. 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
  32.  
  33. # --CLIENT--
  34. APP_DEFINES:=
  35. APP_INCLUDES:= -I./client/src/ -I./engine/src/ -I./engine/lib/ -I./engine/lib/imgui/ -I./engine/lib/imgui/backends
  36. APP_LINKERS:= -L$(BUILD_DIR) -l$(LIB_NAME)
  37. APP_CPP_FILES := $(wildcard $(shell find ./client/src -name '*.cpp'))
  38.  
  39. # --BUILD--
  40. all: shadersCompile engineBuild clientBuild run
  41.     @echo "Built $(LIB_OUTPUT) and $(APP_NAME) in $(BUILD_DIR)/$(APP_NAME)"
  42.  
  43. release: shadersCompile releaseEngineBuild clientBuild run
  44.     @echo "Built $(LIB_OUTPUT) in $(BUILD_DIR)/$(APP_NAME)"
  45.  
  46. engine: shadersCompile engineBuild run
  47.     @echo "Built $(LIB_OUTPUT) in $(BUILD_DIR)/$(APP_NAME)"
  48.  
  49. client: clientBuild run
  50.     @echo "Built $(APP_NAME) in $(BUILD_DIR)/$(APP_NAME)"
  51.  
  52. gch: $(PCH_GCH_FILE)
  53.     $(CXX) $(CXXFLAGS) -c $(PCH_FILE) $(LIB_INCLUDES)
  54.  
  55. $(PCH_GCH_FILE): $(PCH_FILE)
  56.     $(CXX) $(CXXFLAGS) -c $(PCH_FILE) $(LIB_INCLUDES)
  57.  
  58. releaseEngineBuild: $(PCH_GCH_FILE)
  59.     $(CXX) $(CXXFLAGS) -DNDEBUG $(LIB_CPP_FILES) $(IMGUI_SRC_FILES) $(PCH_GCH_FILE) $(LIB_DEFINES) \
  60.   -o $(LIB_OUTPUT) $(LIB_LINKERS) $(LIB_INCLUDES)
  61.  
  62. # TODO releaseClientBuild
  63.  
  64. engineBuild: $(PCH_GCH_FILE)
  65.     $(CXX) $(CXXFLAGS) $(LIB_CPP_FILES) $(IMGUI_SRC_FILES) $(PCH_GCH_FILE) $(LIB_DEFINES) \
  66.   -o $(LIB_OUTPUT) $(LIB_LINKERS) $(LIB_INCLUDES)
  67.  
  68. clientBuild:
  69.     $(CXX) $(CXXFLAGS) $(APP_CPP_FILES) -o \
  70.     $(BUILD_DIR)/$(APP_NAME) $(APP_LINKERS) $(APP_INCLUDES)
  71.  
  72. shadersCompile: $(SPIRV_DIR)/shader.vert.spv $(SPIRV_DIR)/shader.frag.spv
  73.  
  74. $(SPIRV_DIR)/shader.vert.spv: $(SHADERS_DIR)/shader.vert | $(SPIRV_DIR)
  75.     @echo "Compiling $< -> $@"
  76.     @glslc -o $@ $<
  77.  
  78. $(SPIRV_DIR)/shader.frag.spv: $(SHADERS_DIR)/shader.frag | $(SPIRV_DIR)
  79.     @echo "Compiling $< -> $@"
  80.     @glslc -o $@ $<
  81.  
  82. $(SPIRV_DIR):
  83.     @mkdir -p $(SPIRV_DIR)
  84.  
  85. shaders: shadersCompile
  86.  
  87. run:
  88.     $(BUILD_DIR)/$(APP_NAME)
  89.  
  90. clean:
  91.     rm -rf $(BUILD_DIR)/*
  92.     @echo "Removed contents from $(BUILD_DIR)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement