OS := $(shell uname) ifeq ($(OS), Linux) SYSTEM = linux_amd64 else ifeq ($(OS), Darwin) SYSTEM = macos else ifeq ($(OS), WindowsNT) SYSTEM = windows else SYSTEM = unknown endif CC := clang RAYLIB_VER := raylib-6.0_$(SYSTEM) CFLAGS := -std=c99 -v -g -I./vendor/$(RAYLIB_VER)/include LDFLAGS := ./vendor/$(RAYLIB_VER)/lib/libraylib.a -lm GAME := bin/stalag HEXDUMP := bin/hexdump PACKER := bin/packer SOURCES := main.c map.c game.c player.c ifeq ($(SYSTEM), linux_amd64) LDFLAGS += -lX11 endif ifeq ($(SYSTEM), macos) LDFLAGS += -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL endif all: info mkdirs $(HEXDUMP) $(PACKER) $(GAME) .PHONY: info mkdirs clean info: # Print out information about the build $(info CC : $(CC)) $(info SYSTEM : $(SYSTEM)) $(info RAYLIB_VER : $(RAYLIB_VER)) $(info CFLAGS : $(CFLAGS)) $(info LDFLAGS : $(LDFLAGS)) $(GAME): $(SOURCES) $(CC) $(CFLAGS) $(SOURCES) -o $(GAME) $(LDFLAGS) $(HEXDUMP): tools/hexdump.c $(CC) -std=c99 -o $(HEXDUMP) tools/hexdump.c $(PACKER): tools/packer.c $(CC) -std=c99 -o $(PACKER) tools/packer.c data: $(PACKER) $(PACKER) -p data.pak textures maps fonts mkdirs: mkdir -p bin clean: -rm $(GAME) $(HEXDUMP)