eclipse-cyclonedds / cyclonedds

Eclipse Cyclone DDS project
https://projects.eclipse.org/projects/iot.cyclonedds
Other
854 stars 352 forks source link

Build failure: `ddsi_udp.c: error: storage size of 'mreqn' isn't known` etc. #2019

Closed barracuda156 closed 3 months ago

barracuda156 commented 4 months ago

Build fails on earlier macOS with the following errors:

[  9%] Building C object src/tools/idlpp/CMakeFiles/idlpp.dir/src/main.c.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp && /opt/local/bin/gcc-mp-13 -DHAVE_CONFIG_H=1 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/tools/idlpp/src -pipe -Os -DNDEBUG -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -fPIC -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/tools/idlpp/CMakeFiles/idlpp.dir/src/main.c.o -MF CMakeFiles/idlpp.dir/src/main.c.o.d -o CMakeFiles/idlpp.dir/src/main.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/tools/idlpp/src/main.c
[  9%] Building C object src/tools/idlpp/CMakeFiles/idlpp.dir/src/mbchar.c.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp && /opt/local/bin/gcc-mp-13 -DHAVE_CONFIG_H=1 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/tools/idlpp/src -pipe -Os -DNDEBUG -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -fPIC -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/tools/idlpp/CMakeFiles/idlpp.dir/src/mbchar.c.o -MF CMakeFiles/idlpp.dir/src/mbchar.c.o.d -o CMakeFiles/idlpp.dir/src/mbchar.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/tools/idlpp/src/mbchar.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c: In function 'set_mc_options_transmit_ipv4_if':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:391:21: error: storage size of 'mreqn' isn't known
  391 |     struct ip_mreqn mreqn;
      |                     ^~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:391:21: warning: unused variable 'mreqn' [-Wunused-variable]
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c: In function 'joinleave_ssm_mcgroup':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:637:29: error: storage size of 'gsr' isn't known
  637 |     struct group_source_req gsr;
      |                             ^~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:642:57: error: 'MCAST_JOIN_SOURCE_GROUP' undeclared (first use in this function)
  642 |     rc = ddsrt_setsockopt (socket, IPPROTO_IPV6, join ? MCAST_JOIN_SOURCE_GROUP : MCAST_LEAVE_SOURCE_GROUP, &gsr, sizeof (gsr));
      |                                                         ^~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:642:57: note: each undeclared identifier is reported only once for each function it appears in
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:642:83: error: 'MCAST_LEAVE_SOURCE_GROUP' undeclared (first use in this function)
  642 |     rc = ddsrt_setsockopt (socket, IPPROTO_IPV6, join ? MCAST_JOIN_SOURCE_GROUP : MCAST_LEAVE_SOURCE_GROUP, &gsr, sizeof (gsr));
      |                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:637:29: warning: unused variable 'gsr' [-Wunused-variable]
  637 |     struct group_source_req gsr;
      |                             ^~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:647:27: error: storage size of 'mreq' isn't known
  647 |     struct ip_mreq_source mreq;
      |                           ^~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:655:55: error: 'IP_ADD_SOURCE_MEMBERSHIP' undeclared (first use in this function); did you mean 'IP_ADD_MEMBERSHIP'?
  655 |     rc = ddsrt_setsockopt (socket, IPPROTO_IP, join ? IP_ADD_SOURCE_MEMBERSHIP : IP_DROP_SOURCE_MEMBERSHIP, &mreq, sizeof (mreq));
      |                                                       ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                                       IP_ADD_MEMBERSHIP
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:655:82: error: 'IP_DROP_SOURCE_MEMBERSHIP' undeclared (first use in this function); did you mean 'IP_DROP_MEMBERSHIP'?
  655 |     rc = ddsrt_setsockopt (socket, IPPROTO_IP, join ? IP_ADD_SOURCE_MEMBERSHIP : IP_DROP_SOURCE_MEMBERSHIP, &mreq, sizeof (mreq));
      |                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                                  IP_DROP_MEMBERSHIP
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_udp.c:647:27: warning: unused variable 'mreq' [-Wunused-variable]
  647 |     struct ip_mreq_source mreq;
      |                           ^~~~
