GCC15 compilation would fail with following errors:
bin/sh ../../../../../libtool --tag=CC --mode=compile cc -DHAVE_CONFIG_H -I. -I../../../../../include -DANSICPP -DMULTIBYTE -DNLS16 -D_POSIX_SOURCE -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -DUSE_XINERAMA -DUSE_XRENDER -DHAS_PAM_LIBRARY -DHAS_UTEMPTER_LIBRARY -I../.. -g -O2 -DOPT_TIRPC -I/usr/include/tirpc -Wno-unused-result -Wno-write-strings -fno-strict-aliasing -Wno-format-truncation -pthread -MT libdnd_la-ttdnd.lo -MD -MP -MF .deps/libdnd_la-ttdnd.Tpo -c -o libdnd_la-ttdnd.lo `test -f 'ttdnd.c' || echo './'`ttdnd.c
libtool: compile: cc -DHAVE_CONFIG_H -I. -I../../../../../include -DANSICPP -DMULTIBYTE -DNLS16 -D_POSIX_SOURCE -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -DUSE_XINERAMA -DUSE_XRENDER -DHAS_PAM_LIBRARY -DHAS_UTEMPTER_LIBRARY -I../.. -g -O2 -DOPT_TIRPC -I/usr/include/tirpc -Wno-unused-result -Wno-write-strings -fno-strict-aliasing -Wno-format-truncation -pthread -MT libdnd_la-ttdnd.lo -MD -MP -MF .deps/libdnd_la-ttdnd.Tpo -c ttdnd.c -fPIC -DPIC -o .libs/libdnd_la-ttdnd.o
ttdnd.c: In function 'ttdnd_init':
ttdnd.c:86:43: error: passing argument 2 of 'tt_pattern_callback_add' from incompatible pointer type [-Wincompatible-pointer-types]
86 | tt_pattern_callback_add(p,_ttdnd_get_contents_callback);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| Tt_callback_action (*)(void) {aka enum tt_callback_action (*)(void)}
In file included from ttdnd.c:37:
../../../../../include/Tt/tt_c.h:564:51: note: expected 'Tt_message_callback' {aka 'enum tt_callback_action (*)(struct _Tt_message_handle *, struct _Tt_pattern_handle *)'} but argument is of type 'Tt_callback_action (*)(void)' {aka 'enum tt_callback_action (*)(void)'}
564 | (Tt_pattern m,Tt_message_callback f))
| ~~~~~~~~~~~~~~~~~~~~^
../../../../../include/Tt/tt_c.h:72:58: note: in definition of macro '_TT_EXTERN_FUNC'
72 | # define _TT_EXTERN_FUNC(type,name,list) type name list;
| ^~~~
ttdnd.c:40:33: note: '_ttdnd_get_contents_callback' declared here
40 | static Tt_callback_action _ttdnd_get_contents_callback();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../include/Tt/tt_c.h:300:30: note: 'Tt_message_callback' declared here
300 | typedef Tt_callback_action (*Tt_message_callback) (Tt_message m,
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c: In function 'ttdnd_start_transfer':
ttdnd.c:137:9: error: too many arguments to function '_ttdnd_get_contents'; expected 0, have 4
137 | _ttdnd_get_contents(sourceXid, source_type, receivefunc, 0);
| ^~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
ttdnd.c:41:33: note: declared here
41 | static void _ttdnd_get_contents();
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c: At top level:
ttdnd.c:146:1: error: conflicting types for '_ttdnd_get_contents'; have 'void(int, const char *, int (*)(int, const char *, void *, int, int), int)'
146 | _ttdnd_get_contents(
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c:41:33: note: previous declaration of '_ttdnd_get_contents' with type 'void(void)'
41 | static void _ttdnd_get_contents();
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c: In function '_ttdnd_get_contents':
ttdnd.c:165:36: error: passing argument 2 of 'tt_message_callback_add' from incompatible pointer type [-Wincompatible-pointer-types]
165 | tt_message_callback_add(m, _ttdnd_continue_transfer);
| ^~~~~~~~~~~~~~~~~~~~~~~~
| |
| Tt_callback_action (*)(void) {aka enum tt_callback_action (*)(void)}
../../../../../include/Tt/tt_c.h:401:51: note: expected 'Tt_message_callback' {aka 'enum tt_callback_action (*)(struct _Tt_message_handle *, struct _Tt_pattern_handle *)'} but argument is of type 'Tt_callback_action (*)(void)' {aka 'enum tt_callback_action (*)(void)'}
401 | (Tt_message m,Tt_message_callback f))
| ~~~~~~~~~~~~~~~~~~~~^
../../../../../include/Tt/tt_c.h:72:58: note: in definition of macro '_TT_EXTERN_FUNC'
72 | # define _TT_EXTERN_FUNC(type,name,list) type name list;
| ^~~~
ttdnd.c:42:33: note: '_ttdnd_continue_transfer' declared here
42 | static Tt_callback_action _ttdnd_continue_transfer();
| ^~~~~~~~~~~~~~~~~~~~~~~~
../../../../../include/Tt/tt_c.h:300:30: note: 'Tt_message_callback' declared here
300 | typedef Tt_callback_action (*Tt_message_callback) (Tt_message m,
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c: At top level:
ttdnd.c:175:1: error: conflicting types for '_ttdnd_continue_transfer'; have 'Tt_callback_action(struct _Tt_message_handle *, struct _Tt_pattern_handle *)' {aka 'enum tt_callback_action(struct _Tt_message_handle *, struct _Tt_pattern_handle *)'}
175 | _ttdnd_continue_transfer(Tt_message m, Tt_pattern p)
| ^~~~~~~~~~~~~~~~~~~~~~~~
ttdnd.c:42:33: note: previous declaration of '_ttdnd_continue_transfer' with type 'Tt_callback_action(void)' {aka 'enum tt_callback_action(void)'}
42 | static Tt_callback_action _ttdnd_continue_transfer();
| ^~~~~~~~~~~~~~~~~~~~~~~~
ttdnd.c:234:1: error: conflicting types for '_ttdnd_get_contents_callback'; have 'Tt_callback_action(struct _Tt_message_handle *, struct _Tt_pattern_handle *)' {aka 'enum tt_callback_action(struct _Tt_message_handle *, struct _Tt_pattern_handle *)'}
234 | _ttdnd_get_contents_callback(Tt_message m, Tt_pattern p)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
ttdnd.c:40:33: note: previous declaration of '_ttdnd_get_contents_callback' with type 'Tt_callback_action(void)' {aka 'enum tt_callback_action(void)'}
40 | static Tt_callback_action _ttdnd_get_contents_callback();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
ttdnd.c:40:33: warning: '_ttdnd_get_contents_callback' used but never defined
ttdnd.c:41:33: warning: '_ttdnd_get_contents' used but never defined
41 | static void _ttdnd_get_contents();
| ^~~~~~~~~~~~~~~~~~~
ttdnd.c:42:33: warning: '_ttdnd_continue_transfer' used but never defined
42 | static Tt_callback_action _ttdnd_continue_transfer();
| ^~~~~~~~~~~~~~~~~~~~~~~~
make[4]: *** [Makefile:477: libdnd_la-ttdnd.lo] Error 1
CFLAGS=-std=gnu17 may provide short term workaround...