kino/Makefile

73 lines
2.1 KiB
Makefile

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