CFLAGS = $(shell pkg-config --cflags gtk+-2.0 gio-2.0) -Wall -Wextra -g -std=c99 LDFLAGS = $(shell pkg-config --libs gtk+-2.0 gio-2.0) -ldl -lm -Wl,--as-needed -Wl,-rpath,./lib -rdynamic SRC_DIR = src SRCS = $(SRC_DIR)/main.c \ $(SRC_DIR)/player.c \ $(SRC_DIR)/ui.c \ $(SRC_DIR)/controls.c \ $(SRC_DIR)/playlist.c \ $(SRC_DIR)/dialogs.c \ $(SRC_DIR)/mpv_loader.c \ $(SRC_DIR)/mpris.c \ $(SRC_DIR)/plugin_manager.c OBJS = $(SRCS:.c=.o) TARGET = Kino # Find libmpv path dynamically LDCONFIG = $(shell command -v ldconfig || command -v /sbin/ldconfig || command -v /usr/sbin/ldconfig) LIBMPV_PATH = $(if $(LDCONFIG),$(shell $(LDCONFIG) -p | grep libmpv.so.2 | head -n 1 | awk '{print $$NF}')) .PHONY: all clean run bundle check install uninstall all: $(TARGET) bundle release: CFLAGS += -O2 -DNDEBUG release: LDFLAGS += -s release: clean all $(TARGET): $(OBJS) $(CC) -o $@ $^ $(LDFLAGS) bundle: mkdir -p lib @if [ -n "$(LIBMPV_PATH)" ]; then \ echo "Bundling libmpv from $(LIBMPV_PATH)"; \ cp "$(LIBMPV_PATH)" lib/libmpv.so.2; \ else \ echo "Warning: libmpv.so.2 not found, skipping bundling."; \ fi check: ./tools/check_dependencies.sh $(SRC_DIR)/%.o: $(SRC_DIR)/%.c $(CC) $(CFLAGS) -c -o $@ $< clean: rm -f $(OBJS) $(TARGET) rm -rf lib/ install: all sudo ./install.sh uninstall: sudo rm -rf /usr/local/lib/Kino sudo rm -f /usr/local/bin/kino sudo rm -f /usr/bin/kino sudo rm -f /usr/share/applications/kino.desktop update-desktop-database run: $(TARGET) ./$(TARGET) # Dependencies $(SRC_DIR)/main.o: $(SRC_DIR)/main.c $(SRC_DIR)/ui.h $(SRC_DIR)/player.h $(SRC_DIR)/player.o: $(SRC_DIR)/player.c $(SRC_DIR)/player.h $(SRC_DIR)/ui.o: $(SRC_DIR)/ui.c $(SRC_DIR)/ui.h $(SRC_DIR)/player.h $(SRC_DIR)/controls.h $(SRC_DIR)/playlist.h $(SRC_DIR)/dialogs.h $(SRC_DIR)/controls.o: $(SRC_DIR)/controls.c $(SRC_DIR)/controls.h $(SRC_DIR)/player.h $(SRC_DIR)/playlist.o: $(SRC_DIR)/playlist.c $(SRC_DIR)/playlist.h $(SRC_DIR)/player.h $(SRC_DIR)/dialogs.o: $(SRC_DIR)/dialogs.c $(SRC_DIR)/dialogs.h $(SRC_DIR)/player.h $(SRC_DIR)/playlist.h $(SRC_DIR)/mpv_loader.o: $(SRC_DIR)/mpv_loader.c $(SRC_DIR)/mpv_loader.h