From 1eeef97c784f0f79fcbc51364a51af48d8e64e1c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 3 Nov 2016 16:06:33 +0100 Subject: 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 --- lib/spack/docs/getting_started.rst | 67 +++++++++----------------------------- 1 file changed, 15 insertions(+), 52 deletions(-) (limited to 'lib') diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 4bc7629a3a..34cbf453e1 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -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 -- cgit v1.2.3-70-g09d2