vulkan/Makefile
2026-05-27 21:11:43 -05:00

127 lines
3.0 KiB
Makefile

CC=$(PREFIX)gcc
CXX=$(PREFIX)g++
OBJCOPY=$(PREFIX)objcopy
AS=$(PREFIX)as
OBJARCH = elf64-x86-64
UNAME := $(shell uname -s)
OPT += -O0
OPT += -march=core-avx2
DEBUG = -g
CSTD = -std=gnu17
CXXSTD = -std=gnu++20
CFLAGS += -Wall -Werror
CFLAGS += -Wfatal-errors
CFLAGS += -Wno-error=unused-variable
#CFLAGS += -Wno-error=unused-but-set-variable
CFLAGS += -Wno-format-security
CFLAGS += -Wno-format
CFLAGS += -Wno-error=unused-function
CFLAGS += -Wno-error=array-bounds
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -fno-strict-aliasing
CFLAGS += -I./include
CFLAGS += -I./data
CFLAGS += -I../SDL3-dist/include
ifeq ($(UNAME),Darwin)
CFLAGS += -I../MoltenVK/MoltenVK/include
endif
CFLAGS += -fpic
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections
#FLAGS += -fstack-protector -fstack-protector-all -fno-omit-frame-pointer -fsanitize=address
LDFLAGS += -lm
#LDFLAGS += -Wl,--gc-sections
#-Wl,--print-gc-sections
ifeq ($(UNAME),Linux)
LDFLAGS += -Wl,-z noexecstack
endif
ifeq ($(UNAME),Darwin)
LDFLAGS += -framework Foundation -framework Cocoa -framework IOKit -framework AVFoundation -framework CoreVideo -framework CoreAudio -framework CoreMedia -framework CoreHaptics -framework AudioToolbox -framework GameController -framework ForceFeedback -framework Carbon -framework Metal -framework QuartzCore -framework UniformTypeIdentifiers
LDFLAGS += -lstdc++
#LDFLAGS += ../MoltenVK/MoltenVK/static/MoltenVK.xcframework/macos-arm64_x86_64/libMoltenVK.a
LDFLAGS += -framework IOSurface
LDFLAGS += ../MoltenVK-1.4.0/libMoltenVK.a-x86_64-master.o
endif
# src/collada/scene/vulkan.o \
# src/collada/scene/reload.o \
# src/collada/scene.o \
# src/collada/node_state.o \
# src/collada/animate.o \
# src/minecraft/world.o \
# src/minecraft/entry_table.o \
# src/minecraft/vulkan.o \
# src/minecraft/vulkan/per_world.o \
OBJS = \
src/main.o \
src/file.o \
src/pack.o \
src/dds/validate.o \
src/vulkan_helper.o \
src/tga/tga.o \
src/font/outline.o \
src/renpy/vulkan.o \
src/renpy/script.o \
src/renpy/interpreter.o \
src/renpy/interact.o
SCENES = \
data/scenes/shadow_test/shadow_test.o \
data/scenes/eidelwind/eidelwind.o
ifeq ($(UNAME),Darwin)
LIBS = \
../SDL3-dist/lib/libSDL3.a
else
LIBS = \
../SDL3-dist/lib64/libSDL3.a
endif
all: main
%.o: %.c
$(CC) $(ARCH) $(CSTD) $(CFLAGS) $(FLAGS) $(OPT) $(DEBUG) -c $< -o $@
%.o: %.cpp
$(CXX) $(ARCH) $(CXXSTD) $(CFLAGS) $(FLAGS) $(OPT) $(DEBUG) -c $< -o $@
%.o: %.s
$(AS) $< -o $@
#%.dds: %.png
# WINEDEBUG=-all wine $(HOME)/Texconv.exe -y -nogpu -nowic -dx10 --format BC7_UNORM_SRGB -m 1 $< -o $(dir $@)
main: $(OBJS) $(LIBS) $(SCENES) $(WORLDS)
$(CC) $(ARCH) $(LDFLAGS) $(FLAGS) $(OPT) $(DEBUG) $^ -o $@
#%.spv: %.hlsl
# ../dxc/bin/dxc -spirv -T lib_6_3 -fspv-target-env=vulkan1.3 $< -Fo $@
tool/pack_file: tool/pack_file.cpp
make -C tool pack_file
src/pack.o: files.pack
PACK_FILENAMES = $(shell cat filenames.txt)
files.pack: tool/pack_file $(PACK_FILENAMES) filenames.txt
./tool/pack_file $@ $(PACK_FILENAMES)
.SUFFIXES:
.INTERMEDIATE:
.SECONDARY:
.PHONY: all clean phony dist
%: RCS/%,v
%: RCS/%
%: %,v
%: s.%
%: SCCS/s.%