Add Fujitsu compiler to Spack. (#11287)
* Add Fujitsu compiler to Spack. * Fixes for flake8 * Chenges location of FCC to subdirectory called case-insensitive * Add compiler tests for Fujitsu compiler * Modify the logic of taking compiler version for new version of Fujitsu compiler
This commit is contained in:
parent
a973ab4751
commit
1e9bb8c512
@ -15,7 +15,7 @@
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
packages:
|
packages:
|
||||||
all:
|
all:
|
||||||
compiler: [gcc, intel, pgi, clang, xl, nag]
|
compiler: [gcc, intel, pgi, clang, xl, nag, fj]
|
||||||
providers:
|
providers:
|
||||||
D: [ldc]
|
D: [ldc]
|
||||||
awk: [gawk]
|
awk: [gawk]
|
||||||
|
8
lib/spack/env/cc
vendored
8
lib/spack/env/cc
vendored
@ -103,25 +103,25 @@ case "$command" in
|
|||||||
cpp)
|
cpp)
|
||||||
mode=cpp
|
mode=cpp
|
||||||
;;
|
;;
|
||||||
cc|c89|c99|gcc|clang|armclang|icc|pgcc|xlc|xlc_r)
|
cc|c89|c99|gcc|clang|armclang|icc|pgcc|xlc|xlc_r|fcc)
|
||||||
command="$SPACK_CC"
|
command="$SPACK_CC"
|
||||||
language="C"
|
language="C"
|
||||||
comp="CC"
|
comp="CC"
|
||||||
lang_flags=C
|
lang_flags=C
|
||||||
;;
|
;;
|
||||||
c++|CC|g++|clang++|armclang++|icpc|pgc++|xlc++|xlc++_r)
|
c++|CC|g++|clang++|armclang++|icpc|pgc++|xlc++|xlc++_r|FCC)
|
||||||
command="$SPACK_CXX"
|
command="$SPACK_CXX"
|
||||||
language="C++"
|
language="C++"
|
||||||
comp="CXX"
|
comp="CXX"
|
||||||
lang_flags=CXX
|
lang_flags=CXX
|
||||||
;;
|
;;
|
||||||
ftn|f90|fc|f95|gfortran|flang|armflang|ifort|pgfortran|xlf90|xlf90_r|nagfor)
|
ftn|f90|fc|f95|gfortran|flang|armflang|ifort|pgfortran|xlf90|xlf90_r|nagfor|frt)
|
||||||
command="$SPACK_FC"
|
command="$SPACK_FC"
|
||||||
language="Fortran 90"
|
language="Fortran 90"
|
||||||
comp="FC"
|
comp="FC"
|
||||||
lang_flags=F
|
lang_flags=F
|
||||||
;;
|
;;
|
||||||
f77|xlf|xlf_r|pgf77)
|
f77|xlf|xlf_r|pgf77|frt)
|
||||||
command="$SPACK_F77"
|
command="$SPACK_F77"
|
||||||
language="Fortran 77"
|
language="Fortran 77"
|
||||||
comp="F77"
|
comp="F77"
|
||||||
|
1
lib/spack/env/fj/case-insensitive/FCC
vendored
Symbolic link
1
lib/spack/env/fj/case-insensitive/FCC
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../cc
|
1
lib/spack/env/fj/fcc
vendored
Symbolic link
1
lib/spack/env/fj/fcc
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
1
lib/spack/env/fj/frt
vendored
Symbolic link
1
lib/spack/env/fj/frt
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../cc
|
49
lib/spack/spack/compilers/fj.py
Normal file
49
lib/spack/spack/compilers/fj.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
|
||||||
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
import spack.compiler
|
||||||
|
|
||||||
|
|
||||||
|
class Fj(spack.compiler.Compiler):
|
||||||
|
# Subclasses use possible names of C compiler
|
||||||
|
cc_names = ['fcc']
|
||||||
|
|
||||||
|
# Subclasses use possible names of C++ compiler
|
||||||
|
cxx_names = ['FCC']
|
||||||
|
|
||||||
|
# Subclasses use possible names of Fortran 77 compiler
|
||||||
|
f77_names = ['frt']
|
||||||
|
|
||||||
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
|
fc_names = ['frt']
|
||||||
|
|
||||||
|
# Named wrapper links within build_env_path
|
||||||
|
link_paths = {'cc': 'fj/fcc',
|
||||||
|
'cxx': 'fj/case-insensitive/FCC',
|
||||||
|
'f77': 'fj/frt',
|
||||||
|
'fc': 'fj/frt'}
|
||||||
|
|
||||||
|
version_argument = '--version'
|
||||||
|
version_regex = r'\((?:FCC|FRT)\) ([\d.]+)'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def openmp_flag(self):
|
||||||
|
return "-Kopenmp"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cxx98_flag(self):
|
||||||
|
return "-std=c++98"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cxx11_flag(self):
|
||||||
|
return "-std=c++11"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cxx14_flag(self):
|
||||||
|
return "-std=c++14"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pic_flag(self):
|
||||||
|
return "-fPIC"
|
@ -21,6 +21,7 @@
|
|||||||
import spack.compilers.pgi
|
import spack.compilers.pgi
|
||||||
import spack.compilers.xl
|
import spack.compilers.xl
|
||||||
import spack.compilers.xl_r
|
import spack.compilers.xl_r
|
||||||
|
import spack.compilers.fj
|
||||||
|
|
||||||
from spack.compiler import _get_versioned_tuple, Compiler
|
from spack.compiler import _get_versioned_tuple, Compiler
|
||||||
|
|
||||||
@ -243,6 +244,14 @@ def test_xl_r_flags():
|
|||||||
supported_flag_test("pic_flag", "-qpic", "xl_r@1.0")
|
supported_flag_test("pic_flag", "-qpic", "xl_r@1.0")
|
||||||
|
|
||||||
|
|
||||||
|
def test_fj_flags():
|
||||||
|
supported_flag_test("openmp_flag", "-Kopenmp", "fj@1.2.0")
|
||||||
|
supported_flag_test("cxx98_flag", "-std=c++98", "fj@1.2.0")
|
||||||
|
supported_flag_test("cxx11_flag", "-std=c++11", "fj@1.2.0")
|
||||||
|
supported_flag_test("cxx14_flag", "-std=c++14", "fj@1.2.0")
|
||||||
|
supported_flag_test("pic_flag", "-fPIC", "fj@1.2.0")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.regression('10191')
|
@pytest.mark.regression('10191')
|
||||||
@pytest.mark.parametrize('version_str,expected_version', [
|
@pytest.mark.parametrize('version_str,expected_version', [
|
||||||
# macOS clang
|
# macOS clang
|
||||||
@ -356,3 +365,24 @@ def test_xl_version_detection(version_str, expected_version):
|
|||||||
def test_cce_version_detection(version_str, expected_version):
|
def test_cce_version_detection(version_str, expected_version):
|
||||||
version = spack.compilers.cce.Cce.extract_version_from_output(version_str)
|
version = spack.compilers.cce.Cce.extract_version_from_output(version_str)
|
||||||
assert version == expected_version
|
assert version == expected_version
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('version_str,expected_version', [
|
||||||
|
# C compiler
|
||||||
|
('fcc (FCC) 4.0.0 20190314\n'
|
||||||
|
'simulating gcc version 6.1\n'
|
||||||
|
'Copyright FUJITSU LIMITED 2019',
|
||||||
|
'4.0.0'),
|
||||||
|
# C++ compiler
|
||||||
|
('FCC (FCC) 4.0.0 20190314\n'
|
||||||
|
'simulating gcc version 6.1\n'
|
||||||
|
'Copyright FUJITSU LIMITED 2019',
|
||||||
|
'4.0.0'),
|
||||||
|
# Fortran compiler
|
||||||
|
('frt (FRT) 4.0.0 20190314\n'
|
||||||
|
'Copyright FUJITSU LIMITED 2019',
|
||||||
|
'4.0.0')
|
||||||
|
])
|
||||||
|
def test_fj_version_detection(version_str, expected_version):
|
||||||
|
version = spack.compilers.fj.Fj.extract_version_from_output(version_str)
|
||||||
|
assert version == expected_version
|
||||||
|
Loading…
Reference in New Issue
Block a user