Created attachment 59986 [details] [review] #define _GNU_SOURCE While building xmodmap 1.0.6, I ran into this build error: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -Wall -Wpointer-arith -Wmissing-declarations -Wformat=2 -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wbad-function-cast -Wold-style-definition -Wdeclaration-after-statement -Wunused -Wuninitialized -Wshadow -Wcast-qual -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -Werror=implicit -Werror=nonnull -Werror=init-self -Werror=main -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=trigraphs -Werror=array-bounds -Werror=write-strings -Werror=address -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -fno-strict-aliasing -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -c xmodmap.c xmodmap.c: In function 'main': xmodmap.c:247:5: error: implicit declaration of function 'asprintf' [-Werror=implicit-function-declaration] xmodmap.c:247:5: warning: nested extern declaration of 'asprintf' [-Wnested-externs] cc1: some warnings being treated as errors As per asprintf man page: SYNOPSIS #define _GNU_SOURCE /* See feature_test_macros(7) */ #include <stdio.h> int asprintf(char **strp, const char *fmt, ...); int vasprintf(char **strp, const char *fmt, va_list ap); => Adding #define _GNU_SOURCE fixes the build.
http://patchwork.freedesktop.org/patch/9923/ submitted for review letting autoconf pick the right #define for the platform, since not all of X.Org's supported platforms use/require _GNU_SOURCE for that.
Fix pushed to git master.
The committed fix didn't help, I still get the same error with xmodmap 1.0.7.
Created attachment 60482 [details] [review] 0001-include-config.h-before-stdio.h-other-system-headers.patch Seems like something is different with your build setup then, since no other Linux user, nor the Linux tinderboxes, are reporting any such problem. However, I do see there could be an ordering problem, as configure now generates config.h to include: /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif But xmodmap.c doesn't include config.h directly, instead gets it via xmodmap.h which is loaded after stdio.h - the attached patch should correct it. I'm not going to bother pushing/releasing this until you test & confirm first though.
(In reply to comment #4) > Created attachment 60482 [details] [review] [review] > 0001-include-config.h-before-stdio.h-other-system-headers.patch I made a test build with this patch attached (and one more without): - Without patch: fails (as expected) - With patch: Build succeeds. So from my PoV, this looks fine as a solution as well.
Thanks, fix pushed to git master.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.