include ../make.conf

BUILDDIR = ../build/sample

TARGET_PLAYER = $(BUILDDIR)/sample_player
TARGET_APP    = $(BUILDDIR)/sample_app

PLAYER_SOURCES = sample_player.c platform.c
APP_SOURCES    = sample_app.c sample_video.c platform.c

PLAYER_OBJECTS = $(patsubst %.c,$(BUILDDIR)/%.o,$(PLAYER_SOURCES))
APP_OBJECTS    = $(patsubst %.c,$(BUILDDIR)/%.o,$(APP_SOURCES))

CFLAGS  += -I../build/include -I../src/lib
LDFLAGS += -L../build/lib -lccl -lssl -lcrypto

CFLAGS += $(COMMON_CFLAGS)
LDFLAGS += $(COMMON_LDFLAGS) -lm -pthread -lcurl -luuid -lz

APP_CFLAGS  += $(shell pkg-config --cflags glib-2.0 gtk+-3.0 2>/dev/null)
APP_LDFLAGS += $(shell pkg-config --libs glib-2.0 gtk+-3.0 2>/dev/null)
VIDEO_CFLAGS  += $(shell pkg-config --cflags gstreamer-1.0 gstreamer-video-1.0 2>/dev/null)
VIDEO_LDFLAGS += $(shell pkg-config --libs gstreamer-1.0 gstreamer-video-1.0 2>/dev/null)
PLATFORM_CFLAGS += $(shell pkg-config --cflags glib-2.0 2>/dev/null)

ifeq ($(UNAME), Darwin)
LDFLAGS += -L/opt/homebrew/lib/
PLATFORM_CFLAGS += -I/opt/homebrew/opt/openssl/include
endif

ifeq ($(UNAME), Linux)
PLAYER_CFLAGS  += $(shell pkg-config --cflags gstreamer-1.0 gstreamer-video-1.0 x11)
PLAYER_LDFLAGS += $(shell pkg-config --libs gstreamer-1.0 gstreamer-video-1.0 x11)
VIDEO_CFLAGS   += $(shell pkg-config --cflags x11 2>/dev/null)
VIDEO_LDFLAGS  += $(shell pkg-config --libs x11 2>/dev/null)
RPATH = -Wl,-rpath,../lib
endif
ifeq ($(UNAME), Darwin)
RPATH = -Xlinker -rpath -Xlinker ../lib
endif

all : $(TARGET_APP)

build: CFLAGS += $(BUILD_CFLAGS)
build: APP_CFLAGS += $(BUILD_CFLAGS)
build: VIDEO_CFLAGS += $(BUILD_CFLAGS)
build: $(TARGET_APP)

debug: CFLAGS += $(DEBUG_CFLAGS)
debug: APP_CFLAGS += $(DEBUG_CFLAGS)
debug: VIDEO_CFLAGS += $(DEBUG_CFLAGS)
debug: $(TARGET_APP)

player: CFLAGS += $(BUILD_CFLAGS) $(PLAYER_CFLAGS)
player: LDFLAGS += $(PLAYER_LDFLAGS)
player: $(TARGET_PLAYER)

app: build

$(TARGET_PLAYER): $(PLAYER_OBJECTS)
	${CC} ${PLAYER_OBJECTS} -o $@ ${LDFLAGS} ${RPATH}

$(TARGET_APP): $(APP_OBJECTS)
	${CC} ${APP_OBJECTS} -o $@ ${LDFLAGS} ${APP_LDFLAGS} ${VIDEO_LDFLAGS} ${RPATH}

$(BUILDDIR)/sample_player.o: sample_player.c $(BUILDDIR)/.d
	${CC} ${CFLAGS} ${BUILD_CFLAGS} $(PLAYER_CFLAGS) -c $< -o $@

$(BUILDDIR)/sample_app.o: sample_app.c $(BUILDDIR)/.d
	${CC} ${CFLAGS} ${APP_CFLAGS} -c $< -o $@

$(BUILDDIR)/sample_video.o: sample_video.c $(BUILDDIR)/.d
	${CC} ${CFLAGS} ${APP_CFLAGS} $(VIDEO_CFLAGS) -c $< -o $@

$(BUILDDIR)/platform.o: platform.c $(BUILDDIR)/.d
	${CC} ${CFLAGS} ${BUILD_CFLAGS} $(PLATFORM_CFLAGS) -c $< -o $@

%/.d:
	mkdir -p $(BUILDDIR)

clean :
	rm -f $(PLAYER_OBJECTS) $(APP_OBJECTS) $(TARGET_PLAYER) $(TARGET_APP) $(BUILDDIR)/core

.PHONY: all build debug player app clean
