love-demo2/Makefile

106 lines
2.1 KiB
Makefile

#PREFIX = x86_64-w64-mingw32-
CC=$(PREFIX)gcc
CXX=$(PREFIX)g++
OBJCOPY=$(PREFIX)objcopy
OBJARCH = elf64-x86-64
OPT = -O0 -march=x86-64-v3
CSTD = -std=gnu23
CXXSTD = -std=gnu++23
CFLAGS += -g
CFLAGS += -fpic
CFLAGS += -I./include
CFLAGS += -Wall -Werror -Wfatal-errors -Wno-error=unused-variable -Wno-error=unused-but-set-variable
CFLAGS += -Wno-error=unknown-pragmas -Wno-unknown-pragmas
CFLAGS += -fno-strict-aliasing
ifdef READ_PACK_FILE
CFLAGS += -DREAD_PACK_FILE
endif
LDFLAGS += -lm
MINECRAFT_OBJS = \
minecraft/love2dworld/inthash.o \
minecraft/grandlecturn/inthash.o \
minecraft/midnightmeadow/inthash.o \
src/minecraft.o \
src/world/world.o \
src/world/entry_table.o
OBJS = \
src/gl.o \
src/opengl.o \
src/test.o \
src/font/bitmap.o \
src/font/outline.o \
src/window.o \
src/bresenham.o \
src/file.o \
src/non_block.o \
src/view.o \
src/hud.o \
src/lighting.o \
src/collision_scene.o \
src/line_art.o \
src/boids.o \
src/boids_scene.o \
src/dds_validate.o \
src/collada/scene.o \
src/collada/effect.o \
src/collada/node_state.o \
src/collada/animate.o \
src/lua_api.o \
src/pixel_line_art.o \
src/flame.o \
data/scenes/ship20/ship20.o \
data/scenes/noodle/noodle.o \
data/scenes/shadow_test/shadow_test.o \
data/scenes/book/book.o \
$(MINECRAFT_OBJS)
ifdef READ_PACK_FILE
OBJS += test.pack.o
endif
all: test.so
%.o: %.c
$(CC) $(ARCH) $(CSTD) $(CFLAGS) $(OPT) -c $< -o $@
%.o: %.cpp
$(CXX) $(ARCH) $(CXXSTD) $(CFLAGS) $(OPT) -c $< -o $@
test.pack: pack_main
./pack_main $@ $(shell cat filenames.txt)
test.pack.o: test.pack
$(OBJCOPY) -I binary -O $(OBJARCH) $< $@
test.so: $(OBJS)
$(CC) $(ARCH) $(OPT) -Wl,-z noexecstack -shared -g $^ -o $@ -lSDL3
test.dll: $(OBJS)
$(CXX) $(ARCH) $(OPT) -mthreads -static -mdll -static-libstdc++ -static-libgcc -g $^ -o $@ -L. -lSDL3 $(WINDOWS)
main: $(OBJS) src/main.o
$(CC) $(ARCH) $(LDFLAGS) $(OPT) -g $^ -o $@
clean:
find . -type f ! -name "*.*" -delete
pack_main: src/pack_main.o
$(CC) $(ARCH) $(OPT) -g $^ -o $@
.SUFFIXES:
.INTERMEDIATE:
.SECONDARY:
.PHONY: all clean phony dist
%: RCS/%,v
%: RCS/%
%: %,v
%: s.%
%: SCCS/s.%