CC=gcc
AR=ar

SRC = $(wildcard src/*.c) $(wildcard src/*/*.c)
OBJ = $(addprefix obj/,$(notdir $(SRC:.c=.o)))

CFLAGS = -I ./include -std=gnu99 -Wall -Werror -Wno-unused -O3 -g
LFLAGS = -lSDL2 -lSDL2_mixer -lSDL2_net -shared -g

PLATFORM = $(shell uname)

ifeq ($(findstring Linux,$(PLATFORM)),Linux)
	DYNAMIC = libcorange.so
	STATIC = libcorange.a
	CFLAGS += -fPIC
	LFLAGS += -lGL
endif

ifeq ($(findstring Darwin,$(PLATFORM)),Darwin)
	DYNAMIC = libcorange.so
	STATIC = libcorange.a
	CFLAGS += -fPIC
	LFLAGS += -lGL
endif

ifeq ($(findstring MINGW,$(PLATFORM)),MINGW)
	DYNAMIC = corange.dll
	STATIC = libcorange.a
	LFLAGS = -lmingw32 -lopengl32 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_net -shared -g
	OBJ += corange.res
endif


all: $(DYNAMIC) $(STATIC)

$(DYNAMIC): $(OBJ)
	$(CC) $(OBJ) $(LFLAGS) -o $@

$(STATIC): $(OBJ)
	$(AR) rcs $@ $(OBJ)

obj/%.o: src/%.c | obj
	$(CC) $< -c $(CFLAGS) -o $@

obj/%.o: src/*/%.c | obj
	$(CC) $< -c $(CFLAGS) -o $@

obj:
	mkdir obj

corange.res: corange.rc
	windres $< -O coff -o $@

clean:
	rm $(OBJ) $(STATIC) $(DYNAMIC)

install_unix: $(STATIC)
	cp $(STATIC) /usr/local/lib/$(STATIC)

install_win32: $(STATIC)
	cp $(STATIC) C:/MinGW/lib/$(STATIC)

install_win64: $(STATIC) $(DYNAMIC)
	cp $(STATIC) C:/MinGW64/x86_64-w64-mingw32/lib/$(STATIC)
	cp $(DYNAMIC) C:/MinGW64/x86_64-w64-mingw32/bin/$(DYNAMIC)
