[petsc-dev] Petsc compilation issues with Xcode 15 on macOS Sonoma

Abhinav Singh abhinavrajendra at gmail.com
Mon Nov 13 10:41:27 CST 2023


Dear Petsc devs,

I have been having issues lately when compiling petsc on MacOS with various
libraries. This is probably due to the updated linker in MacOS and
unfortunately the newer operating systems do not allow using older
toolchains.

on arm64, only 3.20 and up can be configured


My configure command usually looks like this:
'sudo ./configure  COPTFLAGS=-O3 -g CXXOPTFLAGS=-O3 -g FOPTFLAGS=-O3 -g
--with-cxx-dialect=C++11 --with-mpi-dir=/opt/openfpm/dep_clang/MPI
--with-64-bit-indices  --with-parmetis-dir=/opt/openfpm/dep_clang/PARMETIS
--with-metis-dir=/opt/openfpm/dep_clang/METIS --with-boost=yes
--with-boost-dir=/opt/openfpm/dep_clang/BOOST
--with-suitesparse-dir=/opt/openfpm/dep_clang/SUITESPARSE
--download-superlu_dist --download-hypre
--prefix=/opt/openfpm/dep_clang/PETSC --download-scalapack --download-mumps
--with-debugging=0 --with-clean
'

There are two main issues:

