46 lines
939 B
Makefile
46 lines
939 B
Makefile
CC := /usr/bin/g++
|
|
INCLUDE_DIR := -I./include -I./third_party/vma/include
|
|
LFLAGS := -lglfw -lvulkan
|
|
CFLAGS := -g -Wall -Werror -std=c++20 $(INCLUDE_DIR) $(LFLAGS)
|
|
SRC_DIR := src
|
|
BUILD_DIR := ./build
|
|
TARGET := RedScarfEngine
|
|
SOURCES := main.cpp \
|
|
vulkanBase.cpp \
|
|
window.cpp \
|
|
logger.cpp \
|
|
|
|
OBJECTS := $(SOURCES:%=$(BUILD_DIR)/%)
|
|
OBJECTS := $(OBJECTS:cpp=o)
|
|
|
|
SHADERS_DIR := ./shaders
|
|
|
|
SHADER_OBJECTS := vertex.spv \
|
|
fragments.spv \
|
|
|
|
all: prepare_dirs $(OBJECTS) $(SHADER_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $(BUILD_DIR)/$(TARGET) $(OBJECTS)
|
|
|
|
# Build shader files
|
|
vertex.spv: $(SHADERS_DIR)/shader.vert
|
|
glslc $^ -o $(BUILD_DIR)/$@
|
|
|
|
fragments.spv: $(SHADERS_DIR)/shader.frag
|
|
glslc $^ -o $(BUILD_DIR)/$@
|
|
|
|
$(BUILD_DIR)/%.spv:
|
|
echo $(basename $^)
|
|
glslc $^ -o $@
|
|
|
|
# Generic build command
|
|
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
|
|
$(CC) $(CFLAGS) -c $^ -o $@
|
|
|
|
.PHONY: prepare_dirs
|
|
prepare_dirs:
|
|
mkdir -p ./build
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf ./build
|