make[2]: *** [src/core/CMakeFiles/ddsc.dir/ddsi/src/ddsi_udp.c.o] Error 1
. . .
[ 28%] Building C object src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/time/darwin/time.c.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt && /opt/local/bin/gcc-mp-13  -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/ddsrt-internal/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/include -pipe -Os -DNDEBUG -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/time/darwin/time.c.o -MF CMakeFiles/ddsrt-internal.dir/src/time/darwin/time.c.o.d -o CMakeFiles/ddsrt-internal.dir/src/time/darwin/time.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/time/darwin/time.c
/opt/local/bin/gcc-mp-13 -pipe -Os -DNDEBUG -I/opt/local/include -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names -current_version 0.10.5 -o ../../lib/libcycloneddsidl.0.10.5.dylib -install_name @rpath/libcycloneddsidl.0.dylib CMakeFiles/idl.dir/src/symbol.c.o CMakeFiles/idl.dir/src/directive.c.o CMakeFiles/idl.dir/src/expression.c.o CMakeFiles/idl.dir/src/file.c.o CMakeFiles/idl.dir/src/processor.c.o CMakeFiles/idl.dir/src/scanner.c.o CMakeFiles/idl.dir/src/string.c.o CMakeFiles/idl.dir/src/annotation.c.o CMakeFiles/idl.dir/src/scope.c.o CMakeFiles/idl.dir/src/tree.c.o CMakeFiles/idl.dir/src/visit.c.o CMakeFiles/idl.dir/src/print.c.o CMakeFiles/idl.dir/src/keylist.c.o CMakeFiles/idl.dir/src/hashid.c.o CMakeFiles/idl.dir/src/parser.c.o CMakeFiles/idl.dir/src/md5.c.o  -Wl,-rpath,@loader_path/../lib
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c: In function 'ddsrt_thread_getname':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c:74:12: error: 'MAXTHREADNAMESIZE' undeclared (first use in this function)
   74 |   char buf[MAXTHREADNAMESIZE + 1] = "";
      |            ^~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c:74:12: note: each undeclared identifier is reported only once for each function it appears in
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c:74:8: warning: unused variable 'buf' [-Wunused-variable]
   74 |   char buf[MAXTHREADNAMESIZE + 1] = "";
      |        ^~~
[ 29%] Building C object src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/rusage/posix/rusage.c.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt && /opt/local/bin/gcc-mp-13  -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/ddsrt-internal/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/include -pipe -Os -DNDEBUG -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/rusage/posix/rusage.c.o -MF CMakeFiles/ddsrt-internal.dir/src/rusage/posix/rusage.c.o.d -o CMakeFiles/ddsrt-internal.dir/src/rusage/posix/rusage.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/rusage/posix/rusage.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c: In function 'ddsrt_gettid':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c:356:3: warning: implicit declaration of function 'pthread_threadid_np'; did you mean 'pthread_is_threaded_np'? [-Wimplicit-function-declaration]
  356 |   pthread_threadid_np(NULL, &tid);
      |   ^~~~~~~~~~~~~~~~~~~
      |   pthread_is_threaded_np
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c: In function 'ddsrt_gettid_for_thread':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/threads/posix/threads.c:369:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  369 |   return (ddsrt_tid_t) thread.v;
      |          ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/time/darwin/time.c: In function 'ddsrt_time_monotonic':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/ddsrt/src/time/darwin/time.c:65:28: warning: conversion to 'long long int' from 'uint64_t' {aka 'long long unsigned int'} may change the sign of the result [-Wsign-conversion]
   65 |   return (ddsrt_mtime_t) { mt * timeInfo.numer / timeInfo.denom };
      |                            ^~
