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)