# BUILD SETTINGS ###########################################

ifneq ($(filter Msys Cygwin, $(shell uname -o)), )
    PLATFORM := WIN32
else
    PLATFORM := MINT
endif

TARGET := opentyrian

WITH_NETWORK := false

############################################################

STRIP := m68k-atari-mint-strip

CC := m68k-atari-mint-gcc

SDL_CONFIG := /usr/m68k-atari-mint/bin/sdl-config

SRCS := $(wildcard src/*.c)
OBJS := $(SRCS:src/%.c=obj/%.o)

# FLAGS ####################################################

EXTRA_CFLAGS += -g0 -O2 -ffast-math -fomit-frame-pointer -m68060  -DNDEBUG -DNOMUSIC
EXTRA_CFLAGS +=  -finline-functions -funswitch-loops -fpredictive-commoning -ftree-vectorize 

EXTRA_CFLAGS += -MMD -pedantic -Wall -Wextra -Wno-missing-field-initializers 
ifeq ($(WITH_NETWORK), true)
    EXTRA_CFLAGS += -DWITH_NETWORK
endif

HG_REV := $(shell hg id -ib && touch src/hg_revision.h)
ifneq ($(HG_REV), )
    EXTRA_CFLAGS += '-DHG_REV="$(HG_REV)"'
endif

EXTRA_LDLIBS += -lm

SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags)
SDL_LDLIBS := $(shell $(SDL_CONFIG) --libs)
ifeq ($(WITH_NETWORK), true)
    SDL_LDLIBS += -lSDL_net
endif

ALL_CFLAGS += -std=c99 -I./src -DTARGET_$(PLATFORM) $(EXTRA_CFLAGS) $(SDL_CFLAGS) $(CFLAGS)
ALL_LDFLAGS += $(LDFLAGS)
LDLIBS += $(EXTRA_LDLIBS) $(SDL_LDLIBS)

# RULES ####################################################

.PHONY : all release clean

all : $(TARGET)

release : all
	$(STRIP) $(TARGET)

clean :
	rm -rf obj/*
	rm -f $(TARGET)

ifneq ($(MAKECMDGOALS), clean)
    -include $(OBJS:.o=.d)
endif

$(TARGET) : $(OBJS)
	$(CC) -o $@ $(ALL_LDFLAGS) $^ $(LDLIBS)
	m68k-atari-mint-flags -S $(TARGET)
	m68k-atari-mint-stack --fix=256k $(TARGET)


obj/%.o : src/%.c
	@mkdir -p "$(dir $@)"
	$(CC) -c -o $@ $(ALL_CFLAGS) $<