1) Duplicate 'LC_Paths' when compiling code with apple clang and gfortran.
If I enable download_scalapack, the the cmake findPetsc fails with the
following error on both x86 and arm64:
"""
 kind: "try_run-v1"
    backtrace:
      -
"/opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/Internal/CheckSourceRuns.cmake:93
(try_run)"
      -
"/opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/CheckCSourceRuns.cmake:52
(cmake_check_source_runs)"
      - "cmake_modules/FindPackageMultipass.cmake:97 (check_c_source_runs)"
      - "cmake_modules/FindPETSc.cmake:284 (multipass_source_runs)"
      - "cmake_modules/FindPETSc.cmake:318 (petsc_test_runs)"
      - "CMakeLists.txt:69 (find_package)"
    checks:
      - "Performing Test MULTIPASS_TEST_4_petsc_works_all"
    directories:
      source:
"/Users/absingh/openfpm_pdata/build/CMakeFiles/CMakeScratch/TryCompile-LJcmJB"
      binary:
"/Users/absingh/openfpm_pdata/build/CMakeFiles/CMakeScratch/TryCompile-LJcmJB"
    cmakeVariables:
      CMAKE_C_FLAGS: ""
      CMAKE_EXE_LINKER_FLAGS: ""
      CMAKE_MODULE_PATH: "/Users/absingh/openfpm_pdata/cmake_modules/"
      CMAKE_OSX_ARCHITECTURES: ""
      CMAKE_OSX_DEPLOYMENT_TARGET: ""
      CMAKE_OSX_SYSROOT:
"/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk"
    buildResult:
      variable: "MULTIPASS_TEST_4_petsc_works_all_COMPILED"
      cached: true
      stdout: |
        Change Dir:
'/Users/absingh/openfpm_pdata/build/CMakeFiles/CMakeScratch/TryCompile-LJcmJB'

        Run Build Command(s): /opt/homebrew/Cellar/cmake/3.27.7/bin/cmake
-E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_e0165/fast
        /Library/Developer/CommandLineTools/usr/bin/make  -f
CMakeFiles/cmTC_e0165.dir/build.make CMakeFiles/cmTC_e0165.dir/build
        Building C object CMakeFiles/cmTC_e0165.dir/src.c.o
        /Library/Developer/CommandLineTools/usr/bin/cc
-DMULTIPASS_TEST_4_petsc_works_all -I/opt/openfpm/dep_clang/PETSC/include
-I/opt/openfpm/dep_clang/SUITESPARSE/include
-I/opt/openfpm/dep_clang/PARMETIS/include
-I/opt/openfpm/dep_clang/METIS/include
-I/opt/openfpm/dep_clang/BOOST/include -I/opt/openfpm/dep_clang/MPI/include
-arch arm64 -isysroot
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk -MD -MT
CMakeFiles/cmTC_e0165.dir/src.c.o -MF CMakeFiles/cmTC_e0165.dir/src.c.o.d
-o CMakeFiles/cmTC_e0165.dir/src.c.o -c
/Users/absingh/openfpm_pdata/build/CMakeFiles/CMakeScratch/TryCompile-LJcmJB/src.c
        Linking C executable cmTC_e0165
        /opt/homebrew/Cellar/cmake/3.27.7/bin/cmake -E cmake_link_script
CMakeFiles/cmTC_e0165.dir/link.txt --verbose=1
        /Library/Developer/CommandLineTools/usr/bin/cc  -arch arm64
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk
-Wl,-search_paths_first -Wl,-headerpad_max_install_names
CMakeFiles/cmTC_e0165.dir/src.c.o -o cmTC_e0165
 -Wl,-rpath,/opt/openfpm/dep_clang/PETSC/lib
-Wl,-rpath,/opt/openfpm/dep_clang/SUITESPARSE/lib
/opt/openfpm/dep_clang/PETSC/lib/libpetsc.dylib
/opt/openfpm/dep_clang/PETSC/lib/libHYPRE.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libspqr.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libumfpack.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libklu.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libcholmod.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libbtf.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libccolamd.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libcolamd.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libcamd.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libamd.dylib
/opt/openfpm/dep_clang/SUITESPARSE/lib/libsuitesparseconfig.dylib
/opt/openfpm/dep_clang/PETSC/lib/libdmumps.a
/opt/openfpm/dep_clang/PETSC/lib/libmumps_common.a
/opt/openfpm/dep_clang/PETSC/lib/libpord.a
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/lib/libpthread.tbd
/opt/openfpm/dep_clang/PETSC/lib/libscalapack.dylib
/opt/openfpm/dep_clang/PETSC/lib/libsuperlu_dist.dylib
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/lib/liblapack.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/lib/libblas.tbd
/opt/openfpm/dep_clang/PARMETIS/lib/libparmetis.a
/opt/openfpm/dep_clang/METIS/lib/libmetis.dylib
/opt/openfpm/dep_clang/MPI/lib/libmpi_usempif08.dylib
/opt/openfpm/dep_clang/MPI/lib/libmpi_usempi_ignore_tkr.a
/opt/openfpm/dep_clang/MPI/lib/libmpi_mpifh.dylib
/opt/openfpm/dep_clang/MPI/lib/libmpi.dylib
/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/libgfortran.dylib
/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc/aarch64-apple-darwin23/13/libemutls_w.a
/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/libquadmath.dylib
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/lib/libc++.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/lib/libgcc_s.1.tbd

        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc/aarch64-apple-darwin23/13')
        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc')
        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current')
        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc/aarch64-apple-darwin23/13')
        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc')
        ld: warning: duplicate LC_RPATH are deprecated
('/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current')
        ld: duplicate LC_RPATH
'/opt/homebrew/Cellar/gcc/13.2.0/lib/gcc/current/gcc/aarch64-apple-darwin23/13'
in '/opt/openfpm/dep_clang/PETSC/lib/libscalapack.2.2.1.dylib'
        clang: error: linker command failed with exit code 1 (use -v to see
invocation)
        make[1]: *** [cmTC_e0165] Error 1
        make: *** [cmTC_e0165/fast] Error 2

      exitCode: 2
    runResult:
      variable: "MULTIPASS_TEST_4_petsc_works_all_EXITCODE"
      cached: true
"""

Second, on arm64, I am unable to use the option
"with-metis-dir=/path/to/metis". The installation works fine but when I run
make check, I get the error that 'libmetis.dylib' is not found. This
behavior continues even when I export 'DYLD_LIBRARY_PATH' to have the
libmetis. CMake findPetsc also fails with the same error.

Any advice would be great.

Thank you!
Abhinav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20231113/0044081e/attachment.html>


More information about the petsc-dev mailing list