As it turns out, someone was cleaning up the Makefile of the console client, and he ended up checking for ncursesw before Makeconf was included, which always caused that the source list for the driver was empty, while the later check, the one that defines the build rule for the driver, succeeded if ncursesw was available, causing an empty shared object to be generated.
Here's a patch that fixes it: --- hurd/console-client/Makefile 2014-07-04 23:05:53.000000000 +0200 +++ hurd/console-client/Makefile 2014-07-04 23:30:14.000000000 +0200 @@ -26,13 +26,9 @@ PC_MOUSE_SO_SRCS = pc-mouse.c GENERIC_SPEAKER_SO_SRCS = generic-speaker.c CURRENT_VCS_SO_SRCS = current-vcs.c -ifneq ($(LIBNCURSESW),) -NCURSESW_SO_SRCS = ncursesw.c -endif SRCS = $(CONSOLE_SRCS) \ $(VGA_SO_SRCS) $(PC_KBD_SO_SRCS) $(PC_MOUSE_SO_SRCS) \ - $(GENERIC_SPEAKER_SO_SRCS) $(CURRENT_VCS_SO_SRCS) $(NCURSESW_SO_SRCS) \ - $(XKB_SRCS) + $(GENERIC_SPEAKER_SO_SRCS) $(CURRENT_VCS_SO_SRCS) $(XKB_SRCS) VPATH += $(srcdir)/xkb OBJS = $(addsuffix .o,$(basename $(notdir $(SRCS)))) kdioctlServer.o @@ -51,6 +47,11 @@ include ../Makeconf +ifneq ($(LIBNCURSESW),) +NCURSESW_SO_SRCS = ncursesw.c +SRCS += $(NCURSESW_SO_SRCS) +endif + driver-CPPFLAGS = -D'CONSOLE_DEFPATH="$(module-dir)\0"' \ -D'CONSOLE_SONAME_SUFFIX=".so.$(hurd-version)"' driver-DEPS = $(..)config.make p.s. This is my first ever patch I submitted to a project, so please don't be too mean if I messed something up :)