make[2]: *** [src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/threads/posix/threads.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....

We do have a fix for missing pthread_is_threaded_np. I am not sure about the rest though at the moment.

eboasson commented 4 months ago

Snow Leopard! 😀

The struct ip_mreqn mreqn you should to work around by making sure https://github.com/eclipse-cyclonedds/cyclonedds/blob/be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/ddsi/src/ddsi_udp.c#L503 evaluates to false on an older macOS. A bit like https://github.com/eclipse-cyclonedds/cyclonedds/blob/be0e64a641aebd25947c842d8fbf4e648b9ab392/src/ddsrt/src/time/darwin/time.c#L15-L19

The others look like solvable by disabling IPv6 and source-specific multicast support. That should be as simple as cmake -DENABLE_IPV6=0 -DENABLE_SOURCE_SPECIFIC_MULTICAST=0.

These days I think these options don't get used much, you might into something, but that should be easy to fix.

barracuda156 commented 3 months ago

@eboasson Sorry, I was building initially from the release, and now trying to build the master, and something does not work from the very beginning:

/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c: In function 'dds_stream_write_sampleBE':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:1474:55: warning: passing argument 3 of 'dds_os_put_bytes' makes pointer from integer without a cast [-Wint-conversion]
 1474 |     dds_os_put_bytes ((struct dds_ostream *)os, data, (uint32_t) opt_size);
      |                                                       ^~~~~~~~~~~~~~~~~~~
      |                                                       |
      |                                                       unsigned int
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:431:147: note: expected 'const void * restrict' but argument is of type 'unsigned int'
  431 | static void dds_os_put_bytes (dds_ostream_t * __restrict os, const struct dds_cdrstream_allocator * __restrict allocator, const void * __restrict b, uint32_t l)
      |                                                                                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:1474:5: error: too few arguments to function 'dds_os_put_bytes'
 1474 |     dds_os_put_bytes ((struct dds_ostream *)os, data, (uint32_t) opt_size);
      |     ^~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:431:13: note: declared here
  431 | static void dds_os_put_bytes (dds_ostream_t * __restrict os, const struct dds_cdrstream_allocator * __restrict allocator, const void * __restrict b, uint32_t l)
      |             ^~~~~~~~~~~~~~~~
[  3%] Building C object src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/avl.c.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt && /opt/local/bin/gcc-mp-13  -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/ddsrt-internal/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/ddsrt/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/ddsrt/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/ddsrt/include -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/ddsrt/CMakeFiles/ddsrt-internal.dir/src/avl.c.o -MF CMakeFiles/ddsrt-internal.dir/src/avl.c.o.d -o CMakeFiles/ddsrt-internal.dir/src/avl.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/ddsrt/src/avl.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c: At top level:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3983:6: error: conflicting types for 'dds_stream_write_keyBE'; have 'void(dds_ostreamBE_t * restrict,  const char * restrict,  const struct dds_cdrstream_allocator * restrict,  const struct dds_cdrstream_desc * restrict)' {aka 'void(struct dds_ostreamBE * restrict,  const char * restrict,  const struct dds_cdrstream_allocator * restrict,  const struct dds_cdrstream_desc * restrict)'}
 3983 | void dds_stream_write_keyBE (dds_ostreamBE_t * __restrict os, const char * __restrict sample, const struct dds_cdrstream_allocator * __restrict allocator, const struct dds_cdrstream_desc * __restrict desc)
      |      ^~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:20:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/security/api/../../core/cdr/include/dds/cdr/dds_cdrstream.h:211:6: note: previous declaration of 'dds_stream_write_keyBE' with type 'void(dds_ostreamBE_t * restrict,  enum dds_cdr_key_serialization_kind,  const struct dds_cdrstream_allocator * restrict,  const char * restrict,  const struct dds_cdrstream_desc * restrict)' {aka 'void(struct dds_ostreamBE * restrict,  enum dds_cdr_key_serialization_kind,  const struct dds_cdrstream_allocator * restrict,  const char * restrict,  const struct dds_cdrstream_desc * restrict)'}
  211 | void dds_stream_write_keyBE (dds_ostreamBE_t * __restrict os, enum dds_cdr_key_serialization_kind ser_kind, const struct dds_cdrstream_allocator * __restrict allocator, const char * __restrict sample, const struct dds_cdrstream_desc * __restrict desc);
      |      ^~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c: In function 'dds_stream_write_keyBE':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3985:33: error: incompatible type for argument 2 of 'dds_stream_write_key'
 3985 |   dds_stream_write_key (&os->x, allocator, sample, desc);
      |                                 ^~~~~~~~~
      |                                 |
      |                                 const struct dds_cdrstream_allocator *
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3966:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream_keys.part.c:86:97: note: expected 'enum dds_cdr_key_serialization_kind' but argument is of type 'const struct dds_cdrstream_allocator *'
   86 | void dds_stream_write_keyBO (DDS_OSTREAM_T * __restrict os, enum dds_cdr_key_serialization_kind ser_kind, const struct dds_cdrstream_allocator * __restrict allocator, const char * __restrict sample, const struct dds_cdrstream_desc * __restrict desc)
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3985:44: warning: passing argument 3 of 'dds_stream_write_key' from incompatible pointer type [-Wincompatible-pointer-types]
 3985 |   dds_stream_write_key (&os->x, allocator, sample, desc);
      |                                            ^~~~~~
      |                                            |
      |                                            const char *
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream_keys.part.c:86:157: note: expected 'const struct dds_cdrstream_allocator * restrict' but argument is of type 'const char *'
   86 | void dds_stream_write_keyBO (DDS_OSTREAM_T * __restrict os, enum dds_cdr_key_serialization_kind ser_kind, const struct dds_cdrstream_allocator * __restrict allocator, const char * __restrict sample, const struct dds_cdrstream_desc * __restrict desc)
      |                                                                                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3985:52: warning: passing argument 4 of 'dds_stream_write_key' from incompatible pointer type [-Wincompatible-pointer-types]
 3985 |   dds_stream_write_key (&os->x, allocator, sample, desc);
      |                                                    ^~~~
      |                                                    |
      |                                                    const struct dds_cdrstream_desc *
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream_keys.part.c:86:192: note: expected 'const char * restrict' but argument is of type 'const struct dds_cdrstream_desc *'
   86 | void dds_stream_write_keyBO (DDS_OSTREAM_T * __restrict os, enum dds_cdr_key_serialization_kind ser_kind, const struct dds_cdrstream_allocator * __restrict allocator, const char * __restrict sample, const struct dds_cdrstream_desc * __restrict desc)
      |                                                                                                                                                                        ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3985:3: error: too few arguments to function 'dds_stream_write_key'
 3985 |   dds_stream_write_key (&os->x, allocator, sample, desc);
      |   ^~~~~~~~~~~~~~~~~~~~
[  3%] Building C object src/tools/idlpp/CMakeFiles/idlpp.dir/src/mbchar.c.o
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:86:71: note: declared here
   86 | #define dds_stream_write_keyBO                        NAME_BYTE_ORDER(dds_stream_write_key)
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:23:26: note: in definition of macro 'TOKENPASTE'
   23 | #define TOKENPASTE(a, b) a ## b
      |                          ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:27:31: note: in expansion of macro 'TOKENPASTE2'
   27 | #define NAME_BYTE_ORDER(name) TOKENPASTE2(name, NAME_BYTE_ORDER_EXT)
      |                               ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:86:55: note: in expansion of macro 'NAME_BYTE_ORDER'
   86 | #define dds_stream_write_keyBO                        NAME_BYTE_ORDER(dds_stream_write_key)
      |                                                       ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream_keys.part.c:86:6: note: in expansion of macro 'dds_stream_write_keyBO'
   86 | void dds_stream_write_keyBO (DDS_OSTREAM_T * __restrict os, enum dds_cdr_key_serialization_kind ser_kind, const struct dds_cdrstream_allocator * __restrict allocator, const char * __restrict sample, const struct dds_cdrstream_desc * __restrict desc)
      |      ^~~~~~~~~~~~~~~~~~~~~~
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp && /opt/local/bin/gcc-mp-13 -DHAVE_CONFIG_H=1 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/tools/idlpp/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/tools/idlpp/src -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -std=gnu99 -arch ppc -mmacosx-version-min=10.6 -fPIC -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/tools/idlpp/CMakeFiles/idlpp.dir/src/mbchar.c.o -MF CMakeFiles/idlpp.dir/src/mbchar.c.o.d -o CMakeFiles/idlpp.dir/src/mbchar.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/tools/idlpp/src/mbchar.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c: At top level:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:142:24: warning: 'dds_stream_extract_keyBE_from_data1' declared 'static' but never defined [-Wunused-function]
  142 | static const uint32_t *dds_stream_extract_keyBE_from_data1 (dds_istream_t * __restrict is, dds_ostreamBE_t * __restrict os, const struct dds_cdrstream_allocator * __restrict allocator,
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-be0e64a641aebd25947c842d8fbf4e648b9ab392/src/core/cdr/src/dds_cdrstream.c:3609:13: warning: 'dds_stream_extract_keyBE_from_key_prim_op' defined but not used [-Wunused-function]
 3609 | static void dds_stream_extract_keyBE_from_key_prim_op (dds_istream_t * __restrict is, dds_ostreamBE_t * __restrict os, const struct dds_cdrstream_allocator * __restrict allocator, const uint32_t * __restrict ops, uint16_t key_offset_count, const uint32_t * key_offset_insn)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/core/CMakeFiles/ddsc.dir/cdr/src/dds_cdrstream.c.o] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build'
make[1]: *** [src/core/CMakeFiles/ddsc.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Looks like one argument to dds_os_put_bytes got lost?

(With 0.10.5 I almost got to the end of the build, though one symbol was not found at linking.)

barracuda156 commented 3 months ago

With 0.10.5 I got to here:

[ 87%] Linking C shared library ../../lib/libddsc.dylib
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/core && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/ddsc.dir/link.txt --verbose=ON
/opt/local/bin/gcc-mp-13 -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -L/opt/local/lib -lMacportsLegacySupport -current_version 0.10.5 -o ../../lib/libddsc.0.10.5.dylib -install_name @rpath/libddsc.0.dylib CMakeFiles/ddsc.dir/ddsi/src/ddsi_eth.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_ssl.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_tcp.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_tran.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_udp.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_raweth.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_vnet.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_ipaddr.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_mcgroup.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_security_util.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_security_omg.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_portmapping.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_handshake.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_serdata.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_serdata_default.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_serdata_pserop.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_serdata_plist.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_sertype.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_sertype_default.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_sertype_pserop.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_sertype_plist.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_sertopic.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_statistics.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_iid.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_tkmap.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_vendor.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_threadmon.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_rhc.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_pmd.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_entity_index.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_deadline.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_deliver_locally.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_plist.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_cdrstream.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_config.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_time.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_ownip.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_acknack.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_list_genptr.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_wraddrset.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_typelib.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_entity.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_entity_match.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_participant.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_proxy_participant.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_topic.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_endpoint.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_proxy_endpoint.c.o CMakeFiles/ddsc.dir/ddsi/src/q_addrset.c.o CMakeFiles/ddsc.dir/ddsi/src/q_bitset_inlines.c.o CMakeFiles/ddsc.dir/ddsi/src/q_bswap.c.o CMakeFiles/ddsc.dir/ddsi/src/q_ddsi_discovery.c.o CMakeFiles/ddsc.dir/ddsi/src/q_debmon.c.o CMakeFiles/ddsc.dir/ddsi/src/q_gc.c.o CMakeFiles/ddsc.dir/ddsi/src/q_init.c.o CMakeFiles/ddsc.dir/ddsi/src/q_lat_estim.c.o CMakeFiles/ddsc.dir/ddsi/src/q_lease.c.o CMakeFiles/ddsc.dir/ddsi/src/q_misc.c.o CMakeFiles/ddsc.dir/ddsi/src/q_pcap.c.o CMakeFiles/ddsc.dir/ddsi/src/q_qosmatch.c.o CMakeFiles/ddsc.dir/ddsi/src/q_radmin.c.o CMakeFiles/ddsc.dir/ddsi/src/q_receive.c.o CMakeFiles/ddsc.dir/ddsi/src/q_sockwaitset.c.o CMakeFiles/ddsc.dir/ddsi/src/q_thread.c.o CMakeFiles/ddsc.dir/ddsi/src/q_transmit.c.o CMakeFiles/ddsc.dir/ddsi/src/q_inverse_uint32_set.c.o CMakeFiles/ddsc.dir/ddsi/src/q_whc.c.o CMakeFiles/ddsc.dir/ddsi/src/q_xevent.c.o CMakeFiles/ddsc.dir/ddsi/src/q_xmsg.c.o CMakeFiles/ddsc.dir/ddsi/src/q_freelist.c.o CMakeFiles/ddsc.dir/ddsi/src/sysdeps.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_lifespan.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_xt_typeinfo.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_xt_typelookup.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_xt_typemap.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_typelookup.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_typewrap.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_typebuilder.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_security_msg.c.o CMakeFiles/ddsc.dir/ddsi/src/ddsi_security_exchange.c.o CMakeFiles/ddsc.dir/ddsi/defconfig.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_alloc.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_builtin.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_coherent.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_participant.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_reader.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_writer.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_init.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_publisher.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_rhc.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_rhc_default.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_domain.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_instance.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_qos.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_handles.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_entity.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_matched.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_querycond.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_topic.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_listener.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_read.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_waitset.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_readcond.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_guardcond.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_statistics.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_subscriber.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_write.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_whc.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_whc_builtintopic.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_serdata_builtintopic.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_sertype_builtintopic.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_data_allocator.c.o CMakeFiles/ddsc.dir/ddsc/src/dds_loan.c.o CMakeFiles/ddsc.dir/__/security/core/src/dds_security_serialize.c.o CMakeFiles/ddsc.dir/__/security/core/src/dds_security_utils.c.o CMakeFiles/ddsc.dir/__/security/core/src/dds_security_plugins.c.o CMakeFiles/ddsc.dir/__/security/core/src/shared_secret.c.o CMakeFiles/ddsc.dir/__/security/core/src/dds_security_fsm.c.o CMakeFiles/ddsc.dir/__/security/core/src/dds_security_timed_cb.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/atomics.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/avl.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/bswap.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/io.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/log.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/retcode.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/strtod.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/strtol.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/mh3.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/environ.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/expand_vars.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/fibheap.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/hopscotch.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/circlist.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/threads.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/string.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/sockets.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/md5.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/xmlparser.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/ifaddrs.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/cdtors.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/random.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/time.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/ifaddrs/posix/ifaddrs.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/sockets/posix/socket.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/sockets/posix/gethostname.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/heap/posix/heap.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/dynlib/posix/dynlib.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/environ/posix/environ.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/filesystem/posix/filesystem.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/process/posix/process.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/random/posix/random.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/sync/posix/sync.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/threads/posix/threads.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/netstat/darwin/netstat.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/time/darwin/time.c.o CMakeFiles/ddsc.dir/__/ddsrt/src/rusage/posix/rusage.c.o  -Wl,-rpath,@loader_path/../lib /opt/local/libexec/openssl3/lib/libssl.dylib /opt/local/libexec/openssl3/lib/libcrypto.dylib
Undefined symbols:
  "_dds_stream_extract_keyBE_from_key", referenced from:
      _serdata_default_get_keyhash in ddsi_serdata_default.c.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libddsc.0.10.5.dylib] Error 1

Not clear at the moment why specifically _dds_stream_extract_keyBE_from_key is not found.

barracuda156 commented 3 months ago

This looks like something of concern, perhaps:

In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/security/api/../../core/ddsi/include/dds/ddsi/q_bswap.h:20,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c:21:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c: In function 'serdata_default_from_ser_common':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/security/api/../../core/ddsi/include/dds/ddsi/q_protocol.h:222:30: warning: unsigned conversion from 'int' to 'short unsigned int' changes the value of '-2' [-Wsign-conversion]
  222 | #define CDR_ENC_TO_NATIVE(x) ((x) & ~0x0001)
      |                              ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c:334:23: note: in expansion of macro 'CDR_ENC_TO_NATIVE'
  334 |   d->hdr.identifier = CDR_ENC_TO_NATIVE (d->hdr.identifier);
      |                       ^~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c: In function 'serdata_default_from_ser_iov_common':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/security/api/../../core/ddsi/include/dds/ddsi/q_protocol.h:222:30: warning: unsigned conversion from 'int' to 'short unsigned int' changes the value of '-2' [-Wsign-conversion]
  222 | #define CDR_ENC_TO_NATIVE(x) ((x) & ~0x0001)
      |                              ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c:388:23: note: in expansion of macro 'CDR_ENC_TO_NATIVE'
  388 |   d->hdr.identifier = CDR_ENC_TO_NATIVE (d->hdr.identifier);
      |                       ^~~~~~~~~~~~~~~~~
barracuda156 commented 3 months ago

The object referred indeed does not have that symbol:

36-174% nm -arch ppc -g /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/build/src/core/CMakeFiles/ddsc.dir/ddsi/src/ddsi_serdata_default.c.o 
         U _abort
         U _dds_free
         U _dds_istream_from_serdata_default
         U _dds_istream_init
         U _dds_ostreamBE_fini
         U _dds_ostreamBE_init
         U _dds_ostream_add_to_serdata_default
         U _dds_ostream_from_serdata_default
         U _dds_ostream_init
         U _dds_stream_extract_keyBE_from_key
         U _dds_stream_extract_key_from_data
         U _dds_stream_extract_key_from_key
         U _dds_stream_normalize
         U _dds_stream_print_key
         U _dds_stream_print_sample
         U _dds_stream_read_key
         U _dds_stream_read_sample
         U _dds_stream_write_key
         U _dds_stream_write_sample
         U _ddsi_serdata_init
00000f58 S _ddsi_serdata_ops_cdr
00000ee0 S _ddsi_serdata_ops_cdr_nokey
00000f1c S _ddsi_serdata_ops_xcdr2
00000ea4 S _ddsi_serdata_ops_xcdr2_nokey
         U _ddsi_serdata_unref
00000e60 T _ddsi_serdatapool_free
00000e20 T _ddsi_serdatapool_new
         U _ddsi_sertype_enc_id_enc_format
         U _ddsi_sertype_enc_id_xcdr_version
         U _ddsi_sertype_get_native_enc_identifier
         U _ddsrt_atomic_inc32
         U _ddsrt_free
         U _ddsrt_malloc
         U _ddsrt_md5_append
         U _ddsrt_md5_finish
         U _ddsrt_md5_init
         U _ddsrt_mh3
         U _ddsrt_realloc
         U _memcmp
         U _memcpy
         U _memset
         U _nn_freelist_fini
         U _nn_freelist_init
         U _nn_freelist_pop
         U _nn_freelist_push
         U restGPRx
eboasson commented 3 months ago

I am sure some of it has to do with https://github.com/eclipse-cyclonedds/cyclonedds/issues/1958. PPC is a big-endian platform but those are not so easy to get by these days in practice, and so some problem crept in ...

Those problems will show up on any platform, not just macOS. All I need to get myself is a Qemu for a Linux/PPC (or SPARC, or MIPS) platform so I can build/test it. (Build I can do with a cross compiler, but I'd like to then also run the test.)

I'm not too worried about

/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c: In function 'serdata_default_from_ser_common':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/security/api/../../core/ddsi/include/dds/ddsi/q_protocol.h:222:30: warning: unsigned conversion from 'int' to 'short unsigned int' changes the value of '-2' [-Wsign-conversion]
  222 | #define CDR_ENC_TO_NATIVE(x) ((x) & ~0x0001)
      |                              ^
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_cyclonedds/cyclonedds/work/cyclonedds-0.10.5/src/core/ddsi/src/ddsi_serdata_default.c:334:23: note: in expansion of macro 'CDR_ENC_TO_NATIVE'
  334 |   d->hdr.identifier = CDR_ENC_TO_NATIVE (d->hdr.identifier);
      |                       ^~~~~~~~~~~~~~~~~

I want it clean under -Wsign-conversion so it wants some attention, but here d->hdr.identifier is an uint16_t and this will simply clear the least-significant bit as intended. So a bit sloppy, but not broken.

barracuda156 commented 3 months ago

@eboasson It is also possible to build and run ppc binaries via Apple Rosetta on any Intel Mac, if one installs 10.6.8 in a VM. It is not mind-blowingly fast, but it works. Though perhaps Qemu will be easier, if Linux is a preferred OS.

eboasson commented 3 months ago

Thanks for the tip ☺️ I hardly ever start Linux (let alone Window), almost everything I do natively on my MBP. But ... it is an M1-based one, not an intel based one. I'll figure it out and if worst comes to worst there's still a decent change that my (almost 30 year old) SPARCStation 20 still boots 😀

barracuda156 commented 3 months ago

This thing is supposed to be able to run even 10.5 ppc: https://github.com/utmapp/UTM (frontend to Qemu for Mac). But from a quick attempt I could not make it work, and then there was no time to pursue that. See: https://github.com/utmapp/UTM/discussions/5904 (If you make it work, please let me know.)

eboasson commented 3 months ago

@barracuda156 at some point, I gave up ...

I managed to almost install Fedora 20 64-bit in Qemu, but the installer seemingly hung on some gnome tutorial documentation package just before completing (I assumed it hung after giving it a few hours). Then I managed a text-mode minimal install of the same, but got into a fight over installing the packages I needed that I did not want to participate in ...

So I tried a Debian image (that I later discovered to exist), but it wouldn't boot the kernel, and SPARC64 was also not very cooperative. At point I remembered I should have access to a real 64-bit powerpc machine and so I gave up on the emulated bits.

That real machine turns out be running an ancient Debian, and of course that includes a too-old CMake. No worries, building CMake is easy, right? Well, not if all you have is gcc 4.9. I've built gcc countless times over the past 30 years, so the easiest is to take a newer gcc and build, except ... the initial configure step and building the dependencies went fine, but then the configure script run once it starts on the compiler proper screwed up completely with int8_t &c.

Long story short, I ended up hacking Cyclone's CMake files so it would build using the CMake that I happened to have available ...

barracuda156 commented 3 months ago

@eboasson Thank you very much for your efforts! I can imagine it is painful on Linux. I tried to set up some BSD as a second system on ppc, and neither of the three went smoothly. OpenBSD was generally workable, but still had some issues. FreeBSD had a broken perl, and NetBSD KPed on boot.

So many years passed, and macOS on ppc still remains the most convenient option :)

CMake 3.9.6 builds with gcc-4.2 and perhaps should be usable for most of builds, but without a modern gcc not much to do anyway, so it is always two stage build for me on Apple: gcc-4.2 builds gcc10 (the last one to build with Xcode gcc), gcc10 builds whatever is the current one.