TARGETS	= $(OBJDIR)player$(EXEEXT) $(OBJDIR)playerctl$(EXEEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
BINDIR	= $(PREFIX)/bin
SBINDIR	= $(PREFIX)/sbin
CC	= cc
CPPFLAGSF= -I ../include
CPPFLAGS=
CFLAGSF	= `pkg-config --cflags libDesktop`
CFLAGS	= -W -Wall -g -fPIE -D_FORTIFY_SOURCE=2 -fstack-protector
LDFLAGSF= `pkg-config --libs libDesktop` -lintl
LDFLAGS	= -pie -Wl,-z,relro -Wl,-z,now
EXEEXT	=
RM	= rm -f
LN	= ln -f
MKDIR	= mkdir -m 0755 -p
INSTALL	= install


all: $(TARGETS)

player_OBJS = $(OBJDIR)backend.o $(OBJDIR)callbacks.o $(OBJDIR)player.o $(OBJDIR)main.o
player_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
player_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)player$(EXEEXT): $(player_OBJS)
	$(CC) -o $(OBJDIR)player$(EXEEXT) $(player_OBJS) $(player_LDFLAGS)

playerctl_OBJS = $(OBJDIR)playerctl.o
playerctl_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
playerctl_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)playerctl$(EXEEXT): $(playerctl_OBJS)
	$(CC) -o $(OBJDIR)playerctl$(EXEEXT) $(playerctl_OBJS) $(playerctl_LDFLAGS)

$(OBJDIR)backend.o: backend.c backend.h common.h backend/mplayer.c backend/mpv.c ../config.h
	$(CC) $(player_CFLAGS) -o $(OBJDIR)backend.o -c backend.c

$(OBJDIR)callbacks.o: callbacks.c callbacks.h player.h ../include/Player.h ../config.h
	$(CC) $(player_CFLAGS) -o $(OBJDIR)callbacks.o -c callbacks.c

$(OBJDIR)player.o: player.c backend.h callbacks.h common.h player.h ../include/Player.h ../config.h
	$(CC) -D PREFIX=\"$(PREFIX)\" $(player_CFLAGS) -o $(OBJDIR)player.o -c player.c

$(OBJDIR)main.o: main.c player.h ../config.h
	$(CC) -D PREFIX=\"$(PREFIX)\" $(player_CFLAGS) -o $(OBJDIR)main.o -c main.c

$(OBJDIR)playerctl.o: playerctl.c ../include/Player.h ../config.h
	$(CC) $(playerctl_CFLAGS) -o $(OBJDIR)playerctl.o -c playerctl.c

clean:
	$(RM) -- $(player_OBJS) $(playerctl_OBJS)

distclean: clean
	$(RM) -- $(TARGETS)

install: all
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)player$(EXEEXT) $(DESTDIR)$(BINDIR)/player$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)playerctl$(EXEEXT) $(DESTDIR)$(BINDIR)/playerctl$(EXEEXT)

uninstall:
	$(RM) -- $(DESTDIR)$(BINDIR)/player$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/playerctl$(EXEEXT)

.PHONY: all clean distclean install uninstall
