compilation fails on macOS
On macOS 13.2.1 with clang 16.0.1 and cmake 3.24.4 Compilation fails here:
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/esmumps/CMakeFiles/ptesmumps.dir/build.make src/esmumps/CMakeFiles/ptesmumps.dir/build
[ 80%] Linking C shared library ../../lib/libptesmumps.dylib
cd /Users/a72290/local/scotch_git/build/gnuOsxShared_g_openmpi/src/esmumps && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/ptesmumps.dir/link.txt --verbose=1
/opt/local/bin/clang-mp-16 -Og -g -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -mmacosx-version-min=13.2 -dynamiclib -Wl,-headerpad_max_install_names -o ../../lib/libptesmumps.dylib -install_name @rpath/libptesmumps.dylib CMakeFiles/ptesmumps.dir/dof.c.o CMakeFiles/ptesmumps.dir/esmumps.c.o CMakeFiles/ptesmumps.dir/graph_graph.c.o CMakeFiles/ptesmumps.dir/library_esmumps.c.o CMakeFiles/ptesmumps.dir/library_esmumps_f.c.o CMakeFiles/ptesmumps.dir/library_esmumps_strats.c.o CMakeFiles/ptesmumps.dir/order.c.o CMakeFiles/ptesmumps.dir/order_check.c.o CMakeFiles/ptesmumps.dir/order_io.c.o CMakeFiles/ptesmumps.dir/order_scotch_graph.c.o CMakeFiles/ptesmumps.dir/symbol.c.o CMakeFiles/ptesmumps.dir/symbol_check.c.o CMakeFiles/ptesmumps.dir/symbol_cost.c.o CMakeFiles/ptesmumps.dir/symbol_fax_graph.c.o CMakeFiles/ptesmumps.dir/symbol_fax.c.o -Wl,-rpath,/Users/a72290/local/scotch_git/build/gnuOsxShared_g_openmpi/lib ../../lib/libscotch.7.0.3.dylib -lm /opt/local/lib/libz.dylib /opt/local/lib/libbz2.dylib /opt/local/lib/liblzma.dylib
Undefined symbols for architecture arm64:
"_SCOTCH_errorPrint", referenced from:
__ESMUMPSesmumps2 in esmumps.c.o
__ESMUMPSorderCheck in order_check.c.o
__ESMUMPSorderLoad in order_io.c.o
__ESMUMPSorderSave in order_io.c.o
__ESMUMPSorderGraphListStrat in order_scotch_graph.c.o
__ESMUMPSsymbolCheck in symbol_check.c.o
__ESMUMPSsymbolCost in symbol_cost.c.o
...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libptesmumps.dylib] Error 1
make[1]: *** [src/esmumps/CMakeFiles/ptesmumps.dir/all] Error 2
make: *** [all] Error 2
The correction - at least that works for me - is to add the missing dependency in src/esmumps/CMakeLists.txt
and replace:
target_link_libraries(ptesmumps PRIVATE scotch)
by
target_link_libraries(ptesmumps PRIVATE scotch scotcherrexit)