open-mpi / ompi

Open MPI main development repository
https://www.open-mpi.org
Other
2.13k stars 858 forks source link

Build fail on Mac M3 with macOS clang 15 #12604

Closed jsquyres closed 3 months ago

jsquyres commented 3 months ago

Building on a brand new Mac M3 laptop (corporate laptop refresh FTW) this morning with brand new homebrew-installed toolchain + Apple tools of a fresh / clean main checkout results in compile fail:

Making all in mca/op/aarch64
/bin/sh ../../../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../../../opal/include -I../../../../ompi/include -I../../../../oshmem/include -I../../../../ompi/mpiext/cuda/c -I../../../../ompi/mpiext/rocm/c  -DGENERATE_NEON_CODE -iquote../../../..  -I/Users/jsquyres/git/ompi/3rd-party/libevent-2.1.12-stable-ompi -I/Users/jsquyres/git/ompi/3rd-party/libevent-2.1.12-stable-ompi/include -I/opt/homebrew/Cellar/hwloc/2.10.0/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/ -I/Users/jsquyres/git/ompi/3rd-party/openpmix/  -O3 -DNDEBUG  -Wundef -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wcomment -Wshadow -Werror-implicit-function-declaration -pedantic -Wall -finline-functions -MT liblocal_ops_neon_la-op_aarch64_functions.lo -MD -MP -MF .deps/liblocal_ops_neon_la-op_aarch64_functions.Tpo -c -o liblocal_ops_neon_la-op_aarch64_functions.lo `test -f 'op_aarch64_functions.c' || echo './'`op_aarch64_functions.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../../../opal/include -I../../../../ompi/include -I../../../../oshmem/include -I../../../../ompi/mpiext/cuda/c -I../../../../ompi/mpiext/rocm/c -DGENERATE_NEON_CODE -iquote../../../.. -I/Users/jsquyres/git/ompi/3rd-party/libevent-2.1.12-stable-ompi -I/Users/jsquyres/git/ompi/3rd-party/libevent-2.1.12-stable-ompi/include -I/opt/homebrew/Cellar/hwloc/2.10.0/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/include -I/Users/jsquyres/git/ompi/3rd-party/openpmix/ -I/Users/jsquyres/git/ompi/3rd-party/openpmix/ -O3 -DNDEBUG -Wundef -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wcomment -Wshadow -Werror-implicit-function-declaration -pedantic -Wall -finline-functions -MT liblocal_ops_neon_la-op_aarch64_functions.lo -MD -MP -MF .deps/liblocal_ops_neon_la-op_aarch64_functions.Tpo -c op_aarch64_functions.c  -fno-common -DPIC -o .libs/liblocal_ops_neon_la-op_aarch64_functions.o
op_aarch64_functions.c:165:5: error: pasting formed 'int8##', an invalid preprocessing token
    OP_AARCH64_FUNC(max, s,  8, 16,   int, max)
    ^
op_aarch64_functions.c:122:56: note: expanded from macro 'OP_AARCH64_FUNC'
        OP_CONCAT(OMPI_OP_TYPE_PREPEND, type##type_size####x##type_cnt##_t) vsrc, vdst;       \
                                                       ^
op_aarch64_functions.c:165:5: error: use of undeclared identifier 'int8'
op_aarch64_functions.c:122:41: note: expanded from macro 'OP_AARCH64_FUNC'
        OP_CONCAT(OMPI_OP_TYPE_PREPEND, type##type_size####x##type_cnt##_t) vsrc, vdst;       \
                                        ^
<scratch space>:9:1: note: expanded from here
int8
^
........etc.
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [liblocal_ops_neon_la-op_aarch64_functions.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

My gcc is actually clang:

$ gcc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
jsquyres commented 3 months ago

This component doesn't (yet?) exist in v5.0.x, so the fix was only required on main.