CC=gcc
CXX=g++
LD=gcc
WINDRES=windres

TARGET=rovgend

SRCDIR=src
BUILDDIR=build
TARGETDIR=bin
RESDIR=res

CFLAGS=-Wall -Wextra -pedantic -ggdb -O2 -fsanitize=address
LFLAGS=-fsanitize=address
INCLUDES=$(shell pkg-config --cflags sdl2 openal zlib ogg vorbis vorbisfile)
LIBS=$(shell pkg-config --libs sdl2 openal zlib ogg vorbis vorbisfile)

SRC=$(shell find $(SRCDIR) -type f -name *.c)
OBJS=$(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SRC:.c=.o))

ifeq ($(OS),Windows_NT)
	INCLUDES = -I"libs\SDL2-2.30.1\i686-w64-mingw32\include\SDL2" -Dmain=SDL_main -I"libs\openal-soft-1.23.1\include" -I"libs\zlib-1.3.1"
	LIBS     = -L"libs\SDL2-2.30.1\i686-w64-mingw32\lib" -L"libs\openal-soft-1.23.1\libs\Win32" -L"libs\zlib-1.3.1" -lmingw32 -lws2_32 -ldbghelp -lSDL2main -lSDL2 -lOpenAL32 -lz 
	CFLAGS  += -DAUDIO_NO_MUSIC
	LFLAGS  += -mwindows
	OBJS    += $(BUILDDIR)/rovres.o
endif

all: directories $(TARGET)

directories:
	mkdir -p $(BUILDDIR)
	mkdir -p $(TARGETDIR)

tools: bmfmake rpaker convertimg rovc

bmfmake: tools/bmfmake.c
	$(CC) -DTOOLS -o $(TARGETDIR)/bmfmake $< -lm
rpaker: tools/rpaker.c
	$(CC) -DTOOLS -I"libs\zlib-1.3.1" -I$(SRCDIR) -o $(TARGETDIR)/rpaker $< -L"libs\zlib-1.3.1" -lz
convertimg: tools/convertimg.c
	$(CC) -DTOOLS -o $(TARGETDIR)/convertimg $< -lm
rovc:
	make -C tools/rovc/

$(TARGET): $(OBJS)
	$(LD) $^ -o $(TARGETDIR)/$(TARGET) $(LFLAGS) $(LIBS)

$(BUILDDIR)/%.o: $(SRCDIR)/%.c
	$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDES)

$(BUILDDIR)/%.o: $(SRCDIR)/%.rc
	$(WINDRES) $< -o $@

clean:
	rm -dfr $(BUILDDIR) $(TARGETDIR)

.PHONY: all directories tools clean
