q
q copied to clipboard
Build fails with glibc>=2.34
Due to the SIGSTKSZ and MINSIGSTKSZ macros being redefined in newer versions of glibc, some header files pulled in from infra fail to compile.
Build log:
[ 0%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_common/portmidi.c.o
[ 1%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_common/pmutil.c.o
[ 2%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/porttime/porttime.c.o
[ 3%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/porttime/ptlinux.c.o
[ 4%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/finddefault.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c: In function ‘skip_spaces’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:16:12: warning: implicit declaration of function ‘isspace’ [-Wimplicit-function-declaration]
16 | while (isspace(c = getc(inf))) ;
| ^~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:9:1: note: include ‘<ctype.h>’ or provide a declaration of ‘isspace’
8 | #include "portmidi.h"
+++ |+#include <ctype.h>
9 |
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c: In function ‘find_default_device’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:84:13: warning: implicit declaration of function ‘pm_find_default_device’; did you mean ‘find_default_device’? [-Wimplicit-function-declaration]
84 | i = pm_find_default_device(pref_str, input);
| ^~~~~~~~~~~~~~~~~~~~~~
| find_default_device
[ 5%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/pmlinux.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinux.c: In function ‘pm_init’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinux.c:45:34: warning: implicit declaration of function ‘find_default_device’; did you mean ‘pm_find_default_device’? [-Wimplicit-function-declaration]
45 | pm_default_input_device_id = find_default_device(
| ^~~~~~~~~~~~~~~~~~~
| pm_find_default_device
[ 6%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/pmlinuxalsa.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_out_open’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:36:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
36 | #define GET_DESCRIPTOR_CLIENT(info) ((((int)(info)) >> 8) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:151:20: note: in expansion of macro ‘GET_DESCRIPTOR_CLIENT’
151 | desc->client = GET_DESCRIPTOR_CLIENT(client_port);
| ^~~~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:37:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
37 | #define GET_DESCRIPTOR_PORT(info) (((int)(info)) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:152:18: note: in expansion of macro ‘GET_DESCRIPTOR_PORT’
152 | desc->port = GET_DESCRIPTOR_PORT(client_port);
| ^~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_in_open’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:36:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
36 | #define GET_DESCRIPTOR_CLIENT(info) ((((int)(info)) >> 8) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:293:20: note: in expansion of macro ‘GET_DESCRIPTOR_CLIENT’
293 | desc->client = GET_DESCRIPTOR_CLIENT(client_port);
| ^~~~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:37:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
37 | #define GET_DESCRIPTOR_PORT(info) (((int)(info)) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:294:18: note: in expansion of macro ‘GET_DESCRIPTOR_PORT’
294 | desc->port = GET_DESCRIPTOR_PORT(client_port);
| ^~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_write_flush’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:436:52: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
436 | VERBOSE printf("snd_seq_drain_output: 0x%x\n", (unsigned int) seq);
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘pm_linuxalsa_init’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:35:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
35 | #define MAKE_DESCRIPTOR(client, port) ((void*)(((client) << 8) | (port)))
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:750:31: note: in expansion of macro ‘MAKE_DESCRIPTOR’
750 | MAKE_DESCRIPTOR(snd_seq_port_info_get_client(pinfo),
| ^~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:35:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
35 | #define MAKE_DESCRIPTOR(client, port) ((void*)(((client) << 8) | (port)))
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:760:31: note: in expansion of macro ‘MAKE_DESCRIPTOR’
760 | MAKE_DESCRIPTOR(snd_seq_port_info_get_client(pinfo),
| ^~~~~~~~~~~~~~~
[ 6%] Linking C static library libportmidi.a
[ 6%] Built target portmidi
[ 7%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_allocation.c.o
[ 7%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_converters.c.o
[ 8%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_cpuload.c.o
[ 9%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_debugprint.c.o
[ 10%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_dither.c.o
[ 11%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_front.c.o
[ 12%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_process.c.o
[ 13%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_ringbuffer.c.o
[ 14%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_stream.c.o
[ 14%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_trace.c.o
[ 15%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/skeleton/pa_hostapi_skeleton.c.o
[ 16%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/os/unix/pa_unix_hostapis.c.o
[ 17%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/os/unix/pa_unix_util.c.o
[ 18%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/jack/pa_jack.c.o
[ 19%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/alsa/pa_linux_alsa.c.o
[ 20%] Linking C static library libportaudio.a
[ 20%] Built target portaudio_static
[ 20%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_file.cpp.o
[ 21%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_device.cpp.o
[ 22%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_stream.cpp.o
[ 23%] Building CXX object q_io/CMakeFiles/libqio.dir/src/midi_device.cpp.o
[ 24%] Building CXX object q_io/CMakeFiles/libqio.dir/src/midi_stream.cpp.o
[ 25%] Linking CXX static library liblibqio.a
[ 25%] Built target libqio
[ 26%] Building CXX object example/CMakeFiles/example_list_devices.dir/list_devices.cpp.o
[ 26%] Linking CXX executable example_list_devices
[ 26%] Built target example_list_devices
[ 27%] Building CXX object example/CMakeFiles/example_sin_synth.dir/sin_synth.cpp.o
[ 28%] Linking CXX executable example_sin_synth
[ 28%] Built target example_sin_synth
[ 29%] Building CXX object example/CMakeFiles/example_square_synth.dir/square_synth.cpp.o
[ 30%] Linking CXX executable example_square_synth
[ 30%] Built target example_square_synth
[ 31%] Building CXX object example/CMakeFiles/example_delay.dir/delay.cpp.o
[ 32%] Linking CXX executable example_delay
[ 32%] Built target example_delay
[ 33%] Building CXX object example/CMakeFiles/example_io_delay.dir/io_delay.cpp.o
[ 34%] Linking CXX executable example_io_delay
[ 34%] Built target example_io_delay
[ 35%] Building CXX object example/CMakeFiles/example_midi_monitor.dir/midi_monitor.cpp.o
[ 36%] Linking CXX executable example_midi_monitor
[ 36%] Built target example_midi_monitor
[ 36%] Building CXX object example/CMakeFiles/example_biquad_filters.dir/biquad_filters.cpp.o
[ 37%] Linking CXX executable example_biquad_filters
[ 37%] Built target example_biquad_filters
[ 37%] Building CXX object test/CMakeFiles/test_bitset.dir/bitset.cpp.o
In file included from /usr/include/signal.h:328,
from /home/aaron/Source/q/infra/include/infra/catch.hpp:7712,
from /home/aaron/Source/q/test/bitset.cpp:7:
/home/aaron/Source/q/infra/include/infra/catch.hpp:10453:58: error: call to non-‘constexpr’ function ‘long int sysconf(int)’
10453 | static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
| ^~~~~~~~~~~
In file included from /usr/include/bits/sigstksz.h:24,
from /usr/include/signal.h:328,
from /home/aaron/Source/q/infra/include/infra/catch.hpp:7712,
from /home/aaron/Source/q/test/bitset.cpp:7:
/usr/include/unistd.h:640:17: note: ‘long int sysconf(int)’ declared here
640 | extern long int sysconf (int __name) __THROW;
| ^~~~~~~
In file included from /home/aaron/Source/q/test/bitset.cpp:7:
/home/aaron/Source/q/infra/include/infra/catch.hpp:10512:45: error: size of array ‘altStackMem’ is not an integral constant-expression
10512 | char FatalConditionHandler::altStackMem[sigStackSize] = {};
| ^~~~~~~~~~~~
make[2]: *** [test/CMakeFiles/test_bitset.dir/build.make:76: test/CMakeFiles/test_bitset.dir/bitset.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:591: test/CMakeFiles/test_bitset.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Would you care to propose a fix? It seems to be in the dependent libs.
Once the above-linked PR is merged, we can bump the submodule pointer (also in elements) to fix this.
I merged the PR, but I just realized I already did something like this. Have you tried develop instead of master? I'll check later.
Thanks, BTW!
No problem! I did not know to check develop
, but it appears to be behind master
by one commit :)