Skip to content
Snippets Groups Projects
Commit 1eeef97c authored by Denis Davydov's avatar Denis Davydov Committed by Todd Gamblin
Browse files

remove obsolete instructions on hacking clang+gfortran (#2217)

* remove obsolete instructions on hacking clang+gfortran

* add detailed instructions on how to setup Clang+gfortran on macOS
parent 36a4ca8b
No related branches found
No related tags found
No related merge requests found
......@@ -414,7 +414,17 @@ provides no Fortran compilers. The user is therefore forced to use a
mixed toolchain: XCode-provided Clang for C/C++ and GNU ``gfortran`` for
Fortran.
In the simplest case, you can just edit ``compilers.yaml``:
#. You need to make sure that command-line tools are installed. To that
end run ``$ xcode-select --install``.
#. Run ``$ spack compiler find`` to locate Clang.
#. There are different ways to get ``gfortran`` on macOS. For example, you can
install GCC with Spack (``$ spack install gcc``) or with Homebrew
(``$ brew install gcc``).
#. The only thing left to do is to edit ``~/.spack/compilers.yaml`` to provide
the path to ``gfortran``:
.. code-block:: yaml
......@@ -426,57 +436,10 @@ In the simplest case, you can just edit ``compilers.yaml``:
f77: /path/to/bin/gfortran
fc: /path/to/bin/gfortran
.. note::
If you are building packages that are sensitive to the compiler's
name, you may also need to slightly modify a few more files so that
Spack uses compiler names the build system will recognize.
Following are instructions on how to hack together
``clang`` and ``gfortran`` on Macintosh OS X. A similar approach
should work for other mixed toolchain needs.
Better support for mixed compiler toolchains is planned in forthcoming
Spack versions.
#. Create a symlink inside ``clang`` environment:
.. code-block:: console
$ cd $SPACK_ROOT/lib/spack/env/clang
$ ln -s ../cc gfortran
#. Patch ``clang`` compiler file:
.. code-block:: diff
$ diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py
index e406d86..cf8fd01 100644
--- a/lib/spack/spack/compilers/clang.py
+++ b/lib/spack/spack/compilers/clang.py
@@ -35,17 +35,17 @@ class Clang(Compiler):
cxx_names = ['clang++']
# Subclasses use possible names of Fortran 77 compiler
- f77_names = []
+ f77_names = ['gfortran']
# Subclasses use possible names of Fortran 90 compiler
- fc_names = []
+ fc_names = ['gfortran']
# Named wrapper links within spack.build_env_path
link_paths = { 'cc' : 'clang/clang',
'cxx' : 'clang/clang++',
# Use default wrappers for fortran, in case provided in compilers.yaml
- 'f77' : 'f77',
- 'fc' : 'f90' }
+ 'f77' : 'clang/gfortran',
+ 'fc' : 'clang/gfortran' }
@classmethod
def default_version(self, comp):
If you used Spack to install GCC, you can get the installation prefix by
``$ spack location -i gcc`` (this will only work if you have a single version
of GCC installed). Whereas for Homebrew, GCC is installed in
``/usr/local/Cellar/gcc/x.y.z``.
^^^^^^^^^^^^^^^^^^^^^
Compiler Verification
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment