CC ?= cc
CSTD ?= -std=c11
CFLAGS ?= -O2 -Wall -Wextra -Wpedantic $(CSTD)
CFLAGS += -MMD -MP

SDL_CFLAGS := $(shell pkg-config --cflags SDL2 SDL2_ttf SDL2_image 2>/dev/null)
SDL_LIBS := $(shell pkg-config --libs SDL2 SDL2_ttf SDL2_image 2>/dev/null)
FFMPEG_CFLAGS := $(shell pkg-config --cflags libavformat libavcodec libswscale libswresample libavutil 2>/dev/null)
FFMPEG_LIBS := $(shell pkg-config --libs libavformat libavcodec libswscale libswresample libavutil 2>/dev/null)
MULTIARCH_CFLAGS := $(if $(wildcard /usr/include/i386-linux-gnu/SDL2/_real_SDL_config.h),-I/usr/include/i386-linux-gnu,)

ifeq ($(strip $(SDL_CFLAGS)),)
SDL_CFLAGS := $(shell sdl2-config --cflags 2>/dev/null) $(MULTIARCH_CFLAGS)
SDL_LIBS := $(shell sdl2-config --libs 2>/dev/null) -lSDL2_ttf -lSDL2_image
endif

ifeq ($(strip $(FFMPEG_LIBS)),)
FFMPEG_LIBS := -lavformat -lavcodec -lswscale -lswresample -lavutil
endif

SRC := $(wildcard src/*.c)
OBJ := $(SRC:.c=.o)
DEP := $(OBJ:.o=.d)
BIN := passport-c-media-player

CPPFLAGS += -I./src $(SDL_CFLAGS) $(FFMPEG_CFLAGS)
LDLIBS += $(SDL_LIBS) $(FFMPEG_LIBS) -lm

.PHONY: all run clean appimage

all: $(BIN)

$(BIN): $(OBJ)
	$(CC) $(OBJ) -o $@ $(LDLIBS)

-include $(DEP)

run: $(BIN)
	./$(BIN)

clean:
	rm -f $(OBJ) $(BIN)

appimage: $(BIN)
	./build-appimage.sh
