1# BUILD SETTINGS ###########################################
2
3ifneq ($(filter Msys Cygwin, $(shell uname -o)), )
4    PLATFORM := WIN32
5else
6    PLATFORM := UNIX
7endif
8
9TARGET := opentyrian
10
11############################################################
12
13STRIP := strip
14
15SDL_CONFIG := sdl-config
16
17SRCS := $(wildcard src/*.c)
18OBJS := $(SRCS:src/%.c=obj/%.o)
19
20# FLAGS ####################################################
21
22EXTRA_CFLAGS += -MMD -pedantic -Wall -Wextra -Wno-missing-field-initializers
23ifeq ($(WITH_NETWORK), true)
24    EXTRA_CFLAGS += -DWITH_NETWORK
25endif
26
27EXTRA_LDLIBS += -lm
28
29SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags)
30SDL_LDLIBS := $(shell $(SDL_CONFIG) --libs)
31ifeq ($(WITH_NETWORK), true)
32    SDL_LDLIBS += -lSDL_net
33endif
34
35ALL_CFLAGS += -std=c99 -I./src -DTARGET_$(PLATFORM) $(EXTRA_CFLAGS) $(SDL_CFLAGS) $(CFLAGS)
36ALL_LDFLAGS += $(LDFLAGS)
37LDLIBS += $(EXTRA_LDLIBS) $(SDL_LDLIBS)
38
39# RULES ####################################################
40
41.PHONY : all release clean
42
43all : $(TARGET)
44
45release : all
46	$(STRIP) $(TARGET)
47
48clean :
49	rm -rf obj/*
50	rm -f $(TARGET)
51
52ifneq ($(MAKECMDGOALS), clean)
53    -include $(OBJS:.o=.d)
54endif
55
56$(TARGET) : $(OBJS)
57	$(CC) -o $@ $(ALL_LDFLAGS) $^ $(LDLIBS)
58
59obj/%.o : src/%.c
60	@mkdir -p "$(dir $@)"
61	$(CC) -c -o $@ $(ALL_CFLAGS) $<
62
63