71 lines
2.2 KiB
Makefile
71 lines
2.2 KiB
Makefile
CFLAGS = $(shell pkg-config --cflags gtk+-2.0 fribidi freetype2 harfbuzz gio-2.0) -Wall -Wextra -g -std=c99
|
|
LDFLAGS = $(shell pkg-config --libs gtk+-2.0 fribidi freetype2 harfbuzz gio-2.0) -ldl -lm -Wl,--as-needed -Wl,-rpath,./lib
|
|
|
|
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
|
|
|
|
OBJS = $(SRCS:.c=.o)
|
|
TARGET = gtk2-mpv-player
|
|
|
|
# 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/gtk2-mpv-player
|
|
sudo rm -f /usr/local/bin/gtk2-mpv-player
|
|
sudo rm -f /usr/share/applications/gtk2-mpv-player.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
|