CC = 9c
LD = 9l
PKGGOALS := $(filter-out check test verify-map clean xim bench,$(MAKECMDGOALS))
ifeq ($(MAKECMDGOALS),)
PKGGOALS := all
endif
ifneq ($(PKGGOALS),)
DBUS_CFLAGS := $(shell pkg-config --cflags dbus-1)
DBUS_LIBS := $(shell pkg-config --libs dbus-1)
WL_CFLAGS := $(shell pkg-config --cflags wayland-client xkbcommon)
WL_LIBS := $(shell pkg-config --libs wayland-client xkbcommon)
endif
CFLAGS = -Wall -Wextra -O2 -g $(DBUS_CFLAGS) $(WL_CFLAGS)
PROG = strans

SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)

all: $(PROG) xim bench

$(PROG): $(OBJS)
	$(LD) -o $@ $(OBJS) -lthread -lString -lbio -lxcb -lm $(DBUS_LIBS) $(WL_LIBS)

$(OBJS): dat.h fn.h ipc.h

clean:
	rm -f $(OBJS) $(PROG)
	$(MAKE) -C tests clean
	$(MAKE) -C xim/ clean
	$(MAKE) -C bench/ clean

xim:
	$(MAKE) -C xim/

bench:
	$(MAKE) -C bench/

check: verify-map test

test:
	$(MAKE) -C tests check TESTARGS="$(TESTARGS)"

verify-map:
	python3 map/mktelex.py | cmp - map/telex.map
	python3 -B map/mkemoji | cmp - map/emoji.dict
	python3 -B tests/mkemoji_test.py

.PHONY: all check test verify-map clean xim bench
