* Add support for the Cray Fortran compilertags/v0.3.21
| @@ -1190,7 +1190,6 @@ FCOMMON_OPT += -i8 | |||
| endif | |||
| endif | |||
| endif | |||
| ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||
| ifndef BINARY64 | |||
| FCOMMON_OPT += -n32 | |||
| @@ -1200,11 +1199,9 @@ endif | |||
| ifeq ($(CORE), LOONGSON3R3) | |||
| FCOMMON_OPT += -loongson3 -static | |||
| endif | |||
| ifeq ($(CORE), LOONGSON3R4) | |||
| FCOMMON_OPT += -loongson3 -static | |||
| endif | |||
| else | |||
| ifndef BINARY64 | |||
| FCOMMON_OPT += -m32 | |||
| @@ -1212,7 +1209,6 @@ else | |||
| FCOMMON_OPT += -m64 | |||
| endif | |||
| endif | |||
| ifeq ($(USE_OPENMP), 1) | |||
| FEXTRALIB += -lstdc++ | |||
| FCOMMON_OPT += -mp | |||
| @@ -1220,7 +1216,6 @@ endif | |||
| endif | |||
| ifeq ($(C_COMPILER), OPEN64) | |||
| ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) | |||
| ifndef BINARY64 | |||
| CCOMMON_OPT += -n32 | |||
| @@ -1230,13 +1225,10 @@ endif | |||
| ifeq ($(CORE), LOONGSON3R3) | |||
| CCOMMON_OPT += -loongson3 -static | |||
| endif | |||
| ifeq ($(CORE), LOONGSON3R4) | |||
| CCOMMON_OPT += -loongson3 -static | |||
| endif | |||
| else | |||
| ifndef BINARY64 | |||
| CCOMMON_OPT += -m32 | |||
| else | |||
| @@ -1282,6 +1274,19 @@ FCOMMON_OPT += -openmp | |||
| endif | |||
| endif | |||
| ifeq ($(F_COMPILER), CRAY) | |||
| CCOMMON_OPT += -DF_INTERFACE_INTEL | |||
| FCOMMON_OPT += -hnopattern | |||
| ifdef INTERFACE64 | |||
| ifneq ($(INTERFACE64), 0) | |||
| FCOMMON_OPT += -s integer64 | |||
| endif | |||
| endif | |||
| ifneq ($(USE_OPENMP), 1) | |||
| FCOMMON_OPT += -O noomp | |||
| endif | |||
| endif | |||
| ifdef BINARY64 | |||
| ifdef INTERFACE64 | |||
| ifneq ($(INTERFACE64), 0) | |||
| @@ -1565,6 +1570,11 @@ endif | |||
| ifeq ($(F_COMPILER),NAG) | |||
| LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS)) | |||
| FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS)) | |||
| endif | |||
| ifeq ($(F_COMPILER),CRAY) | |||
| LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS)) | |||
| FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS)) | |||
| endif | |||
| LAPACK_CFLAGS = $(CFLAGS) | |||
| @@ -222,6 +222,17 @@ if (${F_COMPILER} STREQUAL "COMPAQ") | |||
| endif () | |||
| endif () | |||
| if (${F_COMPILER} STREQUAL "CRAY") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_INTEL") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -hnopattern") | |||
| if (INTERFACE64) | |||
| set (FCOMMON_OPT "${FCOMMON_OPT} -s integer64") | |||
| endif () | |||
| if (NOT USE_OPENMP) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -O noomp") | |||
| endif () | |||
| endif () | |||
| # from the root Makefile - this is for lapack-netlib to compile the correct secnd file. | |||
| if (${F_COMPILER} STREQUAL "GFORTRAN") | |||
| set(TIMER "INT_ETIME") | |||
| @@ -559,6 +559,14 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |||
| endforeach () | |||
| endif () | |||
| if ("${F_COMPILER}" STREQUAL "NAG" OR "${F_COMPILER}" STREQUAL "CRAY") | |||
| set(FILTER_FLAGS "-msse3;-mssse3;-msse4.1;-mavx;-mavx2,-mskylake-avx512") | |||
| foreach (FILTER_FLAG ${FILTER_FLAGS}) | |||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) | |||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) | |||
| endforeach () | |||
| endif () | |||
| if ("${F_COMPILER}" STREQUAL "GFORTRAN") | |||
| # lapack-netlib is rife with uninitialized warnings -hpa | |||
| set(LAPACK_FFLAGS "${LAPACK_FFLAGS} -Wno-maybe-uninitialized") | |||
| @@ -45,7 +45,7 @@ if [ -z "$compiler" ]; then | |||
| pathf90 pathf95 | |||
| pgf95 pgf90 pgf77 pgfortran nvfortran | |||
| flang egfortran | |||
| ifort nagfor ifx" | |||
| ifort nagfor ifx ftn crayftn" | |||
| for list in $lists; do | |||
| for p in $path; do | |||
| @@ -82,6 +82,10 @@ else | |||
| vendor=FUJITSU | |||
| openmp='-Kopenmp' | |||
| ;; | |||
| *Cray*) | |||
| vendor=CRAY | |||
| openmp='-fopenmp' | |||
| ;; | |||
| *GNU*|*GCC*) | |||
| v="${data#*GCC: *\) }" | |||
| @@ -295,6 +299,9 @@ fi | |||
| if [ "$vendor" = "NAG" ]; then | |||
| link=`$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe` | |||
| fi | |||
| if [ "$vendor" = "CRAY" ]; then | |||
| link=`$compiler $openmp -hnopattern ftest2.f 2>&1 && rm -f a.out a.exe` | |||
| fi | |||
| linker_L="" | |||
| linker_l="" | |||
| linker_a="" | |||
| @@ -34,7 +34,7 @@ if ($compiler eq "") { | |||
| "pathf90", "pathf95", | |||
| "pgf95", "pgf90", "pgf77", "pgfortran", "nvfortran", | |||
| "flang", "egfortran", | |||
| "ifort", "nagfor", "ifx"); | |||
| "ifort", "nagfor", "ifx", "ftn", "crayftn"); | |||
| OUTER: | |||
| foreach $lists (@lists) { | |||
| @@ -76,6 +76,11 @@ if ($compiler eq "") { | |||
| $vendor = FUJITSU; | |||
| $openmp = "-Kopenmp"; | |||
| } elsif ($data =~ /Cray/) { | |||
| $vendor = CRAY; | |||
| $openmp = "-fopenmp"; | |||
| } elsif ($data =~ /GNU/ || $data =~ /GCC/ ) { | |||
| $data =~ s/\(+.*?\)+//g; | |||
| @@ -309,6 +314,9 @@ if (!$?) { | |||
| if ( $vendor eq "NAG") { | |||
| $link = `$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`; | |||
| } | |||
| if ( $vendor eq "CRAY") { | |||
| $link = `$compiler $openmp -hnopattern ftest2.f 2>&1 && rm -f a.out a.exe`; | |||
| } | |||
| $linker_L = ""; | |||
| $linker_l = ""; | |||
| $linker_a = ""; | |||