build: scope IBus flags, rebuild containers with clean, dedup gtk install

Only ibus.o needs the D-Bus and xkbcommon flags, so give them the same
per-object scoping as the popup and XIM objects. The docker targets used
-B, which recursive makes inherit: the daemon was linked three times and
the live tests built twice per docker-check. gtk/Makefile repeated the
module-directory check and cache refresh in install and uninstall.
This commit is contained in:
2026-08-16 15:46:00 +09:00
parent 61840fc108
commit d3c9813f6e
2 changed files with 21 additions and 30 deletions

View File

@@ -3,16 +3,16 @@ LD = 9l
PKG_CONFIG ?= pkg-config PKG_CONFIG ?= pkg-config
CFLAGS ?= -O2 -g CFLAGS ?= -O2 -g
WARN_CFLAGS = -Wall -Wextra WARN_CFLAGS = -Wall -Wextra
PKG_CFLAGS = $(shell $(PKG_CONFIG) --cflags dbus-1 xkbcommon) IBUS_CFLAGS = $(shell $(PKG_CONFIG) --cflags dbus-1 xkbcommon)
PKG_LIBS = $(shell $(PKG_CONFIG) --libs dbus-1 xkbcommon) IBUS_LIBS = $(shell $(PKG_CONFIG) --libs dbus-1 xkbcommon)
XIM_CFLAGS = $(shell $(PKG_CONFIG) --cflags xcb-imdkit xkbcommon-x11) XIM_CFLAGS = $(shell $(PKG_CONFIG) --cflags xcb-imdkit xkbcommon-x11)
XIM_LIBS = $(shell $(PKG_CONFIG) --libs xcb-imdkit xkbcommon-x11) XIM_LIBS = $(shell $(PKG_CONFIG) --libs xcb-imdkit xkbcommon-x11)
TEXT_CFLAGS = $(shell $(PKG_CONFIG) --cflags pangocairo cairo) TEXT_CFLAGS = $(shell $(PKG_CONFIG) --cflags pangocairo cairo)
TEXT_LIBS = $(shell $(PKG_CONFIG) --libs pangocairo cairo) TEXT_LIBS = $(shell $(PKG_CONFIG) --libs pangocairo cairo)
POPUP_CFLAGS = $(shell $(PKG_CONFIG) --cflags xcb-randr) POPUP_CFLAGS = $(shell $(PKG_CONFIG) --cflags xcb-randr)
POPUP_LIBS = $(shell $(PKG_CONFIG) --libs xcb-randr) POPUP_LIBS = $(shell $(PKG_CONFIG) --libs xcb-randr)
PROJECT_CPPFLAGS = $(PKG_CFLAGS) PROJECT_CPPFLAGS =
PROJECT_LDLIBS = -lthread -lbio -lxcb $(PKG_LIBS) $(TEXT_LIBS) \ PROJECT_LDLIBS = -lthread -lbio -lxcb $(IBUS_LIBS) $(TEXT_LIBS) \
$(XIM_LIBS) $(POPUP_LIBS) $(XIM_LIBS) $(POPUP_LIBS)
PROG = strans PROG = strans
DOCKER_IMAGE = strans-build DOCKER_IMAGE = strans-build
@@ -31,6 +31,7 @@ $(PROG): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $(OBJS) $(PROJECT_LDLIBS) $(LDLIBS) $(LD) $(LDFLAGS) -o $@ $(OBJS) $(PROJECT_LDLIBS) $(LDLIBS)
$(OBJS): dat.h fn.h ipc.h $(OBJS): dat.h fn.h ipc.h
ibus.o: PROJECT_CPPFLAGS += $(IBUS_CFLAGS)
font.o: PROJECT_CPPFLAGS += $(TEXT_CFLAGS) font.o: PROJECT_CPPFLAGS += $(TEXT_CFLAGS)
win.o: PROJECT_CPPFLAGS += $(POPUP_CFLAGS) win.o: PROJECT_CPPFLAGS += $(POPUP_CFLAGS)
$(XIMOBJS): PROJECT_CPPFLAGS += -I. $(XIM_CFLAGS) $(XIMOBJS): PROJECT_CPPFLAGS += -I. $(XIM_CFLAGS)
@@ -55,20 +56,20 @@ docker-image: Dockerfile
docker build -t $(DOCKER_IMAGE) - < Dockerfile docker build -t $(DOCKER_IMAGE) - < Dockerfile
docker-build: docker-build:
$(DOCKER_RUN) make -B all $(DOCKER_RUN) sh -c 'make clean && make all'
docker-check: docker-check:
$(DOCKER_RUN) make -B check check-live check-stress \ $(DOCKER_RUN) sh -c 'make clean && \
UNITARGS="$(UNITARGS)" make check check-live check-stress UNITARGS="$(UNITARGS)"'
docker-check-live: docker-check-live:
$(DOCKER_RUN) make -B check-live $(DOCKER_RUN) sh -c 'make clean && make check-live'
docker-check-stress: docker-check-stress:
$(DOCKER_RUN) make -B check-stress $(DOCKER_RUN) sh -c 'make clean && make check-stress'
docker-bench: docker-bench:
$(DOCKER_RUN) make -B bench $(DOCKER_RUN) sh -c 'make clean && make bench'
docker: docker-image docker: docker-image
$(MAKE) docker-build $(MAKE) docker-build

View File

@@ -21,30 +21,20 @@ $(PROG): main.c ../ipc.c ../ipc.h
$(CC) $(CPPFLAGS) -I.. $(GTK_CFLAGS) -Wall $(CFLAGS) $(LDFLAGS) \ $(CC) $(CPPFLAGS) -I.. $(GTK_CFLAGS) -Wall $(CFLAGS) $(LDFLAGS) \
-shared -fPIC -o $@ main.c ../ipc.c $(GTK_LIBS) $(LDLIBS) -shared -fPIC -o $@ main.c ../ipc.c $(GTK_LIBS) $(LDLIBS)
CHECKDIR = test -n "$$module_dir" || { \
echo "cannot find GTK 3 module directory; set GTK_MODULE_DIR" >&2; \
exit 1; }
REFRESH = test -n "$(DESTDIR)" || { \
unset GTK_PATH GTK_IM_MODULE_FILE; $(GTK_QUERY_IMMODULES) --update-cache; }
install: $(PROG) install: $(PROG)
module_dir="$(GTK_MODULE_DIR)"; \ module_dir="$(GTK_MODULE_DIR)"; $(CHECKDIR); \
test -n "$$module_dir" || { \
echo "cannot find GTK 3 module directory; set GTK_MODULE_DIR" >&2; \
exit 1; \
}; \
mkdir -p "$(DESTDIR)$$module_dir" && \ mkdir -p "$(DESTDIR)$$module_dir" && \
cp "$(PROG)" "$(DESTDIR)$$module_dir/" && \ cp "$(PROG)" "$(DESTDIR)$$module_dir/" && $(REFRESH)
if test -z "$(DESTDIR)"; then \
unset GTK_PATH GTK_IM_MODULE_FILE; \
$(GTK_QUERY_IMMODULES) --update-cache; \
fi
uninstall: uninstall:
module_dir="$(GTK_MODULE_DIR)"; \ module_dir="$(GTK_MODULE_DIR)"; $(CHECKDIR); \
test -n "$$module_dir" || { \ rm -f "$(DESTDIR)$$module_dir/$(PROG)" && $(REFRESH)
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: clean:
rm -f $(PROG) rm -f $(PROG)