Skip to content
  • Alexey Matveichev's avatar
    e4f2efec
    COMP: add rpath information to MacOS compilation rules (#2948) · e4f2efec
    Alexey Matveichev authored and Mark OLESEN's avatar Mark OLESEN committed
    - since the Apple SIP (System Integrity Protection) clears environment
      variables such as DYLD_LIBRARY_PATH, a number of workarounds have
      been used to provide shadow values. However, for a more robust
      installation using -rpath at compilation time appears to be the
      better solution.
    
      In addition to the usual -rpath specification with absolute file
      paths, MacOS supports (@loader_path, @executable_path) as well.
      Now default to link with rpath information for MacOS, which can be
      disabled by adding `~rpath` in WM_COMPILE_CONTROL
    
      Explicit library paths handled:
        - FOAM_FOAM_EXT_LIBBIN, FOAM_EXT_LIBBIN/FOAM_MPI
    
      The executable rpaths are handled assuming a structure of
         install-path/bin
         install-path/lib/$(FOAM_MPI)
         install-path/lib
    
      Absolute compile-time paths for FOAM_USER_LIBBIN, FOAM_SITE_LIBBIN
      and FOAM_LIBBIN are not handled since these are either too fragile
      (FOAM_USER_LIBBIN and FOAM_SITE_LIBBIN values) or covered via
      @loader_path anyhow (FOAM_LIBBIN).
    
      Since the value of FOAM_MPI is a compile-time value, this rpath
      treatment makes the installation less suitable for runtime changes
      to the MPI vendor/version.
    
      Note: no rpath added for c-only compilations since there are
      currently no c-only libraries or executables with dynamic loading
    e4f2efec
    COMP: add rpath information to MacOS compilation rules (#2948)
    Alexey Matveichev authored and Mark OLESEN's avatar Mark OLESEN committed
    - since the Apple SIP (System Integrity Protection) clears environment
      variables such as DYLD_LIBRARY_PATH, a number of workarounds have
      been used to provide shadow values. However, for a more robust
      installation using -rpath at compilation time appears to be the
      better solution.
    
      In addition to the usual -rpath specification with absolute file
      paths, MacOS supports (@loader_path, @executable_path) as well.
      Now default to link with rpath information for MacOS, which can be
      disabled by adding `~rpath` in WM_COMPILE_CONTROL
    
      Explicit library paths handled:
        - FOAM_FOAM_EXT_LIBBIN, FOAM_EXT_LIBBIN/FOAM_MPI
    
      The executable rpaths are handled assuming a structure of
         install-path/bin
         install-path/lib/$(FOAM_MPI)
         install-path/lib
    
      Absolute compile-time paths for FOAM_USER_LIBBIN, FOAM_SITE_LIBBIN
      and FOAM_LIBBIN are not handled since these are either too fragile
      (FOAM_USER_LIBBIN and FOAM_SITE_LIBBIN values) or covered via
      @loader_path anyhow (FOAM_LIBBIN).
    
      Since the value of FOAM_MPI is a compile-time value, this rpath
      treatment makes the installation less suitable for runtime changes
      to the MPI vendor/version.
    
      Note: no rpath added for c-only compilations since there are
      currently no c-only libraries or executables with dynamic loading
Loading