2 # Include user definition
5 # TO suppress recursive includes
12 # we need to use the host system's architecture for getarch compile options even especially when cross-compiling
13 HOSTARCH := $(shell uname -m)
14 ifeq ($(HOSTARCH), amd64)
18 # Catch conflicting usage of ARCH in some BSD environments
21 else ifeq ($(ARCH), powerpc64)
23 else ifeq ($(ARCH), powerpc64le)
25 else ifeq ($(ARCH), powerpc)
27 else ifeq ($(ARCH), i386)
29 else ifeq ($(ARCH), armv6)
31 else ifeq ($(ARCH), armv7)
33 else ifeq ($(ARCH), aarch64)
35 else ifeq ($(ARCH), mipsel)
37 else ifeq ($(ARCH), mips64el)
39 else ifeq ($(ARCH), zarch)
43 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
46 # - Only set if not specified on the command line or inherited from the environment.
47 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
48 # http://stackoverflow.com/questions/4029274/mingw-and-make-variables
49 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
50 ifeq ($(origin CC),default)
52 # Check if $(CC) refers to a valid command and set the value to gcc if not
53 ifneq ($(findstring cmd.exe,$(SHELL)),)
54 ifeq ($(shell where $(CC) 2>NUL),)
58 ifeq ($(shell command -v $(CC) 2>/dev/null),)
59 ifeq ($(shell uname -s),Darwin)
61 # EXTRALIB += -Wl,-no_compact_unwind
68 endif # CC is set to default
70 # Default Fortran compiler (FC) is selected by f_check.
73 include $(TOPDIR)/Makefile.rule
75 include $(TOPDIR)/$(MAKEFILE_RULE)
79 # Beginning of system configuration
81 ifneq ($(BUILD_SINGLE),1)
82 ifneq ($(BUILD_DOUBLE),1)
83 ifneq ($(BUILD_COMPLEX),1)
84 ifneq ($(BUILD_COMPLEX16),1)
85 override BUILD_SINGLE=1
86 override BUILD_DOUBLE=1
87 override BUILD_COMPLEX=1
88 override BUILD_COMPLEX16=1
99 GETARCH_FLAGS := -DFORCE_$(TARGET)
100 GETARCH_FLAGS += -DUSER_TARGET
101 ifeq ($(TARGET), GENERIC)
102 ifeq ($(DYNAMIC_ARCH), 1)
103 override NO_EXPRECISION=1
104 export NO_EXPRECISION
109 # Force fallbacks for 32bit
112 ifeq ($(TARGET), HASWELL)
113 GETARCH_FLAGS := -DFORCE_NEHALEM
115 ifeq ($(TARGET), SKYLAKEX)
116 GETARCH_FLAGS := -DFORCE_NEHALEM
118 ifeq ($(TARGET), COOPERLAKE)
119 GETARCH_FLAGS := -DFORCE_NEHALEM
121 ifeq ($(TARGET), SAPPHIRERAPIDS)
122 GETARCH_FLAGS := -DFORCE_NEHALEM
124 ifeq ($(TARGET), SANDYBRIDGE)
125 GETARCH_FLAGS := -DFORCE_NEHALEM
127 ifeq ($(TARGET), BULLDOZER)
128 GETARCH_FLAGS := -DFORCE_BARCELONA
130 ifeq ($(TARGET), PILEDRIVER)
131 GETARCH_FLAGS := -DFORCE_BARCELONA
133 ifeq ($(TARGET), STEAMROLLER)
134 GETARCH_FLAGS := -DFORCE_BARCELONA
136 ifeq ($(TARGET), EXCAVATOR)
137 GETARCH_FLAGS := -DFORCE_BARCELONA
139 ifeq ($(TARGET), ZEN)
140 GETARCH_FLAGS := -DFORCE_BARCELONA
142 ifeq ($(TARGET), ARMV8)
143 GETARCH_FLAGS := -DFORCE_ARMV7
145 ifeq ($(TARGET), POWER8)
146 GETARCH_FLAGS := -DFORCE_POWER6
148 ifeq ($(TARGET), POWER9)
149 GETARCH_FLAGS := -DFORCE_POWER6
151 ifeq ($(TARGET), POWER10)
152 GETARCH_FLAGS := -DFORCE_POWER6
156 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
159 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
162 # Force fallbacks for 32bit
165 ifeq ($(TARGET_CORE), HASWELL)
166 GETARCH_FLAGS := -DFORCE_NEHALEM
168 ifeq ($(TARGET_CORE), SKYLAKEX)
169 GETARCH_FLAGS := -DFORCE_NEHALEM
171 ifeq ($(TARGET_CORE), COOPERLAKE)
172 GETARCH_FLAGS := -DFORCE_NEHALEM
174 ifeq ($(TARGET_CORE), SAPPHIRERAPIDS)
175 GETARCH_FLAGS := -DFORCE_NEHALEM
177 ifeq ($(TARGET_CORE), SANDYBRIDGE)
178 GETARCH_FLAGS := -DFORCE_NEHALEM
180 ifeq ($(TARGET_CORE), BULLDOZER)
181 GETARCH_FLAGS := -DFORCE_BARCELONA
183 ifeq ($(TARGET_CORE), PILEDRIVER)
184 GETARCH_FLAGS := -DFORCE_BARCELONA
186 ifeq ($(TARGET_CORE), STEAMROLLER)
187 GETARCH_FLAGS := -DFORCE_BARCELONA
189 ifeq ($(TARGET_CORE), EXCAVATOR)
190 GETARCH_FLAGS := -DFORCE_BARCELONA
192 ifeq ($(TARGET_CORE), ZEN)
193 GETARCH_FLAGS := -DFORCE_BARCELONA
198 # On x86_64 build getarch with march=native unless the compiler is PGI. This is required to detect AVX512 support in getarch.
199 ifeq ($(HOSTARCH), x86_64)
200 ifeq ($(findstring pgcc,$(HOSTCC))$(findstring nvc,$(HOSTCC)),)
201 GETARCH_FLAGS += -march=native
206 ifneq ($(INTERFACE64), 0)
207 GETARCH_FLAGS += -DUSE64BITINT
211 ifndef GEMM_MULTITHREAD_THRESHOLD
212 GEMM_MULTITHREAD_THRESHOLD=4
214 GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
217 GETARCH_FLAGS += -DNO_AVX
221 GETARCH_FLAGS += -DNO_AVX -DNO_AVX2 -DNO_AVX512
226 GETARCH_FLAGS += -DNO_AVX2
229 ifeq ($(NO_AVX512), 1)
230 GETARCH_FLAGS += -DNO_AVX512
237 ifeq ($(QUIET_MAKE), 1)
241 ifndef NO_PARALLEL_MAKE
244 GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
247 GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
250 ifeq ($(HOSTCC), loongcc)
251 GETARCH_FLAGS += -static
254 #if don't use Fortran, it will only compile CBLAS.
255 ifeq ($(ONLY_CBLAS), 1)
261 #For small matrix optimization
262 ifeq ($(ARCH), x86_64)
264 else ifeq ($(CORE), POWER10)
267 ifeq ($(SMALL_MATRIX_OPT), 1)
268 CCOMMON_OPT += -DSMALL_MATRIX_OPT
271 # This operation is expensive, so execution should be once.
272 ifndef GOTOBLAS_MAKEFILE
273 export GOTOBLAS_MAKEFILE = 1
275 # Determine if the assembler is GNU Assembler
276 HAVE_GAS := $(shell $(AS) -v < /dev/null 2>&1 | grep GNU 2>&1 >/dev/null ; echo $$?)
277 GETARCH_FLAGS += -DHAVE_GAS=$(HAVE_GAS)
279 # Generating Makefile.conf and config.h
280 DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" HOST_CFLAGS="$(GETARCH_FLAGS)" CFLAGS="$(CFLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) DYNAMIC_ARCH=$(DYNAMIC_ARCH) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
283 include $(TOPDIR)/Makefile.conf
301 include $(TOPDIR)/Makefile_kernel.conf
311 NUM_THREADS = $(NUM_CORES)
314 ifeq ($(NUM_THREADS), 1)
315 override USE_THREAD = 0
316 override USE_OPENMP = 0
320 ifeq ($(USE_THREAD), 0)
326 ifeq ($(NUM_THREADS), 1)
343 AR ?= $(CROSS_SUFFIX)ar
344 AS ?= $(CROSS_SUFFIX)as
345 LD ?= $(CROSS_SUFFIX)ld
346 RANLIB ?= $(CROSS_SUFFIX)ranlib
347 NM = $(CROSS_SUFFIX)nm
348 DLLWRAP = $(CROSS_SUFFIX)dllwrap
349 OBJCOPY = $(CROSS_SUFFIX)objcopy
350 OBJCONV = $(CROSS_SUFFIX)objconv
353 # When fortran support was either not detected or actively deselected, only build BLAS.
354 ifeq ($(NOFORTRAN), 1)
359 ifeq ($(C_COMPILER), GCC)
360 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
361 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
362 GCCVERSIONGT5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 5)
363 GCCVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 7)
364 GCCVERSIONGTEQ8 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 8)
365 GCCVERSIONGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9)
366 GCCVERSIONGTEQ11 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 11)
367 GCCVERSIONGTEQ10 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 10)
368 # Note that the behavior of -dumpversion is compile-time-configurable for
369 # gcc-7.x and newer. Use -dumpfullversion there
370 ifeq ($(GCCVERSIONGTEQ7),1)
371 GCCDUMPVERSION_PARAM := -dumpfullversion
373 GCCDUMPVERSION_PARAM := -dumpversion
375 GCCMINORVERSIONGTEQ1 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d.` \>= 1)
376 GCCMINORVERSIONGTEQ2 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d.` \>= 2)
377 GCCMINORVERSIONGTEQ4 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d.` \>= 4)
378 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d.` \>= 7)
382 # OS dependent settings
385 ifeq ($(OSNAME), Darwin)
386 ifndef MACOSX_DEPLOYMENT_TARGET
387 export MACOSX_DEPLOYMENT_TARGET=10.8
392 ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly))
396 ifeq ($(OSNAME), NetBSD)
400 ifeq ($(OSNAME), Linux)
405 ifeq ($(OSNAME), Android)
409 ifeq ($(OSNAME), AIX)
413 ifeq ($(OSNAME), FreeBSD)
414 ifeq ($(ARCH), $(filter $(ARCH),arm arm64))
419 ifeq ($(OSNAME), WINNT)
423 EXTRALIB += -defaultlib:advapi32
429 ifeq ($(C_COMPILER), CLANG)
430 CCOMMON_OPT += -DMS_ABI
433 #Version tests for supporting specific features (MS_ABI, POWER9 intrinsics)
434 ifeq ($(GCCVERSIONGT4), 1)
435 # GCC Major version > 4
436 # It is compatible with MSVC ABI.
437 CCOMMON_OPT += -DMS_ABI
440 ifeq ($(GCCVERSIONGTEQ4), 1)
441 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
443 # It is compatible with MSVC ABI.
444 CCOMMON_OPT += -DMS_ABI
448 # Ensure the correct stack alignment on Win32
449 # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
451 CCOMMON_OPT += -mincoming-stack-boundary=2
452 FCOMMON_OPT += -mincoming-stack-boundary=2
457 ifeq ($(OSNAME), Interix)
461 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
464 ifeq ($(OSNAME), CYGWIN_NT)
470 ifneq ($(OSNAME), WINNT)
471 ifneq ($(OSNAME), CYGWIN_NT)
472 ifneq ($(OSNAME), Interix)
473 ifneq ($(OSNAME), Android)
475 EXTRALIB += -lpthread
483 ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix))
488 CCOMMON_OPT += -DQUAD_PRECISION
493 ifneq ($(ARCH), x86_64)
499 CCOMMON_OPT += -DUTEST_CHECK
504 CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
507 MAX_STACK_ALLOC ?= 2048
508 ifneq ($(MAX_STACK_ALLOC), 0)
509 CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC)
513 ifneq ($(USE_LOCKING), 0)
514 CCOMMON_OPT += -DUSE_LOCKING
519 # Architecture dependent settings
527 ifeq ($(CORE), generic)
531 ifndef NO_EXPRECISION
532 ifeq ($(F_COMPILER), GFORTRAN)
533 # ifeq logical or. GCC or LSB
534 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
536 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
537 FCOMMON_OPT += -m128bit-long-double
539 ifeq ($(C_COMPILER), CLANG)
541 CCOMMON_OPT += -DEXPRECISION
542 FCOMMON_OPT += -m128bit-long-double
548 ifeq ($(ARCH), x86_64)
550 ifeq ($(CORE), generic)
554 ifndef NO_EXPRECISION
555 ifeq ($(F_COMPILER), GFORTRAN)
556 # ifeq logical or. GCC or LSB
557 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
559 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
560 FCOMMON_OPT += -m128bit-long-double
562 ifeq ($(C_COMPILER), CLANG)
564 CCOMMON_OPT += -DEXPRECISION
565 FCOMMON_OPT += -m128bit-long-double
571 ifeq ($(C_COMPILER), INTEL)
572 CCOMMON_OPT += -wd981
576 ifeq ($(USE_OPENMP), 1)
579 ifeq ($(USE_THREAD), 0)
580 $(error OpenBLAS: Cannot set both USE_OPENMP=1 and USE_THREAD=0. The USE_THREAD=0 is only for building single thread version.)
583 # ifeq logical or. GCC or LSB
584 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
585 CCOMMON_OPT += -fopenmp
588 ifeq ($(C_COMPILER), CLANG)
589 CCOMMON_OPT += -fopenmp
592 ifeq ($(C_COMPILER), INTEL)
593 CCOMMON_OPT += -fopenmp
596 ifeq ($(C_COMPILER), PGI)
600 ifeq ($(C_COMPILER), OPEN64)
602 CEXTRALIB += -lstdc++
605 ifeq ($(C_COMPILER), PATHSCALE)
611 ifeq ($(DYNAMIC_ARCH), 1)
613 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
614 CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
617 ifeq ($(ARCH), x86_64)
618 DYNAMIC_CORE = PRESCOTT CORE2
619 ifeq ($(DYNAMIC_OLDER), 1)
620 DYNAMIC_CORE += PENRYN DUNNINGTON
622 DYNAMIC_CORE += NEHALEM
623 ifeq ($(DYNAMIC_OLDER), 1)
624 DYNAMIC_CORE += OPTERON OPTERON_SSE3
626 DYNAMIC_CORE += BARCELONA
627 ifeq ($(DYNAMIC_OLDER), 1)
628 DYNAMIC_CORE += BOBCAT ATOM NANO
631 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
633 ifneq ($(NO_AVX2), 1)
634 DYNAMIC_CORE += HASWELL ZEN
636 ifneq ($(NO_AVX512), 1)
637 ifneq ($(NO_AVX2), 1)
638 DYNAMIC_CORE += SKYLAKEX COOPERLAKE
644 override DYNAMIC_CORE = PRESCOTT $(DYNAMIC_LIST)
645 XCCOMMON_OPT = -DDYNAMIC_LIST -DDYN_PRESCOTT
646 XCCOMMON_OPT += $(foreach dcore,$(DYNAMIC_LIST),-DDYN_$(dcore))
647 CCOMMON_OPT += $(XCCOMMON_OPT)
648 #CCOMMON_OPT += -DDYNAMIC_LIST='$(DYNAMIC_LIST)'
651 ifeq ($(ARCH), arm64)
653 DYNAMIC_CORE += CORTEXA53
654 DYNAMIC_CORE += CORTEXA57
655 DYNAMIC_CORE += CORTEXA72
656 DYNAMIC_CORE += CORTEXA73
657 DYNAMIC_CORE += NEOVERSEN1
658 DYNAMIC_CORE += NEOVERSEV1
659 DYNAMIC_CORE += NEOVERSEN2
660 DYNAMIC_CORE += CORTEXA55
661 DYNAMIC_CORE += FALKOR
662 DYNAMIC_CORE += THUNDERX
663 DYNAMIC_CORE += THUNDERX2T99
664 DYNAMIC_CORE += TSV110
665 DYNAMIC_CORE += EMAG8180
666 DYNAMIC_CORE += THUNDERX3T110
668 override DYNAMIC_CORE = ARMV8 $(DYNAMIC_LIST)
669 XCCOMMON_OPT = -DDYNAMIC_LIST -DDYN_ARMV8
670 XCCOMMON_OPT += $(foreach dcore,$(DYNAMIC_LIST),-DDYN_$(dcore))
674 ifeq ($(ARCH), mips64)
675 DYNAMIC_CORE = LOONGSON3R3 LOONGSON3R4
678 ifeq ($(ARCH), zarch)
679 DYNAMIC_CORE = ZARCH_GENERIC
681 # if the compiler accepts -march=arch11 or -march=z13 and can compile a file
682 # with z13-specific inline assembly, then we can include support for Z13.
683 # note: -march=z13 is equivalent to -march=arch11 yet some compiler releases
684 # only support one or the other.
685 # note: LLVM version 6.x supported -march=z13 yet could not handle vector
686 # registers in inline assembly, so the check for supporting the -march flag is
688 ZARCH_TEST_COMPILE=-c $(TOPDIR)/kernel/zarch/damin_z13.c -I$(TOPDIR) -o /dev/null > /dev/null 2> /dev/null
689 ZARCH_CC_SUPPORTS_ARCH11=$(shell $(CC) -march=arch11 $(ZARCH_TEST_COMPILE) && echo 1)
690 ZARCH_CC_SUPPORTS_Z13=$(shell $(CC) -march=z13 $(ZARCH_TEST_COMPILE) && echo 1)
692 ifeq ($(or $(ZARCH_CC_SUPPORTS_ARCH11), $(ZARCH_CC_SUPPORTS_Z13)), 1)
694 CCOMMON_OPT += -DDYN_Z13
696 $(info OpenBLAS: Not building Z13 kernels because the compiler $(CC) does not support it)
699 # as above for z13, check for -march=arch12 and z14 support in the compiler.
700 ZARCH_CC_SUPPORTS_ARCH12=$(shell $(CC) -march=arch12 $(ZARCH_TEST_COMPILE) && echo 1)
701 ZARCH_CC_SUPPORTS_Z14=$(shell $(CC) -march=z14 $(ZARCH_TEST_COMPILE) && echo 1)
702 ifeq ($(or $(ZARCH_CC_SUPPORTS_ARCH12), $(ZARCH_CC_SUPPORTS_Z14)), 1)
704 CCOMMON_OPT += -DDYN_Z14
706 $(info OpenBLAS: Not building Z14 kernels because the compiler $(CC) does not support it)
711 ifeq ($(ARCH), power)
712 ifneq ($(C_COMPILER), PGI)
713 DYNAMIC_CORE = POWER6
714 DYNAMIC_CORE += POWER8
715 ifneq ($(C_COMPILER), GCC)
716 DYNAMIC_CORE += POWER9
717 DYNAMIC_CORE += POWER10
718 CCOMMON_OPT += -DHAVE_P10_SUPPORT
720 ifeq ($(C_COMPILER), GCC)
721 ifeq ($(GCCVERSIONGT5), 1)
722 DYNAMIC_CORE += POWER9
724 $(info, OpenBLAS: Your gcc version is too old to build the POWER9 kernels.)
726 LDVERSIONGTEQ35 := $(shell expr `$(CC) -Wl,--version 2> /dev/null | head -1 | cut -f2 -d "." | cut -f1 -d "-"` \>= 35)
727 ifeq ($(GCCVERSIONGTEQ11)$(LDVERSIONGTEQ35), 11)
728 DYNAMIC_CORE += POWER10
729 CCOMMON_OPT += -DHAVE_P10_SUPPORT
730 else ifeq ($(GCCVERSIONGTEQ10), 1)
731 ifeq ($(GCCMINORVERSIONGTEQ2)$(LDVERSIONGTEQ35), 11)
732 DYNAMIC_CORE += POWER10
733 CCOMMON_OPT += -DHAVE_P10_SUPPORT
736 $(info, OpenBLAS: Your gcc version is too old to build the POWER10 kernels.)
740 DYNAMIC_CORE = POWER8
741 DYNAMIC_CORE += POWER9
745 # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
747 override DYNAMIC_ARCH=
755 ifeq ($(F_COMPILER), GFORTRAN)
756 ifeq ($(C_COMPILER), GCC)
758 # CCOMMON_OPT += -DEXPRECISION
763 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
767 ifeq ($(ARCH), alpha)
779 # If softfp abi is mentioned on the command line, force it.
780 ifeq ($(ARM_SOFTFP_ABI), 1)
781 CCOMMON_OPT += -mfloat-abi=softfp
782 FCOMMON_OPT += -mfloat-abi=softfp
785 ifeq ($(OSNAME), Android)
786 ifeq ($(ARM_SOFTFP_ABI), 1)
789 EXTRALIB += -Wl,-lm_hard
794 ifeq ($(ARCH), arm64)
798 ifneq ($(INTERFACE64), 0)
799 ifeq ($(F_COMPILER), GFORTRAN)
800 FCOMMON_OPT += -fdefault-integer-8
802 ifeq ($(F_COMPILER), FLANG)
809 ifeq ($(ARCH), riscv64)
814 ifeq ($(ARCH), loongarch64)
821 # C Compiler dependent settings
825 # ifeq logical or. GCC or CLANG or LSB
826 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
827 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
829 COMMON_PROF += -fno-inline
830 NO_UNINITIALIZED_WARN = -Wno-uninitialized
832 ifeq ($(QUIET_MAKE), 1)
833 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
838 ifeq ($(ARCH), $(filter $(ARCH),mips64))
840 CCOMMON_OPT += -mabi=64
842 CCOMMON_OPT += -mabi=n32
845 else ifeq ($(ARCH), $(filter $(ARCH),mips))
846 CCOMMON_OPT += -mabi=32
850 ifeq ($(CORE), $(filter $(CORE),LOONGSON3R3 LOONGSON3R4))
851 CCOMMON_OPT += -march=loongson3a
852 FCOMMON_OPT += -march=loongson3a
855 ifeq ($(CORE), MIPS24K)
856 CCOMMON_OPT += -mips32r2 -mtune=24kc $(MSA_FLAGS)
857 FCOMMON_OPT += -mips32r2 -mtune=24kc $(MSA_FLAGS)
860 ifeq ($(CORE), MIPS1004K)
861 CCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
862 FCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
865 ifeq ($(CORE), P5600)
866 CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
867 FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
870 ifeq ($(CORE), I6400)
871 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
872 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
875 ifeq ($(CORE), P6600)
876 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
877 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
880 ifeq ($(CORE), I6500)
881 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
882 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
885 ifeq ($(OSNAME), AIX)
889 ifeq ($(ARCH), loongarch64)
890 ifeq ($(CORE), LOONGSON3R5)
891 CCOMMON_OPT += -march=loongarch64 -mabi=lp64
892 FCOMMON_OPT += -march=loongarch64 -mabi=lp64
898 ifndef BINARY_DEFINED
899 ifneq ($(OSNAME), AIX)
901 ifneq ($(ARCH), riscv64)
912 ifeq ($(C_COMPILER), PGI)
913 PGCVERSIONGT20 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` \> 20)
914 PGCVERSIONEQ20 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` == 20)
915 PGCMINORVERSIONGE11 := $(shell expr `$(CC) --version|sed -n "2p" |cut -d "-" -f 1 |sed -e "s/[^0-9.]//g" |cut -c 4-5` \>= 11)
916 PGCVERSIONCHECK := $(PGCVERSIONGT20)$(PGCVERSIONEQ20)$(PGCMINORVERSIONGE11)
917 ifeq ($(PGCVERSIONCHECK), $(filter $(PGCVERSIONCHECK), 100 101 011))
919 PGCVERSIONGT21 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` \> 21)
920 PGCVERSIONEQ21 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` == 21)
921 PGCVERSIONCHECK2 := $(PGCVERSIONGT21)$(PGCVERSIONEQ21)$(PGCMINORVERSIONGE11)
922 ifeq ($(PGCVERSIONCHECK2), $(filter $(PGCVERSIONCHECK2), 100 101 011))
927 ifeq ($(ARCH), x86_64)
929 CCOMMON_OPT += -tp p7-64
931 CCOMMON_OPT += -tp px
934 CCOMMON_OPT += -D__MMX__ -Mnollvm
937 ifeq ($(ARCH), power)
938 ifeq ($(CORE), POWER8)
939 CCOMMON_OPT += -tp pwr8
941 ifeq ($(CORE), POWER9)
942 CCOMMON_OPT += -tp pwr9
948 CCOMMON_OPT += -tp p7
950 CCOMMON_OPT += -tp px
955 ifeq ($(C_COMPILER), PATHSCALE)
964 # Fortran Compiler dependent settings
967 ifeq ($(F_COMPILER), NAG)
968 FCOMMON_OPT += -dcfuns -recursive -ieee=full -w=obs -thread_safe
970 ifneq ($(INTERFACE64), 0)
974 ifeq ($(USE_OPENMP), 1)
975 FCOMMON_OPT += -openmp
979 ifeq ($(F_COMPILER), FLANG)
980 CCOMMON_OPT += -DF_INTERFACE_FLANG
981 FCOMMON_OPT += -Mrecursive -Kieee
982 ifeq ($(OSNAME), Linux)
983 ifeq ($(ARCH), x86_64)
984 FLANG_VENDOR := $(shell $(FC) --version|head -1 |cut -f 1 -d " ")
985 ifeq ($(FLANG_VENDOR), AMD)
986 FCOMMON_OPT += -fno-unroll-loops
992 ifneq ($(INTERFACE64), 0)
1000 ifeq ($(USE_OPENMP), 1)
1001 FCOMMON_OPT += -fopenmp
1005 ifeq ($(F_COMPILER), G77)
1006 CCOMMON_OPT += -DF_INTERFACE_G77
1007 FCOMMON_OPT += -Wall
1008 ifndef NO_BINARY_MODE
1009 ifneq ($(OSNAME), AIX)
1019 ifeq ($(F_COMPILER), G95)
1020 CCOMMON_OPT += -DF_INTERFACE_G95
1021 FCOMMON_OPT += -Wall
1022 ifneq ($(OSNAME), AIX)
1023 ifndef NO_BINARY_MODE
1030 ifneq ($(NO_LAPACKE), 1)
1031 FCOMMON_OPT += -fno-second-underscore
1036 ifeq ($(F_COMPILER), GFORTRAN)
1037 CCOMMON_OPT += -DF_INTERFACE_GFORT
1038 FCOMMON_OPT += -Wall
1039 # make single-threaded LAPACK calls thread-safe #1847
1040 FCOMMON_OPT += -frecursive
1041 # work around ABI problem with passing single-character arguments
1042 FCOMMON_OPT += -fno-optimize-sibling-calls
1043 #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
1044 ifneq ($(NO_LAPACK), 1)
1045 EXTRALIB += -lgfortran
1047 ifdef NO_BINARY_MODE
1048 ifeq ($(ARCH), $(filter $(ARCH),mips64))
1050 FCOMMON_OPT += -mabi=64
1052 FCOMMON_OPT += -mabi=n32
1054 else ifeq ($(ARCH), $(filter $(ARCH),mips))
1055 FCOMMON_OPT += -mabi=32
1059 ifneq ($(OSNAME), AIX)
1060 ifneq ($(ARCH), riscv64)
1065 ifneq ($(INTERFACE64), 0)
1066 FCOMMON_OPT += -fdefault-integer-8
1070 ifneq ($(OSNAME), AIX)
1075 ifeq ($(USE_OPENMP), 1)
1076 FCOMMON_OPT += -fopenmp
1080 ifeq ($(F_COMPILER), INTEL)
1081 CCOMMON_OPT += -DF_INTERFACE_INTEL
1083 ifneq ($(INTERFACE64), 0)
1087 FCOMMON_OPT += -recursive -fp-model strict -assume protect-parens
1088 ifeq ($(USE_OPENMP), 1)
1089 FCOMMON_OPT += -fopenmp
1093 ifeq ($(F_COMPILER), FUJITSU)
1094 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
1095 ifeq ($(USE_OPENMP), 1)
1096 FCOMMON_OPT += -openmp
1100 ifeq ($(F_COMPILER), IBM)
1101 CCOMMON_OPT += -DF_INTERFACE_IBM
1102 # FCOMMON_OPT += -qarch=440
1106 ifneq ($(INTERFACE64), 0)
1107 FCOMMON_OPT += -qintsize=8
1113 ifeq ($(USE_OPENMP), 1)
1114 FCOMMON_OPT += -openmp
1118 ifeq ($(F_COMPILER), PGI)
1119 CCOMMON_OPT += -DF_INTERFACE_PGI
1120 COMMON_PROF += -DPGICOMPILER
1123 ifneq ($(INTERFACE64), 0)
1127 ifeq ($(ARCH), x86_64)
1128 ifneq ($(NEWPGI2),1)
1129 FCOMMON_OPT += -tp p7-64
1131 FCOMMON_OPT += -tp px
1134 ifeq ($(ARCH), power)
1135 ifeq ($(CORE), POWER6)
1136 $(warning NVIDIA HPC compilers do not support POWER6.)
1138 ifeq ($(CORE), POWER8)
1139 FCOMMON_OPT += -tp pwr8
1141 ifeq ($(CORE), POWER9)
1142 FCOMMON_OPT += -tp pwr9
1144 ifeq ($(CORE), POWER10)
1145 $(warning NVIDIA HPC compilers do not support POWER10.)
1150 FCOMMON_OPT += -tp p7
1152 FCOMMON_OPT += -Mrecursive -Kieee
1153 ifeq ($(USE_OPENMP), 1)
1158 ifeq ($(F_COMPILER), PATHSCALE)
1159 CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
1162 ifneq ($(INTERFACE64), 0)
1168 ifeq ($(USE_OPENMP), 1)
1173 ifeq ($(F_COMPILER), OPEN64)
1174 CCOMMON_OPT += -DF_INTERFACE_OPEN64
1177 ifneq ($(INTERFACE64), 0)
1183 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
1189 ifeq ($(CORE), LOONGSON3R3)
1190 FCOMMON_OPT += -loongson3 -static
1193 ifeq ($(CORE), LOONGSON3R4)
1194 FCOMMON_OPT += -loongson3 -static
1205 ifeq ($(USE_OPENMP), 1)
1206 FEXTRALIB += -lstdc++
1211 ifeq ($(C_COMPILER), OPEN64)
1213 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
1219 ifeq ($(CORE), LOONGSON3R3)
1220 CCOMMON_OPT += -loongson3 -static
1223 ifeq ($(CORE), LOONGSON3R4)
1224 CCOMMON_OPT += -loongson3 -static
1237 ifeq ($(C_COMPILER), SUN)
1250 ifeq ($(F_COMPILER), SUN)
1251 CCOMMON_OPT += -DF_INTERFACE_SUN
1252 FCOMMON_OPT += -ftrap=%none -xrecursive
1262 ifeq ($(USE_OPENMP), 1)
1263 FCOMMON_OPT += -xopenmp=parallel
1267 ifeq ($(F_COMPILER), COMPAQ)
1268 CCOMMON_OPT += -DF_INTERFACE_COMPAQ
1269 ifeq ($(USE_OPENMP), 1)
1270 FCOMMON_OPT += -openmp
1276 ifneq ($(INTERFACE64), 0)
1283 ifeq ($(NEED_PIC), 1)
1284 ifeq ($(C_COMPILER), IBM)
1285 CCOMMON_OPT += -qpic=large
1287 CCOMMON_OPT += -fPIC
1289 ifeq ($(F_COMPILER), SUN)
1291 else ifeq ($(F_COMPILER), NAG)
1294 FCOMMON_OPT += -fPIC
1298 ifeq ($(DYNAMIC_ARCH), 1)
1299 CCOMMON_OPT += -DDYNAMIC_ARCH
1302 ifeq ($(DYNAMIC_OLDER), 1)
1303 CCOMMON_OPT += -DDYNAMIC_OLDER
1306 ifeq ($(C_LAPACK), 1)
1307 CCOMMON_OPT += -DC_LAPACK
1310 ifeq ($(NO_LAPACK), 1)
1311 CCOMMON_OPT += -DNO_LAPACK
1312 #Disable LAPACK C interface
1316 ifeq ($(NO_LAPACKE), 1)
1317 CCOMMON_OPT += -DNO_LAPACKE
1321 CCOMMON_OPT += -DNO_AVX
1325 CCOMMON_OPT += -DNO_AVX
1328 ifeq ($(NO_AVX2), 1)
1329 CCOMMON_OPT += -DNO_AVX2
1332 ifeq ($(NO_AVX512), 1)
1333 CCOMMON_OPT += -DNO_AVX512
1337 CCOMMON_OPT += -DSMP_SERVER
1339 ifeq ($(ARCH), mips64)
1340 USE_SIMPLE_THREADED_LEVEL3 = 1
1343 ifeq ($(USE_OPENMP), 1)
1344 # USE_SIMPLE_THREADED_LEVEL3 = 1
1346 CCOMMON_OPT += -DUSE_OPENMP
1349 ifeq ($(BIGNUMA), 1)
1350 CCOMMON_OPT += -DBIGNUMA
1355 ifeq ($(NO_WARMUP), 1)
1356 CCOMMON_OPT += -DNO_WARMUP
1359 ifeq ($(CONSISTENT_FPCSR), 1)
1360 CCOMMON_OPT += -DCONSISTENT_FPCSR
1363 # Only for development
1364 # CCOMMON_OPT += -DPARAMTEST
1365 # CCOMMON_OPT += -DPREFETCHTEST
1366 # CCOMMON_OPT += -DNO_SWITCHING
1370 CCOMMON_OPT += -DUSE_PAPI
1371 EXTRALIB += -lpapi -lperfctr
1375 CCOMMON_OPT += -DBUFFERSIZE=$(BUFFERSIZE)
1378 ifdef DYNAMIC_THREADS
1379 CCOMMON_OPT += -DDYNAMIC_THREADS
1382 CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
1384 CCOMMON_OPT += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
1386 ifdef USE_SIMPLE_THREADED_LEVEL3
1387 CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
1390 ifeq ($(USE_TLS), 1)
1391 CCOMMON_OPT += -DUSE_TLS
1394 ifeq ($(BUILD_BFLOAT16), 1)
1395 CCOMMON_OPT += -DBUILD_BFLOAT16
1397 ifeq ($(BUILD_SINGLE), 1)
1398 CCOMMON_OPT += -DBUILD_SINGLE=1
1400 ifeq ($(BUILD_DOUBLE), 1)
1401 CCOMMON_OPT += -DBUILD_DOUBLE=1
1403 ifeq ($(BUILD_COMPLEX), 1)
1404 CCOMMON_OPT += -DBUILD_COMPLEX=1
1406 ifeq ($(BUILD_COMPLEX16), 1)
1407 CCOMMON_OPT += -DBUILD_COMPLEX16=1
1410 CCOMMON_OPT += -DVERSION=\"$(VERSION)\"
1420 ifndef LIBSONAMEBASE
1421 LIBSONAMEBASE = openblas
1424 ifndef LIBNAMESUFFIX
1425 LIBNAMEBASE = $(SYMBOLPREFIX)$(LIBSONAMEBASE)$(SYMBOLSUFFIX)
1427 LIBNAMEBASE = $(SYMBOLPREFIX)$(LIBSONAMEBASE)$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
1430 ifeq ($(OSNAME), CYGWIN_NT)
1431 LIBPREFIX = cyg$(LIBNAMEBASE)
1433 LIBPREFIX = lib$(LIBNAMEBASE)
1436 KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
1438 include $(TOPDIR)/Makefile.$(ARCH)
1440 ifneq ($(C_COMPILER), PGI)
1441 ifneq ($(C_COMPILER), SUN)
1442 CCOMMON_OPT += -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME -UCHAR_CNAME
1445 CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
1447 ifeq ($(CORE), PPC440)
1448 CCOMMON_OPT += -DALLOC_QALLOC
1451 ifeq ($(CORE), PPC440FP2)
1452 STATIC_ALLOCATION = 1
1455 ifneq ($(OSNAME), Linux)
1459 ifneq ($(ARCH), x86_64)
1460 ifneq ($(ARCH), x86)
1466 ifeq ($(NO_AFFINITY), 0)
1467 override undefine NO_AFFINITY
1469 CCOMMON_OPT += -DNO_AFFINITY
1473 ifdef FUNCTION_PROFILE
1474 CCOMMON_OPT += -DFUNCTION_PROFILE
1477 ifdef HUGETLB_ALLOCATION
1478 CCOMMON_OPT += -DALLOC_HUGETLB
1481 ifdef HUGETLBFILE_ALLOCATION
1482 CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
1485 ifdef STATIC_ALLOCATION
1486 CCOMMON_OPT += -DALLOC_STATIC
1489 ifdef DEVICEDRIVER_ALLOCATION
1490 CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
1493 ifdef MIXED_MEMORY_ALLOCATION
1494 CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
1497 ifeq ($(OSNAME), SunOS)
1514 REVISION = -r$(VERSION)
1515 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
1530 FCOMMON_OPT = -O2 -frecursive
1533 override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
1534 override PFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
1535 override FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT)
1536 override FPFLAGS += $(FCOMMON_OPT) $(COMMON_PROF)
1539 ifeq ($(NEED_PIC), 1)
1540 ifeq (,$(findstring PIC,$(FFLAGS)))
1541 override FFLAGS += -fPIC
1545 #For LAPACK Fortran codes.
1546 #Disable -fopenmp for LAPACK Fortran codes on Windows.
1548 LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
1549 LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
1551 LAPACK_FFLAGS := $(FFLAGS)
1552 LAPACK_FPFLAGS := $(FPFLAGS)
1555 ifeq ($(F_COMPILER),NAG)
1556 LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
1559 LAPACK_CFLAGS = $(CFLAGS)
1560 LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
1562 ifneq ($(INTERFACE64), 0)
1563 LAPACK_CFLAGS += -DLAPACK_ILP64
1568 LAPACK_CFLAGS += -DOPENBLAS_OS_WINDOWS
1569 LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
1571 ifeq ($(C_COMPILER), LSB)
1572 LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
1587 ifneq ($(DYNAMIC_ARCH), 1)
1589 LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
1590 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
1592 LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
1593 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
1597 LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
1598 LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
1600 LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
1601 LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
1606 LIBDLLNAME = $(LIBPREFIX).dll
1607 IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
1608 ifneq ($(OSNAME), AIX)
1609 LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
1611 LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.a)
1613 LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
1614 LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
1615 LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
1616 LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
1618 LIBS = $(TOPDIR)/$(LIBNAME)
1619 LIBS_P = $(TOPDIR)/$(LIBNAME_P)
1622 LIB_COMPONENTS = BLAS
1623 ifneq ($(NO_CBLAS), 1)
1624 LIB_COMPONENTS += CBLAS
1627 ifneq ($(NO_LAPACK), 1)
1628 LIB_COMPONENTS += LAPACK
1629 ifneq ($(NO_LAPACKE), 1)
1630 LIB_COMPONENTS += LAPACKE
1632 ifeq ($(BUILD_RELAPACK), 1)
1633 LIB_COMPONENTS += ReLAPACK
1637 ifeq ($(ONLY_CBLAS), 1)
1638 LIB_COMPONENTS = CBLAS
1645 export __BYTE_ORDER__
1653 export NEED2UNDERSCORES
1658 export MAKEFILE_RULE
1694 export FUNCTION_PROFILE
1698 export BUILD_BFLOAT16
1700 export SBGEMM_UNROLL_M
1701 export SBGEMM_UNROLL_N
1702 export SGEMM_UNROLL_M
1703 export SGEMM_UNROLL_N
1704 export DGEMM_UNROLL_M
1705 export DGEMM_UNROLL_N
1706 export QGEMM_UNROLL_M
1707 export QGEMM_UNROLL_N
1708 export CGEMM_UNROLL_M
1709 export CGEMM_UNROLL_N
1710 export ZGEMM_UNROLL_M
1711 export ZGEMM_UNROLL_N
1712 export XGEMM_UNROLL_M
1713 export XGEMM_UNROLL_N
1714 export CGEMM3M_UNROLL_M
1715 export CGEMM3M_UNROLL_N
1716 export ZGEMM3M_UNROLL_M
1717 export ZGEMM3M_UNROLL_N
1718 export XGEMM3M_UNROLL_M
1719 export XGEMM3M_UNROLL_N
1729 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
1732 $(FC) $(FFLAGS) -c $< -o $(@F)
1735 $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
1739 PATHSCALEPATH = /opt/pathscale/lib/3.1
1740 PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
1742 PATHSCALEPATH = /opt/pathscale/lib/3.1/32
1743 PGIPATH = /opt/pgi/linux86/7.1-5/lib
1746 ACMLPATH = /opt/acml/4.3.0
1747 ifneq ($(OSNAME), Darwin)
1748 MKLPATH = /opt/intel/mkl/10.2.2.025/lib
1750 MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
1752 ATLASPATH = /opt/atlas/3.9.17/opteron
1753 FLAMEPATH = $(HOME)/flame/lib
1754 ifneq ($(OSNAME), SunOS)
1755 SUNPATH = /opt/sunstudio12.1
1757 SUNPATH = /opt/SUNWspro