# downsample - MP3/WAV -> 8-bit 15000 Hz WAV (psychoacoustically treated)
#
# Requires a C++23 compiler and libmpg123 (brew install mpg123).  Shared helpers
# (audio.hpp / util.hpp / byteio.hpp / wav.*) live in ../common.

CXX      ?= clang++
CXXFLAGS ?= -std=c++23 -O2 -Wall -Wextra -MMD -MP
LDFLAGS  ?=

# libmpg123 via pkg-config (falls back to a plain -lmpg123 link).
MPG123_CFLAGS := $(shell pkg-config --cflags libmpg123 2>/dev/null)
MPG123_LIBS   := $(shell pkg-config --libs   libmpg123 2>/dev/null)
ifeq ($(strip $(MPG123_LIBS)),)
MPG123_LIBS := -lmpg123
endif

CXXFLAGS += $(MPG123_CFLAGS) -Isrc -I../common
LDFLAGS  += $(MPG123_LIBS)

VPATH := src ../common
SRCS  := $(notdir $(wildcard src/*.cpp) $(wildcard ../common/*.cpp))
OBJ   := $(addprefix src/,$(SRCS:.cpp=.o))
DEP   := $(OBJ:.o=.d)
BIN   := downsample

.PHONY: all clean

all: $(BIN)

$(BIN): $(OBJ)
	$(CXX) $(CXXFLAGS) $(OBJ) -o $@ $(LDFLAGS)

src/%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f $(OBJ) $(DEP) $(BIN)

-include $(DEP)
