1OS := $(shell uname)
 2ifeq ($(OS), Linux)
 3	SYSTEM = linux_amd64
 4else ifeq ($(OS), Darwin)
 5	SYSTEM = macos
 6else ifeq ($(OS), WindowsNT)
 7	SYSTEM = windows
 8else
 9	SYSTEM = unknown
10endif
11
12CC           := clang
13RAYLIB_VER   := raylib-6.0_$(SYSTEM)
14CFLAGS       := -std=c99 -v -g -I./vendor/$(RAYLIB_VER)/include
15LDFLAGS      := ./vendor/$(RAYLIB_VER)/lib/libraylib.a -lm
16GAME         := bin/stalag
17HEXDUMP      := bin/hexdump
18PACKER       := bin/packer
19SOURCES      := main.c map.c game.c player.c interface.c assets.c menu.c
20
21ifeq ($(SYSTEM), linux_amd64)
22	LDFLAGS += -lX11
23endif
24
25ifeq ($(SYSTEM), macos)
26	LDFLAGS += -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL
27endif
28
29all: info mkdirs $(HEXDUMP) $(PACKER) $(GAME)
30
31.PHONY: info mkdirs clean
32
33info: # Print out information about the build
34	$(info CC         : $(CC))
35	$(info SYSTEM     : $(SYSTEM))
36	$(info RAYLIB_VER : $(RAYLIB_VER))
37	$(info CFLAGS     : $(CFLAGS))
38	$(info LDFLAGS    : $(LDFLAGS))
39
40$(GAME): $(SOURCES)
41	$(CC) $(CFLAGS) $(SOURCES) -o $(GAME) $(LDFLAGS)
42
43$(HEXDUMP): tools/hexdump.c
44	$(CC) -std=c99 -o $(HEXDUMP) tools/hexdump.c
45
46$(PACKER): tools/packer.c
47	$(CC) -std=c99 -o $(PACKER) tools/packer.c
48
49data: $(PACKER)
50	$(PACKER) -p data.pak textures maps fonts
51
52mkdirs:
53	mkdir -p bin
54
55clean:
56	-rm $(GAME) $(HEXDUMP)