vulkan/Makefile
2026-04-04 23:50:52 -05:00

87 lines
1.6 KiB
Makefile

CC=$(PREFIX)gcc
CXX=$(PREFIX)g++
OBJCOPY=$(PREFIX)objcopy
OBJARCH = elf64-x86-64
OPT = -O0 -march=x86-64-v3
DEBUG = -g
CSTD = -std=gnu23
CXXSTD = -std=gnu++23
CFLAGS += -Wall -Werror
CFLAGS += -Wfatal-errors
CFLAGS += -Wno-error=unused-variable -Wno-error=unused-but-set-variable
CFLAGS += -Wno-error=unused-function
CFLAGS += -Wno-error=array-bounds
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -fno-strict-aliasing
CFLAGS += -I./include
CFLAGS += -I../SDL3-dist/include
CFLAGS += -I../volk
CFLAGS += -fpic
FLAGS += -fstack-protector -fstack-protector-all -fno-omit-frame-pointer -fsanitize=address
LDFLAGS += -lm
ifeq ($(shell uname),Linux)
LDFLAGS += -Wl,-z noexecstack
endif
OBJS = \
src/main.o
BINS = \
index.idx.o \
position_normal_texture.vtx.o
SHADERS = \
shader/triangle.vs.spv.o \
shader/triangle.ps.spv.o
LIBS = \
../SDL3-dist/lib64/libSDL3.a \
../volk/volk.o
all: main
define BUILD_BINARY_O
$(OBJCOPY) -I binary -O $(OBJARCH) $< $@
endef
%.vtx.o: %.vtx
$(BUILD_BINARY_O)
%.idx.o: %.idx
$(BUILD_BINARY_O)
%.spv.o: %.spv
$(BUILD_BINARY_O)
%.o: %.c
$(CC) $(ARCH) $(CSTD) $(CFLAGS) $(FLAGS) $(OPT) $(DEBUG) -c $< -o $@
%.o: %.cpp
$(CXX) $(ARCH) $(CXXSTD) $(CFLAGS) $(FLAGS) $(OPT) $(DEBUG) -c $< -o $@
main: $(OBJS) $(LIBS) $(BINS) $(SHADERS)
$(CC) $(ARCH) $(LDFLAGS) $(FLAGS) $(OPT) $(DEBUG) $^ -o $@
%.vs.spv: %.hlsl
../dxc/bin/dxc -spirv -T vs_6_1 -E VSMain -fspv-target-env=vulkan1.3 $< -Fo $@
%.ps.spv: %.hlsl
../dxc/bin/dxc -spirv -T ps_6_1 -E PSMain -fspv-target-env=vulkan1.3 $< -Fo $@
.SUFFIXES:
.INTERMEDIATE:
.SECONDARY:
.PHONY: all clean phony dist
%: RCS/%,v
%: RCS/%
%: %,v
%: s.%
%: SCCS/s.%