include ../flags.mk

# paths
PREFIX    ?= /usr

ALSA_DIR := ../alsa
ICON_DIR := ../images

SOUND_ICON := $(ICON_DIR)/sound_24x24.png
NO_SOUND_ICON := $(ICON_DIR)/no_sound_24x24.png
PLAYBACK_ICON := $(ICON_DIR)/playback.png
CAPTURE_ICON := $(ICON_DIR)/capture.png

ALSA_DEPS := $(ALSA_DIR)/amixer.c $(ALSA_DIR)/events.c $(ALSA_DIR)/async.c \
             $(ALSA_DIR)/list.c $(ALSA_DIR)/userinfo.c $(ALSA_DIR)/panel_notify.c \
             $(ALSA_DIR)/unix_socket.c

ICON_HEADERS := sound_24x24 no_sound_24x24 playback_32x37 capture_32x37

OBJECTS := functions_ui.o scontrol.o controls_enumerate.o cli_options.o x11_desktop.o \
           snd_monitor.o avmix_ui.o statusicon.o popup.o peer_process.o main.o
SOURCES := $(patsubst %.o,%.c,$(OBJECTS))

PKG_CFLAGS := $(shell pkg-config --cflags gtk+-3.0 gdk-x11-3.0 x11)
PKG_LIBS   := $(shell pkg-config --libs gtk+-3.0 gdk-x11-3.0 x11)

CC := gcc

bindir = $(DESTDIR)$(PREFIX)

all: avmix

.SUFFIXES:

%.o: %.c $(ICON_HEADERS)
	$(CC) $(CFLAGS) -c $< -I.. -I$(ALSA_DIR) $(PKG_CFLAGS)

.NOTPARALLEL:

avmix: $(OBJECTS) $(ALSA_DIR)/backend.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -lasound $(PKG_LIBS)

$(ALSA_DIR)/backend.a: $(ALSA_DEPS)
	$(MAKE) -r -C $(ALSA_DIR) backend.a

build_images: $(SOUND_ICON) $(NO_SOUND_ICON) $(PLAYBACK_ICON) $(CAPTURE_ICON)
	gdk-pixbuf-csource --raw --name=sound_24x24 $(SOUND_ICON) >sound_24x24
	gdk-pixbuf-csource --raw --name=no_sound_24x24 $(NO_SOUND_ICON) >no_sound_24x24
	gdk-pixbuf-csource --raw --name=playback_32x37 $(PLAYBACK_ICON) >playback_32x37
	gdk-pixbuf-csource --raw --name=capture_32x37 $(CAPTURE_ICON) >capture_32x37

$(ICON_HEADERS): build_images

.PHONY: clean cleanall

clean:
	@rm -vf $(wildcard *.o) $(wildcard *~)

cleanall:
	@rm -vf $(wildcard *.o) $(wildcard *~) avmix sound_24x24 no_sound_24x24 playback_32x37 capture_32x37
