You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hierarchy: FCC, ffmpi, Fujitsu (even though MPI and SSL are provided by the lang module)
make sure fcc is always called with -Nclang, even when CFLAGS is not used (e.g. _ctypes/libffi configure script in Python2)
-Kfp_precise doesn't work in clang mode, closest we can get seems to be -Knoeval,nofast_matmul,nofp_contract,nofp_relaxed,noilfunc (and at least the tests that require precise in GMP do pass with these flags)
-KNOSVE also doesn't work in clang mode (use -Knosimd instead)
-Kfast is actually -O3 plus a bunch of other stuff, so to play it safe keep default level at -O2 and leave -Kfast to opt and specific easyblocks
including arm_sve.h fails in clang mode when including the top level include dir of the lang module (in clang mode it should be the one in e.g. $EBROOTLANG/clang-comp/lib64/clang/7.1.0/include, but there is no need to add it), skip it when adding include flags for dependency prefixes
test with RPATH
make sure top level lib64 dir of lang module is found and added to rpath by wrapper
w.r.t. easybuilders/easybuild-framework@2138971, we need a better solution for passing -Nclang: it was moved to CC and CXX in compiler toolchain definition because some configure scripts (e.g. _ctypes/libffi) don't use C[XX]FLAGS when detecting the compiler, but on the other hand some scripts try to find an executable named fcc -Nclang and fail, including easybuild itself: WARNING Could not find command 'fcc -Nclang' (...) DEBUG Not installing RPATH wrapper for non-existing command 'fcc -Nclang', so this is not right; moved back to C[XX]FLAGS in move -Nclang back to $C[XX]FLAGS in toolchain support for Fujitsu compiler easybuild-framework#3713
configure script seems to be confused about the presence of limits.h and fcntl.h when using the Fujitsu compiler, fixed with prebuildopts = 'export CFLAGS="-DHAVE_LIMITS_H -DHAVE_FCNTL_H $CFLAGS" && '
Perl extension XML-Bare has hardcoded CC=gcc, SetInterval tries to use clang++, used exts_default_options = {'buildopts': 'CC="$CC"'} but may be worth addressing more generically in easyblock?
w.r.t. easybuilders/easybuild-framework@2138971, we need a better solution for passing -Nclang: it was moved to CC and CXX in compiler toolchain definition because some configure scripts (e.g. _ctypes/libffi) don't use C[XX]FLAGS when detecting the compiler, but on the other hand some scripts try to find an executable named fcc -Nclang and fail, including easybuild itself: WARNING Could not find command 'fcc -Nclang' (...) DEBUG Not installing RPATH wrapper for non-existing command 'fcc -Nclang', so this is not right
one option would be to enforce RPATH and make sure -Nclang is set in the RPATH wrapper (?)
We can enhance framework to strip off flags from the $CXX value before it tries to locate the command, but even then you may run into surprises in some places. The best way to fix may be to ensure that $CXXFLAGS is picked up consistently, but that seems painful?
I'm not sure that abusing the RPATH wrappers makes sense. Perhaps we need another compiler wrapper script that can be used to inject specific flags (and then have the RPATH wrapper call that wrapper rather than the actual compiler)?
w.r.t. easybuilders/easybuild-framework#3704, we probably need to set both LIBRARY_PATH and LDFLAGS, some builds don't use LDFLAGS so the RPATH wrapper misses it (without RPATH it's not the problem because the compiler always looks at this path for dynamic libraries)
Same solution, a separate wrapper to inject what's needed?
Framework
lang
module)fcc
is always called with-Nclang
, even whenCFLAGS
is not used (e.g._ctypes/libffi
configure script inPython2
)-Kfp_precise
doesn't work in clang mode, closest we can get seems to be-Knoeval,nofast_matmul,nofp_contract,nofp_relaxed,noilfunc
(and at least the tests that require precise in GMP do pass with these flags)-KNOSVE
also doesn't work in clang mode (use-Knosimd
instead)-Kfast
is actually-O3
plus a bunch of other stuff, so to play it safe keep default level at-O2
and leave-Kfast
toopt
and specific easyblocksarm_sve.h
fails in clang mode when including the top level include dir of thelang
module (inclang
mode it should be the one in e.g.$EBROOTLANG/clang-comp/lib64/clang/7.1.0/include
, but there is no need to add it), skip it when adding include flags for dependency prefixesRPATH
lib64
dir oflang
module is found and added to rpath by wrapperrequired
keyword to_get_software_root
for Fujitsu toolchain easybuild-framework#3704required
keyword argument (introduced in Performance improvements for easyconfig parsing and eb startup easybuild-framework#3555) to overriden_get_software_root
: set LDFLAGS instead of LIBRARY_PATH and add newrequired
keyword to_get_software_root
for Fujitsu toolchain easybuild-framework#3704-Nclang
: it was moved to CC and CXX in compiler toolchain definition because some configure scripts (e.g._ctypes/libffi
) don't use C[XX]FLAGS when detecting the compiler, but on the other hand some scripts try to find an executable namedfcc -Nclang
and fail, including easybuild itself:WARNING Could not find command 'fcc -Nclang' (...) DEBUG Not installing RPATH wrapper for non-existing command 'fcc -Nclang'
, so this is not right; moved back to C[XX]FLAGS in move -Nclang back to $C[XX]FLAGS in toolchain support for Fujitsu compiler easybuild-framework#3713required
keyword to_get_software_root
for Fujitsu toolchain easybuild-framework#3704, we probably need to set both LIBRARY_PATH and LDFLAGS, some builds don't use LDFLAGS so the RPATH wrapper misses it (without RPATH it's not a problem because the compiler always looks at this path for dynamic libraries); done in add Fujitsu compiler lib* subdir to both $LIBRARY_PATH and $LDFLAGS easybuild-framework#3714COMPILER_MODULE_NAME = ['FCC']
(or simply inherit fromffmpi
) intoolchains/fujitsu.py
, which will require explicitly addingFCC
as a dependency in theFujitsu
easyconfig: don't override COMPILER_MODULE_NAME, inherited from Ffmpi, in Fujitsu toolchain definition easybuild-framework#3721Easyblocks
fftw
easyblock: enhance FFTW easyblock to support SVE CPU feature and building with Fujitsu compiler easybuild-easyblocks#2425Easyconfigs
--try-toolchain --copy-ec
to generate easyconfigs to contribute back, use cp/mv/sed scripts insteadosdep
FCC-4.5.0
, instead ofFCC-21.05
(currently the modules available arelang/tcsds-1.2.29
with Fujitsu Compiler4.3.1
,lang/tcsds-1.2.30a
with Fujitsu Compiler4.4.0a
andlang/tcsds-1.2.31
with Fujitsu Compiler4.5.0
, so it does seem to be one compiler version per module version): done in use version of Fujitsu compiler instead of our version for the Fujitsu toolchain easybuild-easyconfigs#12995prebuildopts = 'export CFLAGS="-DHAVE_LIMITS_H -DHAVE_FCNTL_H $CFLAGS" && '
--rtlib=compiler-rt
to $LDFLAGS (this may be necessary in other places...)XML-Bare
has hardcodedCC=gcc
,SetInterval
tries to useclang++
, usedexts_default_options = {'buildopts': 'CC="$CC"'}
but may be worth addressing more generically in easyblock?FCC
instead offfmpi
to make that clearThe text was updated successfully, but these errors were encountered: