PROG = im-strans.so
PKG_CONFIG ?= pkg-config
CFLAGS ?= -O2
GTK_CFLAGS = $(shell $(PKG_CONFIG) --cflags gtk+-3.0)
GTK_LIBS = $(shell $(PKG_CONFIG) --libs gtk+-3.0)
GTK_QUERY_IMMODULES ?= gtk-query-immodules-3.0
GTK_LIBDIR ?= $(shell $(PKG_CONFIG) --variable=libdir gtk+-3.0 2>/dev/null)
GTK_BINARY_VERSION ?= $(shell $(PKG_CONFIG) \
	--variable=gtk_binary_version gtk+-3.0 2>/dev/null)
GTK_RUNTIME_MODULE_DIR = $(shell GTK_PATH= GTK_IM_MODULE_FILE= \
	$(GTK_QUERY_IMMODULES) 2>/dev/null | \
	awk -F '"' '/^"\// { sub("/[^/]*$$", "", $$2); print $$2; exit }')
GTK_MODULE_DIR ?= $(strip $(if \
	$(and $(strip $(GTK_LIBDIR)),$(strip $(GTK_BINARY_VERSION))),\
	$(GTK_LIBDIR)/gtk-3.0/$(GTK_BINARY_VERSION)/immodules,\
	$(GTK_RUNTIME_MODULE_DIR)))

all: $(PROG)

$(PROG): main.c ../ipc.c ../ipc.h
	$(CC) $(CPPFLAGS) -I.. $(GTK_CFLAGS) -Wall $(CFLAGS) $(LDFLAGS) \
		-shared -fPIC -o $@ main.c ../ipc.c $(GTK_LIBS) $(LDLIBS)

install: $(PROG)
	module_dir="$(GTK_MODULE_DIR)"; \
	test -n "$$module_dir" || { \
		echo "cannot find GTK 3 module directory; set GTK_MODULE_DIR" >&2; \
		exit 1; \
	}; \
	mkdir -p "$(DESTDIR)$$module_dir" && \
	cp "$(PROG)" "$(DESTDIR)$$module_dir/" && \
	if test -z "$(DESTDIR)"; then \
		unset GTK_PATH GTK_IM_MODULE_FILE; \
		$(GTK_QUERY_IMMODULES) --update-cache; \
	fi

uninstall:
	module_dir="$(GTK_MODULE_DIR)"; \
	test -n "$$module_dir" || { \
		echo "cannot find GTK 3 module directory; set GTK_MODULE_DIR" >&2; \
		exit 1; \
	}; \
	rm -f "$(DESTDIR)$$module_dir/$(PROG)" && \
	if test -z "$(DESTDIR)"; then \
		unset GTK_PATH GTK_IM_MODULE_FILE; \
		$(GTK_QUERY_IMMODULES) --update-cache; \
	fi

clean:
	rm -f $(PROG)

.PHONY: all install uninstall clean
