Opened 6 months ago

#70032 new defect

ismrmrd: build uses static asserts which do not work for powerpc

Reported by: barracuda156 Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.9.3
Keywords: powerpc Cc: eborisch (Eric A. Borisch)
Port: ismrmrd

Description

Static asserts break the build on ppc, as wrong values are used:

In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/libsrc/waveform.cpp:7:
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:50:46: error: static assertion failed: ISMRMRD_WaveformHeader is not 40 bytes
   50 | static_assert(sizeof(ISMRMRD_WaveformHeader) == 40, "ISMRMRD_WaveformHeader is not 40 bytes");
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:50:46: note: the comparison reduces to '(36 == 40)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:52:55: error: static assertion failed: ISMRMRD WaveformHeader flags offset is not correct
   52 | static_assert(offsetof(ISMRMRD_WaveformHeader, flags) == 8, "ISMRMRD WaveformHeader flags offset is not correct");
      |                                                       ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:52:55: note: the comparison reduces to '(4 == 8)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:53:65: error: static assertion failed: ISMRMRD WaveformHeader measurement_uid offset is not correct
   53 | static_assert(offsetof(ISMRMRD_WaveformHeader, measurement_uid) == 16, "ISMRMRD WaveformHeader measurement_uid offset is not correct");
      |                                                                 ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:53:65: note: the comparison reduces to '(12 == 16)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:54:62: error: static assertion failed: ISMRMRD WaveformHeader scan_counter offset is not correct
   54 | static_assert(offsetof(ISMRMRD_WaveformHeader, scan_counter) == 20, "ISMRMRD WaveformHeader scan_counter offset is not correct");
      |                                                              ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:54:62: note: the comparison reduces to '(16 == 20)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:55:60: error: static assertion failed: ISMRMRD WaveformHeader time_stamp offset is not correct
   55 | static_assert(offsetof(ISMRMRD_WaveformHeader, time_stamp) == 24, "ISMRMRD WaveformHeader time_stamp offset is not correct");
      |                                                            ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:55:60: note: the comparison reduces to '(20 == 24)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:56:67: error: static assertion failed: ISMRMRD WaveformHeader number_of_samples offset is not correct
   56 | static_assert(offsetof(ISMRMRD_WaveformHeader, number_of_samples) == 28, "ISMRMRD WaveformHeader number_of_samples offset is not correct");
      |                                                                   ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:56:67: note: the comparison reduces to '(24 == 28)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:57:58: error: static assertion failed: ISMRMRD WaveformHeader channels offset is not correct
   57 | static_assert(offsetof(ISMRMRD_WaveformHeader, channels) == 30, "ISMRMRD WaveformHeader channels offset is not correct");
      |                                                          ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:57:58: note: the comparison reduces to '(26 == 30)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:58:64: error: static assertion failed: ISMRMRD WaveformHeader sample_time_us offset is not correct
   58 | static_assert(offsetof(ISMRMRD_WaveformHeader, sample_time_us) == 32, "ISMRMRD WaveformHeader sample_time_us offset is not correct");
      |                                                                ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:58:64: note: the comparison reduces to '(28 == 32)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:59:61: error: static assertion failed: ISMRMRD WaveformHeader waveform_id offset is not correct
   59 | static_assert(offsetof(ISMRMRD_WaveformHeader, waveform_id) == 36, "ISMRMRD WaveformHeader waveform_id offset is not correct");
      |                                                             ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:59:61: note: the comparison reduces to '(32 == 36)'
