CC      = cc
CFLAGS  = -std=gnu11 -D_GNU_SOURCE -Wall -Wextra -O2
LDLIBS  = -lX11 -lasound -lpthread -lm

# Optional export formats: only enabled if the dev library is actually
# found at build time. A missing one means that code simply isn't
# compiled in -- see export.c -- not a runtime crash risk.
HAVE_FLAC := $(shell pkg-config --exists flac 2>/dev/null && echo 1)
HAVE_LAME := $(shell printf 'int main(void){return 0;}' | $(CC) -x c - -o /tmp/beatrat_lame_conftest -lmp3lame >/dev/null 2>&1 && echo 1 && rm -f /tmp/beatrat_lame_conftest)

ifeq ($(HAVE_FLAC),1)
    CFLAGS += -DHAVE_FLAC $(shell pkg-config --cflags flac)
    LDLIBS += $(shell pkg-config --libs flac)
endif
ifeq ($(HAVE_LAME),1)
    CFLAGS += -DHAVE_LAME
    LDLIBS += -lmp3lame
endif

SRCS    = main.c log.c ring_buffer.c wav.c audio_device.c track.c ui.c file_picker.c settings.c confirm.c export.c keybinds.c keybinds_menu.c register.c
OBJS    = $(SRCS:.c=.o)
TARGET  = beatrat

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(LDLIBS)
	@echo "--- Beat Rat build summary ---"
	@echo "FLAC export: $(if $(filter 1,$(HAVE_FLAC)),enabled,disabled -- install libflac-dev to enable)"
	@echo "MP3 export:  $(if $(filter 1,$(HAVE_LAME)),enabled,disabled -- install libmp3lame-dev to enable)"

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

PREFIX ?= $(HOME)/.local
BINDIR  = $(PREFIX)/bin

install: $(TARGET)
	mkdir -p $(BINDIR)
	cp $(TARGET) $(BINDIR)/$(TARGET)
	@echo "Installed to $(BINDIR)/$(TARGET)"
	@case ":$$PATH:" in \
		*":$(BINDIR):"*) echo "$(BINDIR) is already on your PATH -- run 'beatrat' from anywhere." ;; \
		*) echo "$(BINDIR) is NOT on your PATH yet -- add this to your shell rc (~/.bashrc, ~/.zshrc, etc.):"; \
		   echo "  export PATH=\"$(BINDIR):\$$PATH\"" ;; \
	esac

clean:
	rm -f $(TARGET) $(OBJS)

.PHONY: clean install
