include config.mk

TARGET  = toile
SRCDIR  = src
SRCS    = $(SRCDIR)/toile.c \
          $(SRCDIR)/window.c \
          $(SRCDIR)/tabs.c \
          $(SRCDIR)/webview.c \
          $(SRCDIR)/shortcuts.c \
          $(SRCDIR)/prefs.c \
          $(SRCDIR)/bookmarks.c \
          $(SRCDIR)/history.c \
          $(SRCDIR)/downloads.c \
          $(SRCDIR)/scheme.c \
          $(SRCDIR)/adblock.c
OBJS    = $(SRCS:.c=.o)
DEPS    = $(OBJS:.o=.d)

# Legacy build (webkit2gtk-3.0): adblock runs as a web extension because
# WebKit 2.4 has no user content filter API. Lazy vars — only expanded
# when the extension target is actually built.
EXT     = $(if $(LEGACY),libtoileadblock.so)
EXTPKG  = webkit2gtk-web-extension-3.0 glib-2.0
EXTINCS = $(shell pkg-config --cflags $(EXTPKG))
EXTLIBS = $(shell pkg-config --libs   $(EXTPKG))

all: config.h $(TARGET) $(EXT)

config.h:
	cp config.def.h config.h

$(TARGET): $(OBJS)
	$(CC) -o $@ $^ $(LDFLAGS)

$(SRCDIR)/%.o: $(SRCDIR)/%.c config.h
	$(CC) $(CFLAGS) -MMD -MP -Isrc -I. -c -o $@ $<

libtoileadblock.so: $(SRCDIR)/adblock-ext.c $(SRCDIR)/adblock.c config.h
	$(CC) -std=c99 -Wall -Wextra -O2 -fPIC -shared $(EXTINCS) \
		-DPREFIX=\"$(PREFIX)\" -Isrc -I. -o $@ \
		$(SRCDIR)/adblock-ext.c $(SRCDIR)/adblock.c $(EXTLIBS)

-include $(DEPS)

install: all
	install -Dm755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET)
	install -Dm644 data/toile.desktop \
		$(DESTDIR)$(PREFIX)/share/applications/toile.desktop
	install -Dm644 data/toile.svg \
		$(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/toile.svg
	install -Dm644 doc/toile.1 \
		$(DESTDIR)$(MANPREFIX)/man1/toile.1
	install -Dm644 data/style.css \
		$(DESTDIR)$(PREFIX)/share/toile/style.css
	install -Dm644 data/homepage.html \
		$(DESTDIR)$(PREFIX)/share/toile/homepage.html
	[ -z "$(LEGACY)" ] || install -Dm755 libtoileadblock.so \
		$(DESTDIR)$(PREFIX)/lib/toile/libtoileadblock.so

uninstall:
	rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET)
	rm -f $(DESTDIR)$(PREFIX)/share/applications/toile.desktop
	rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/toile.svg
	rm -f $(DESTDIR)$(MANPREFIX)/man1/toile.1
	rm -f $(DESTDIR)$(PREFIX)/share/toile/style.css
	rm -f $(DESTDIR)$(PREFIX)/lib/toile/libtoileadblock.so

run: all
	./$(TARGET)

clean:
	rm -f $(OBJS) $(DEPS) $(TARGET) libtoileadblock.so config.h

.PHONY: all install uninstall run clean
