Updated build instructions for kconfig-frontends

With the most recent gperf release – 3.1, released on 5th January 2017 (almost 8 years after previous 3.0.4) – the “standard” kconfig-frontends build procedure no longer works. The type of length argument used in generated functions was changed from unsigned int to size_t, which causes the build to fail with following error:

  CC     libkconfig_parser_la-yconf.lo
In file included from yconf.c:234:0:
hconf.gperf:141:1: error: conflicting types for 'kconf_id_lookup'
hconf.gperf:12:31: note: previous declaration of 'kconf_id_lookup' was here
 static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
                               ^~~~~~~~~~~~~~~
make[3]: *** [Makefile:456: libkconfig_parser_la-yconf.lo] Error 1
make[2]: *** [Makefile:350: all] Error 2
make[1]: *** [Makefile:334: all-recursive] Error 1
make: *** [Makefile:385: all-recursive] Error 1

Detailed description of the build procedure in Building kconfig-frontends in Linux was updated with an additional step, which fixes this problem with a patch and regeneration of configure & build scripts.

This extra step is required only if your system already has gperf 3.1 or newer. This currently limits the number of affected people to the handful of bleeding-edge fanatics, but that number is going to increase for sure. Let’s hope that the fix will be implemented upstream either in kconfig-frontends or in Linux kernel (and ported to kconfig-frontends). Until then, the only solution is to either patch the package (as described in the updated article) or downgrade gperf to version 3.0.4 or older (which – depending on your system – may or may not be a viable workaround).

Leave a Reply

Your email address will not be published. Required fields are marked *