[ 16%] Building C object CMakeFiles/ismrmrd.dir/libsrc/waveform.c.o
/opt/local/bin/gcc-mp-13 -Dismrmrd_EXPORTS -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/build/include -I/opt/local/libexec/boost/1.76/include -isystem /opt/local/include -pipe -Os -DNDEBUG -I/opt/local/libexec/boost/1.76/include -I/opt/local/include -std=c99 -Wall -arch ppc -mmacosx-version-min=10.6 -fPIC -DNDEBUG -MD -MT CMakeFiles/ismrmrd.dir/libsrc/waveform.c.o -MF CMakeFiles/ismrmrd.dir/libsrc/waveform.c.o.d -o CMakeFiles/ismrmrd.dir/libsrc/waveform.c.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/libsrc/waveform.c
In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/serialization.h:10,
                 from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/libsrc/serialization.cpp:4:
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:50:46: error: static assertion failed: ISMRMRD_WaveformHeader is not 40 bytes
   50 | static_assert(sizeof(ISMRMRD_WaveformHeader) == 40, "ISMRMRD_WaveformHeader is not 40 bytes");
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:50:46: note: the comparison reduces to '(36 == 40)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:52:55: error: static assertion failed: ISMRMRD WaveformHeader flags offset is not correct
   52 | static_assert(offsetof(ISMRMRD_WaveformHeader, flags) == 8, "ISMRMRD WaveformHeader flags offset is not correct");
      |                                                       ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:52:55: note: the comparison reduces to '(4 == 8)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:53:65: error: static assertion failed: ISMRMRD WaveformHeader measurement_uid offset is not correct
   53 | static_assert(offsetof(ISMRMRD_WaveformHeader, measurement_uid) == 16, "ISMRMRD WaveformHeader measurement_uid offset is not correct");
      |                                                                 ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:53:65: note: the comparison reduces to '(12 == 16)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:54:62: error: static assertion failed: ISMRMRD WaveformHeader scan_counter offset is not correct
   54 | static_assert(offsetof(ISMRMRD_WaveformHeader, scan_counter) == 20, "ISMRMRD WaveformHeader scan_counter offset is not correct");
      |                                                              ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:54:62: note: the comparison reduces to '(16 == 20)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:55:60: error: static assertion failed: ISMRMRD WaveformHeader time_stamp offset is not correct
   55 | static_assert(offsetof(ISMRMRD_WaveformHeader, time_stamp) == 24, "ISMRMRD WaveformHeader time_stamp offset is not correct");
      |                                                            ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:55:60: note: the comparison reduces to '(20 == 24)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:56:67: error: static assertion failed: ISMRMRD WaveformHeader number_of_samples offset is not correct
   56 | static_assert(offsetof(ISMRMRD_WaveformHeader, number_of_samples) == 28, "ISMRMRD WaveformHeader number_of_samples offset is not correct");
      |                                                                   ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:56:67: note: the comparison reduces to '(24 == 28)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:57:58: error: static assertion failed: ISMRMRD WaveformHeader channels offset is not correct
   57 | static_assert(offsetof(ISMRMRD_WaveformHeader, channels) == 30, "ISMRMRD WaveformHeader channels offset is not correct");
      |                                                          ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:57:58: note: the comparison reduces to '(26 == 30)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:58:64: error: static assertion failed: ISMRMRD WaveformHeader sample_time_us offset is not correct
   58 | static_assert(offsetof(ISMRMRD_WaveformHeader, sample_time_us) == 32, "ISMRMRD WaveformHeader sample_time_us offset is not correct");
      |                                                                ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:58:64: note: the comparison reduces to '(28 == 32)'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:59:61: error: static assertion failed: ISMRMRD WaveformHeader waveform_id offset is not correct
   59 | static_assert(offsetof(ISMRMRD_WaveformHeader, waveform_id) == 36, "ISMRMRD WaveformHeader waveform_id offset is not correct");
      |                                                             ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_ismrmrd/ismrmrd/work/ismrmrd-1.13.7/include/ismrmrd/waveform.h:59:61: note: the comparison reduces to '(32 == 36)'
make[2]: *** [CMakeFiles/ismrmrd.dir/libsrc/waveform.cpp.o] Error 1

Issue with upstream: https://github.com/ismrmrd/ismrmrd/issues/251

Change History (0)

Note: See TracTickets for help on using tickets.