295 lines
7.9 KiB
Makefile
295 lines
7.9 KiB
Makefile
# CCOMMON_OPT += -DFASTCPU
|
|
|
|
ifeq ($(OSNAME), SunOS)
|
|
ifdef BINARY64
|
|
ifeq ($(F_COMPILER), SUN)
|
|
FCOMMON_OPT += -m64
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ifneq ($(DYNAMIC_ARCH),1)
|
|
ADD_CPUFLAGS = 1
|
|
else
|
|
ifdef TARGET_CORE
|
|
ADD_CPUFLAGS = 1
|
|
endif
|
|
endif
|
|
|
|
ifdef ADD_CPUFLAGS
|
|
ifdef HAVE_SSE3
|
|
CCOMMON_OPT += -msse3
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -msse3
|
|
endif
|
|
endif
|
|
ifdef HAVE_SSSE3
|
|
CCOMMON_OPT += -mssse3
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -mssse3
|
|
endif
|
|
endif
|
|
ifdef HAVE_SSE4_1
|
|
CCOMMON_OPT += -msse4.1
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -msse4.1
|
|
endif
|
|
endif
|
|
ifndef OLDGCC
|
|
ifdef HAVE_AVX
|
|
CCOMMON_OPT += -mavx
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -mavx
|
|
endif
|
|
endif
|
|
endif
|
|
ifndef NO_AVX2
|
|
ifdef HAVE_AVX2
|
|
CCOMMON_OPT += -mavx2
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -mavx2
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CORE), SKYLAKEX)
|
|
ifndef NO_AVX512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
ifeq ($(OSNAME), CYGWIN_NT)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
ifeq ($(OSNAME), WINNT)
|
|
ifeq ($(C_COMPILER), GCC)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CORE), COOPERLAKE)
|
|
ifndef NO_AVX512
|
|
ifeq ($(C_COMPILER), GCC)
|
|
# cooperlake support was added in 10.1
|
|
ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
|
|
CCOMMON_OPT += -march=cooperlake
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=cooperlake
|
|
endif
|
|
else # gcc not support, fallback to avx512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
endif
|
|
else ifeq ($(C_COMPILER), CLANG)
|
|
# cooperlake support was added in clang 9
|
|
ifeq ($(CLANGVERSIONGTEQ9), 1)
|
|
CCOMMON_OPT += -march=cooperlake
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=cooperlake
|
|
endif
|
|
else # not supported in clang, fallback to avx512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
endif
|
|
endif
|
|
ifeq ($(OSNAME), CYGWIN_NT)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
ifeq ($(OSNAME), WINNT)
|
|
ifeq ($(C_COMPILER), GCC)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CORE), SAPPHIRERAPIDS)
|
|
ifndef NO_AVX512
|
|
ifeq ($(C_COMPILER), GCC)
|
|
# sapphire rapids support was added in 11
|
|
ifeq ($(GCCVERSIONGTEQ11), 1)
|
|
CCOMMON_OPT += -march=sapphirerapids
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=sapphirerapids
|
|
endif
|
|
else # gcc not support, fallback to avx512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
endif
|
|
else ifeq ($(C_COMPILER), CLANG)
|
|
# cooperlake support was added in clang 12
|
|
ifeq ($(CLANGVERSIONGTEQ12), 1)
|
|
CCOMMON_OPT += -march=cooperlake
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=cooperlake
|
|
endif
|
|
else # not supported in clang, fallback to avx512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
endif
|
|
endif
|
|
ifeq ($(OSNAME), CYGWIN_NT)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
ifeq ($(OSNAME), WINNT)
|
|
ifeq ($(C_COMPILER), GCC)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CORE), ZEN)
|
|
ifdef HAVE_AVX512VL
|
|
ifndef NO_AVX512
|
|
CCOMMON_OPT += -march=skylake-avx512
|
|
ifneq ($(F_COMPILER), NAG)
|
|
FCOMMON_OPT += -march=skylake-avx512
|
|
endif
|
|
ifeq ($(OSNAME), CYGWIN_NT)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
ifeq ($(OSNAME), WINNT)
|
|
ifeq ($(C_COMPILER), GCC)
|
|
CCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
FCOMMON_OPT += -fno-asynchronous-unwind-tables
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ifdef HAVE_AVX2
|
|
ifndef NO_AVX2
|
|
ifeq ($(C_COMPILER), GCC)
|
|
# AVX2 support was added in 4.7.0
|
|
GCCVERSIONCHECK := $(GCCVERSIONGT4)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
|
|
ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
|
|
CCOMMON_OPT += -mavx2
|
|
endif
|
|
else
|
|
ifeq ($(C_COMPILER), CLANG)
|
|
CCOMMON_OPT += -mavx2
|
|
endif
|
|
endif
|
|
ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
|
|
ifeq ($(F_COMPILER), GFORTRAN)
|
|
# AVX2 support was added in 4.7.0
|
|
GCCVERSIONGTEQ4 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 4)
|
|
GCCVERSIONGTEQ5 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 5)
|
|
GCCMINORVERSIONGTEQ7 := $(shell expr `$(FC) -dumpversion | cut -f2 -d.` \>= 7)
|
|
GCCVERSIONCHECK := $(GCCVERSIONGTEQ5)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
|
|
ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
|
|
FCOMMON_OPT += -mavx2
|
|
endif
|
|
else
|
|
ifeq ($(F_COMPILER), FLANG)
|
|
FCOMMON_OPT += -mavx2
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
ifeq ($(OSNAME), Interix)
|
|
ARFLAGS = -m x64
|
|
endif
|
|
|
|
ifeq ($(OSNAME), Darwin)
|
|
ifndef SMP
|
|
LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm
|
|
else
|
|
LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread -lm
|
|
endif
|
|
else
|
|
ifndef SMP
|
|
LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lguide -lpthread -lm
|
|
else
|
|
LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lguide -lpthread -lm
|
|
endif
|
|
endif
|
|
|
|
|
|
ifndef SMP
|
|
LIBATLAS = -L$(ATLASPATH)64 -llapack -lcblas -lf77blas -latlas -lm
|
|
else
|
|
LIBATLAS = -L$(ATLASPATH)64 -llapack -lptcblas -lptf77blas -latlas -lpthread -lm
|
|
endif
|
|
|
|
LIBFLAME = -L$(FLAMEPATH) -llapack2flame -lflame $(TOPDIR)/$(LIBNAME) -lgfortran -lpthread -lm
|
|
|
|
|
|
ifeq ($(F_COMPILER), g77)
|
|
LIBACML = -L$(ACMLPATH)/gnu64/lib -Wl,-rpath,$(ACMLPATH)/gnu64/lib -lacml -lacml_mv -lg2c -lm
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), GFORTRAN)
|
|
ifndef SMP
|
|
LIBACML = -L$(ACMLPATH)/gfortran64/lib -Wl,-rpath,$(ACMLPATH)/gfortran64/lib -lacml -lacml_mv -lgfortran -lm
|
|
else
|
|
LIBACML = -L$(ACMLPATH)/gfortran64_mp/lib -Wl,-rpath,$(ACMLPATH)/gfortran64_mp/lib -lacml_mp -lacml_mv -lgfortran -lgomp -lm
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), INTEL)
|
|
ifndef SMP
|
|
LIBACML = -L$(ACMLPATH)/ifort64/lib -Wl,-rpath,$(ACMLPATH)/ifort64/lib -lacml -lacml_mv -lifcoremt_pic -lirc -lm -lpthread -ldl
|
|
else
|
|
LIBACML = -L$(ACMLPATH)/ifort64_mp/lib -Wl,-rpath,$(ACMLPATH)/ifort64_mp/lib -lacml_mp -lacml_mv -lifcoremt_pic -liomp5 -lirc -lm -lpthread -ldl
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), OPEN64)
|
|
ifndef SMP
|
|
LIBACML = -L$(ACMLPATH)/open64/lib -Wl,-rpath,$(ACMLPATH)/open64/lib -lacml -lacml_mv -lm
|
|
else
|
|
LIBACML = -L$(ACMLPATH)/open64_mp/lib -Wl,-rpath,$(ACMLPATH)/open64_mp/lib -lacml_mp -lacml_mv -lm -lpthread
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), pgf77)
|
|
ifndef SMP
|
|
LIBACML = -L$(ACMLPATH)/pgi64/lib -Wl,-rpath,$(ACMLPATH)/pgi64/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
|
|
else
|
|
LIBACML = -L$(ACMLPATH)/pgi64_mp/lib -Wl,-rpath,$(ACMLPATH)/pgi64_mp/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), PATHSCALE)
|
|
ifndef SMP
|
|
LIBACML = -L$(ACMLPATH)/pathscale64/lib -Wl,-rpath,$(ACMLPATH)/pathscale64/lib -lacml -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lpathfortran -lm
|
|
else
|
|
LIBACML = -L$(ACMLPATH)/pathscale64_mp/lib -Wl,-rpath,$(ACMLPATH)/pathscale64_mp/lib -lacml_mp -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lopenmp -lpathfortran -lm
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(F_COMPILER), f90)
|
|
LIBACML = -L$(ACMLPATH)/sun64/lib -Wl,-R,$(ACMLPATH)/sun64/lib -L$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -lacml -lacml_mv -lfsu
|
|
endif
|
|
|
|
LIBSUNPERF = -L$(SUNPATH)/lib/amd64 -L$(SUNPATH)/rtlibs/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/rtlibs/amd64 -lsunperf -lfui -lfsu -lmtsk
|
|
|
|
LIBVECLIB = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib
|