THEME_NAME = Raleigh-Reloaded

prefix = /usr
datadir = $(prefix)/share
themedir = $(datadir)/themes/$(THEME_NAME)

arrow_dirs = down up left right
arrow_sizes = small normal large
arrow_base_names = $(foreach s,$(arrow_sizes),arrow-$(s).png)
arrow_names =								\
	$(foreach d,$(arrow_dirs),					\
		$(foreach s,$(arrow_sizes),				\
			arrow-$(d)-normal-$(s).png			\
			arrow-$(d)-disabled-$(s).png			\
		)							\
	)
ARROWS = $(addprefix src/assets/arrows/,$(arrow_base_names))

assets = $(notdir $(wildcard src/assets/*.png)) $(arrow_names)
LIGHT_ASSETS = $(addprefix dist/assets-light/,$(assets))
DARK_ASSETS  = $(addprefix dist/assets-dark/,$(assets))

BUILD_TARGETS = $(ARROWS) $(LIGHT_ASSETS) $(DARK_ASSETS)

DIRS =	dist/$(THEME_NAME) dist/$(THEME_NAME)-dark			\
	dist/$(THEME_NAME)/gtk-2.0					\
	dist/$(THEME_NAME)/gtk-3.0					\
	dist/$(THEME_NAME)/gtk-4.0					\
	dist/$(THEME_NAME)-dark/gtk-2.0					\
	dist/$(THEME_NAME)-dark/gtk-3.0					\
	dist/$(THEME_NAME)-dark/gtk-4.0					\
	dist/$(THEME_NAME)/gtk-3.0/assets				\
	dist/$(THEME_NAME)/gtk-4.0/assets				\
	dist/$(THEME_NAME)/gtk-3.0/assets-dark				\
	dist/$(THEME_NAME)/gtk-4.0/assets-dark				\
	dist/$(THEME_NAME)-dark/gtk-3.0/assets-dark			\
	dist/$(THEME_NAME)-dark/gtk-4.0/assets-dark			\
	dist/assets-light dist/assets-dark

INDICES = dist/$(THEME_NAME)/index.theme dist/$(THEME_NAME)-dark/index.theme

GTK2_TARGETS =								\
	dist/$(THEME_NAME)/gtk-2.0/gtkrc				\
	dist/$(THEME_NAME)-dark/gtk-2.0/gtkrc

GTK3_TARGETS =								\
	dist/$(THEME_NAME)/gtk-3.0					\
	dist/$(THEME_NAME)/gtk-3.0/assets				\
	dist/$(THEME_NAME)/gtk-3.0/assets-dark				\
	dist/$(THEME_NAME)/gtk-3.0/gtk.css				\
	dist/$(THEME_NAME)/gtk-3.0/gtk-dark.css				\
	dist/$(THEME_NAME)-dark/gtk-3.0/assets-dark			\
	dist/$(THEME_NAME)-dark/gtk-3.0/gtk.css				\
	$(addprefix dist/$(THEME_NAME)/gtk-3.0/assets/,$(assets))	\
	$(addprefix dist/$(THEME_NAME)/gtk-3.0/assets-dark/,$(assets))	\
	$(addprefix dist/$(THEME_NAME)-dark/gtk-3.0/assets-dark/,$(assets))

GTK4_TARGETS =								\
	dist/$(THEME_NAME)/gtk-4.0					\
	dist/$(THEME_NAME)/gtk-4.0/assets				\
	dist/$(THEME_NAME)/gtk-4.0/assets-dark				\
	dist/$(THEME_NAME)/gtk-4.0/gtk.css				\
	dist/$(THEME_NAME)/gtk-4.0/gtk-dark.css				\
	dist/$(THEME_NAME)-dark/gtk-4.0/assets-dark			\
	dist/$(THEME_NAME)-dark/gtk-4.0/gtk.css				\
	$(addprefix dist/$(THEME_NAME)/gtk-4.0/assets/,$(assets))	\
	$(addprefix dist/$(THEME_NAME)/gtk-4.0/assets-dark/,$(assets))	\
	$(addprefix dist/$(THEME_NAME)-dark/gtk-4.0/assets-dark/,$(assets))

TARGETS = $(BUILD_TARGETS) $(INDICES)					\
	$(GTK2_TARGETS) $(GTK3_TARGETS) $(GTK4_TARGETS)



.PHONY: all watch watch-dark install uninstall clean

all: $(TARGETS)

src/assets/arrows/%.png: src/assets/arrows/%.svg
	$(QUIET_GEN) rsvg-convert $< >$@

arrow-%.png: bin/make-arrow.sh src/assets/arrows/*.svg
	$(QUIET_GEN) sh bin/make-arrow.sh $@

dist/%.png: bin/make-asset.sh src/assets/*.png
	$(QUIET_GEN) sh bin/make-asset.sh $@

dist/%/index.theme: index.theme | dist/%
	$(QUIET_GEN) sed								\
		-e 's/^Name=.*/Name=$(patsubst dist/%/index.theme,%,$@)/'		\
		-e 's/^GtkTheme=.*/GtkTheme=$(patsubst dist/%/index.theme,%,$@)/'	\
		$< >$@

$(DIRS):
	$(QUIET_MKDIR) mkdir -p $@

dist/%/gtk-2.0/gtkrc: | dist/%/gtk-2.0
#	may be empty, Raleigh is the default GTK-2.0 theme
	$(QUIET_GEN) touch $@

dist/$(THEME_NAME)/gtk-3.0/assets/%.png: dist/assets-light/%.png
	$(QUIET_CP) cp -f dist/assets-light/$(notdir $@) $@

dist/$(THEME_NAME)/gtk-3.0/assets-dark/%.png: dist/assets-dark/%.png
	$(QUIET_CP) cp -f dist/assets-dark/$(notdir $@) $@

dist/$(THEME_NAME)-dark/gtk-3.0/assets-dark/%.png: dist/assets-dark/%.png
	$(QUIET_CP) cp -f dist/assets-dark/$(notdir $@) $@

dist/$(THEME_NAME)/gtk-4.0/assets/%.png: dist/assets-light/%.png
	$(QUIET_CP) cp -f dist/assets-light/$(notdir $@) $@

dist/$(THEME_NAME)/gtk-4.0/assets-dark/%.png: dist/assets-dark/%.png
	$(QUIET_CP) cp -f dist/assets-dark/$(notdir $@) $@

dist/$(THEME_NAME)-dark/gtk-4.0/assets-dark/%.png: dist/assets-dark/%.png
	$(QUIET_CP) cp -f dist/assets-dark/$(notdir $@) $@

dist/$(THEME_NAME)/gtk-3.0/gtk.css: src/*.scss | dist/$(THEME_NAME)/gtk-3.0
	$(QUIET_GEN) pysassc src/raleigh-light-gtk3.scss >$@

dist/$(THEME_NAME)/gtk-4.0/gtk.css: src/*.scss | dist/$(THEME_NAME)/gtk-4.0
	$(QUIET_GEN) pysassc src/raleigh-light-gtk4.scss >$@

dist/$(THEME_NAME)/gtk-3.0/gtk-dark.css: src/*.scss | dist/$(THEME_NAME)/gtk-3.0
	$(QUIET_GEN) pysassc src/raleigh-dark-gtk3.scss >$@

dist/$(THEME_NAME)/gtk-4.0/gtk-dark.css: src/*.scss | dist/$(THEME_NAME)/gtk-4.0
	$(QUIET_GEN) pysassc src/raleigh-dark-gtk4.scss >$@

dist/$(THEME_NAME)-dark/gtk-3.0/gtk.css: src/*.scss | dist/$(THEME_NAME)-dark/gtk-3.0
	$(QUIET_GEN) pysassc src/raleigh-dark-gtk3.scss >$@

dist/$(THEME_NAME)-dark/gtk-4.0/gtk.css: src/*.scss | dist/$(THEME_NAME)-dark/gtk-4.0
	$(QUIET_GEN) pysassc src/raleigh-dark-gtk4.scss >$@

install:
	mkdir -p $(datadir)/themes
	cp -rf dist/$(THEME_NAME) $(datadir)/themes/
	cp -rf dist/$(THEME_NAME)-dark $(datadir)/themes/

uninstall:
	rm -rf $(themedir) $(themedir)-dark

watch:
	sh bin/watch.sh

watch-dark:
	sh bin/watch.sh dark

clean:
	rm -rf dist src/assets/arrows/*.png

ifndef V
QUIET_GEN   = @echo "  GEN    $@";
QUIET_CP    = @echo "  CP   $@";
QUIET_MKDIR = @echo "  MKDIR  $@";
endif
