new sgemm 8x16
[platform/upstream/openblas.git] / Makefile.system
1 #
2 # Include user definition
3 #
4
5 # TO suppress recursive includes
6 INCLUDED = 1
7
8 ifndef TOPDIR
9 TOPDIR = .
10 endif
11
12 # Catch conflicting usage of ARCH in some BSD environments
13 ifeq ($(ARCH), amd64)
14 override ARCH=x86_64
15 else ifeq ($(ARCH), powerpc64)
16 override ARCH=power
17 else ifeq ($(ARCH), i386)
18 override ARCH=x86
19 else ifeq ($(ARCH), aarch64)
20 override ARCH=arm64
21 endif
22
23 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
24
25 # Default C compiler
26 # - Only set if not specified on the command line or inherited from the environment.
27 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
28 #   http://stackoverflow.com/questions/4029274/mingw-and-make-variables
29 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
30 ifeq ($(origin CC),default)
31
32 # Check if $(CC) refers to a valid command and set the value to gcc if not
33 ifneq ($(findstring cmd.exe,$(SHELL)),)
34 ifeq ($(shell where $(CC) 2>NUL),)
35 CC = gcc
36 endif
37 else # POSIX-ish
38 ifeq ($(shell command -v $(CC) 2>/dev/null),)
39 ifeq ($(shell uname -s),Darwin)
40 CC = clang
41 # EXTRALIB += -Wl,-no_compact_unwind
42 else
43 CC = gcc
44 endif # Darwin
45 endif # CC exists
46 endif # Shell is sane
47
48 endif # CC is set to default
49
50 # Default Fortran compiler (FC) is selected by f_check.
51
52 ifndef MAKEFILE_RULE
53 include $(TOPDIR)/Makefile.rule
54 else
55 include $(TOPDIR)/$(MAKEFILE_RULE)
56 endif
57
58 #
59 #  Beginning of system configuration
60 #
61
62 ifndef HOSTCC
63 HOSTCC   = $(CC)
64 endif
65
66 ifdef TARGET
67 GETARCH_FLAGS := -DFORCE_$(TARGET)
68 GETARCH_FLAGS += -DUSER_TARGET
69 endif
70
71 # Force fallbacks for 32bit
72
73 ifeq ($(BINARY), 32)
74 ifeq ($(TARGET), HASWELL)
75 GETARCH_FLAGS := -DFORCE_NEHALEM
76 endif
77 ifeq ($(TARGET), SKYLAKEX)
78 GETARCH_FLAGS := -DFORCE_NEHALEM
79 endif
80 ifeq ($(TARGET), SANDYBRIDGE)
81 GETARCH_FLAGS := -DFORCE_NEHALEM
82 endif
83 ifeq ($(TARGET), BULLDOZER)
84 GETARCH_FLAGS := -DFORCE_BARCELONA
85 endif
86 ifeq ($(TARGET), PILEDRIVER)
87 GETARCH_FLAGS := -DFORCE_BARCELONA
88 endif
89 ifeq ($(TARGET), STEAMROLLER)
90 GETARCH_FLAGS := -DFORCE_BARCELONA
91 endif
92 ifeq ($(TARGET), EXCAVATOR)
93 GETARCH_FLAGS := -DFORCE_BARCELONA
94 endif
95 ifeq ($(TARGET), ZEN)
96 GETARCH_FLAGS := -DFORCE_BARCELONA
97 endif
98 ifeq ($(TARGET), ARMV8)
99 GETARCH_FLAGS := -DFORCE_ARMV7
100 endif
101 endif
102
103
104 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
105 #
106 ifdef TARGET_CORE
107 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
108 endif
109
110 # Force fallbacks for 32bit
111
112 ifeq ($(BINARY), 32)
113 ifeq ($(TARGET_CORE), HASWELL)
114 GETARCH_FLAGS := -DFORCE_NEHALEM
115 endif
116 ifeq ($(TARGET_CORE), SKYLAKEX)
117 GETARCH_FLAGS := -DFORCE_NEHALEM
118 endif
119 ifeq ($(TARGET_CORE), SANDYBRIDGE)
120 GETARCH_FLAGS := -DFORCE_NEHALEM
121 endif
122 ifeq ($(TARGET_CORE), BULLDOZER)
123 GETARCH_FLAGS := -DFORCE_BARCELONA
124 endif
125 ifeq ($(TARGET_CORE), PILEDRIVER)
126 GETARCH_FLAGS := -DFORCE_BARCELONA
127 endif
128 ifeq ($(TARGET_CORE), STEAMROLLER)
129 GETARCH_FLAGS := -DFORCE_BARCELONA
130 endif
131 ifeq ($(TARGET_CORE), EXCAVATOR)
132 GETARCH_FLAGS := -DFORCE_BARCELONA
133 endif
134 ifeq ($(TARGET_CORE), ZEN)
135 GETARCH_FLAGS := -DFORCE_BARCELONA
136 endif
137 endif
138
139
140
141
142 ifdef INTERFACE64
143 ifneq ($(INTERFACE64), 0)
144 GETARCH_FLAGS   += -DUSE64BITINT
145 endif
146 endif
147
148 ifndef GEMM_MULTITHREAD_THRESHOLD
149 GEMM_MULTITHREAD_THRESHOLD=4
150 endif
151 GETARCH_FLAGS   += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
152
153 ifeq ($(NO_AVX), 1)
154 GETARCH_FLAGS   += -DNO_AVX
155 endif
156
157 ifeq ($(BINARY), 32)
158 GETARCH_FLAGS   += -DNO_AVX -DNO_AVX2 -DNO_AVX512
159 NO_AVX512 = 1
160 endif
161
162 ifeq ($(NO_AVX2), 1)
163 GETARCH_FLAGS   += -DNO_AVX2
164 endif
165
166 ifeq ($(NO_AVX512), 1)
167 GETARCH_FLAGS   += -DNO_AVX512
168 endif
169
170 ifeq ($(DEBUG), 1)
171 GETARCH_FLAGS   += -g
172 endif
173
174 ifeq ($(QUIET_MAKE), 1)
175 MAKE += -s
176 endif
177
178 ifndef NO_PARALLEL_MAKE
179 NO_PARALLEL_MAKE=0
180 endif
181 GETARCH_FLAGS   += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
182
183 ifdef MAKE_NB_JOBS
184 GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
185 endif
186
187 ifeq ($(HOSTCC), loongcc)
188 GETARCH_FLAGS  += -static
189 endif
190
191 #if don't use Fortran, it will only compile CBLAS.
192 ifeq ($(ONLY_CBLAS), 1)
193 NO_LAPACK = 1
194 else
195 ONLY_CBLAS = 0
196 endif
197
198 # This operation is expensive, so execution should be once.
199 ifndef GOTOBLAS_MAKEFILE
200 export GOTOBLAS_MAKEFILE = 1
201
202 # Generating Makefile.conf and config.h
203 DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" CFLAGS="$(GETARCH_FLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
204
205 ifndef TARGET_CORE
206 include $(TOPDIR)/Makefile.conf
207 else
208 include $(TOPDIR)/Makefile_kernel.conf
209 endif
210
211 endif
212
213 ifndef NUM_PARALLEL
214 NUM_PARALLEL = 1
215 endif
216
217 ifndef NUM_THREADS
218 NUM_THREADS = $(NUM_CORES)
219 endif
220
221 ifeq ($(NUM_THREADS), 1)
222 override USE_THREAD = 0
223 override USE_OPENMP = 0
224 endif
225
226 ifdef USE_THREAD
227 ifeq ($(USE_THREAD), 0)
228 SMP =
229 else
230 SMP = 1
231 endif
232 else
233 ifeq ($(NUM_THREAD), 1)
234 SMP =
235 else
236 SMP = 1
237 endif
238 endif
239
240 ifndef NEED_PIC
241 NEED_PIC = 1
242 endif
243
244 ARFLAGS =
245 CPP     = $(COMPILER) -E
246 AR      = $(CROSS_SUFFIX)ar
247 AS      = $(CROSS_SUFFIX)as
248 LD      = $(CROSS_SUFFIX)ld
249 RANLIB  = $(CROSS_SUFFIX)ranlib
250 NM      = $(CROSS_SUFFIX)nm
251 DLLWRAP = $(CROSS_SUFFIX)dllwrap
252 OBJCOPY = $(CROSS_SUFFIX)objcopy
253 OBJCONV = $(CROSS_SUFFIX)objconv
254
255
256 # For detect fortran failed, only build BLAS.
257 ifeq ($(NOFORTRAN), 1)
258 NO_LAPACK = 1
259 endif
260
261 #
262 #  OS dependent settings
263 #
264
265 ifeq ($(OSNAME), Darwin)
266 ifndef MACOSX_DEPLOYMENT_TARGET
267 export MACOSX_DEPLOYMENT_TARGET=10.8
268 endif
269 MD5SUM = md5 -r
270 endif
271
272 ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly))
273 MD5SUM = md5 -r
274 endif
275
276 ifeq ($(OSNAME), NetBSD)
277 MD5SUM = md5 -n
278 endif
279
280 ifeq ($(OSNAME), Linux)
281 EXTRALIB        += -lm
282 NO_EXPRECISION = 1
283 endif
284
285 ifeq ($(OSNAME), Android)
286 EXTRALIB        += -lm
287 endif
288
289 ifeq ($(OSNAME), AIX)
290 EXTRALIB        += -lm
291 endif
292
293 ifeq ($(OSNAME), WINNT)
294 NEED_PIC = 0
295 NO_EXPRECISION = 1
296
297 EXTRALIB        += -defaultlib:advapi32
298
299 SUFFIX  = obj
300 PSUFFIX = pobj
301 LIBSUFFIX = a
302
303 ifeq ($(C_COMPILER), CLANG)
304 CCOMMON_OPT     += -DMS_ABI
305 endif
306
307 ifeq ($(C_COMPILER), GCC)
308 #Test for supporting MS_ABI
309 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
310 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
311 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
312 ifeq ($(GCCVERSIONGT4), 1)
313 # GCC Majar version > 4
314 # It is compatible with MSVC ABI.
315 CCOMMON_OPT     += -DMS_ABI
316 endif
317
318 ifeq ($(GCCVERSIONGTEQ4), 1)
319 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
320 # GCC Version >=4.7
321 # It is compatible with MSVC ABI.
322 CCOMMON_OPT     += -DMS_ABI
323 endif
324 endif
325 endif
326
327 # Ensure the correct stack alignment on Win32
328 # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
329 ifeq ($(ARCH), x86)
330 CCOMMON_OPT += -mincoming-stack-boundary=2
331 FCOMMON_OPT += -mincoming-stack-boundary=2
332 endif
333
334 endif
335
336 ifeq ($(OSNAME), Interix)
337 NEED_PIC = 0
338 NO_EXPRECISION = 1
339
340 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
341 endif
342
343 ifeq ($(OSNAME), CYGWIN_NT)
344 NEED_PIC = 0
345 NO_EXPRECISION = 1
346 OS_CYGWIN_NT = 1
347 endif
348
349 ifneq ($(OSNAME), WINNT)
350 ifneq ($(OSNAME), CYGWIN_NT)
351 ifneq ($(OSNAME), Interix)
352 ifneq ($(OSNAME), Android)
353 ifdef SMP
354 EXTRALIB   += -lpthread
355 endif
356 endif
357 endif
358 endif
359 endif
360
361 # ifeq logical or
362 ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix))
363 OS_WINDOWS=1
364 endif
365
366 ifdef QUAD_PRECISION
367 CCOMMON_OPT     += -DQUAD_PRECISION
368 NO_EXPRECISION = 1
369 endif
370
371 ifneq ($(ARCH), x86)
372 ifneq ($(ARCH), x86_64)
373 NO_EXPRECISION = 1
374 endif
375 endif
376
377 ifdef UTEST_CHECK
378 CCOMMON_OPT     += -DUTEST_CHECK
379 SANITY_CHECK = 1
380 endif
381
382 ifdef SANITY_CHECK
383 CCOMMON_OPT     += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
384 endif
385
386 MAX_STACK_ALLOC ?= 2048
387 ifneq ($(MAX_STACK_ALLOC), 0)
388 CCOMMON_OPT     += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC)
389 endif
390
391 #
392 #  Architecture dependent settings
393 #
394
395 ifeq ($(ARCH), x86)
396 ifndef BINARY
397 NO_BINARY_MODE  = 1
398 endif
399
400 ifeq ($(CORE), generic)
401 NO_EXPRECISION = 1
402 endif
403
404 ifndef NO_EXPRECISION
405 ifeq ($(F_COMPILER), GFORTRAN)
406 # ifeq logical or. GCC or LSB
407 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
408 EXPRECISION     = 1
409 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
410 FCOMMON_OPT     += -m128bit-long-double
411 endif
412 ifeq ($(C_COMPILER), CLANG)
413 EXPRECISION     = 1
414 CCOMMON_OPT     += -DEXPRECISION
415 FCOMMON_OPT     += -m128bit-long-double
416 endif
417 endif
418 endif
419 endif
420
421 ifeq ($(ARCH), x86_64)
422
423 ifeq ($(CORE), generic)
424 NO_EXPRECISION = 1
425 endif
426
427 ifndef NO_EXPRECISION
428 ifeq ($(F_COMPILER), GFORTRAN)
429 # ifeq logical or. GCC or LSB
430 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
431 EXPRECISION     = 1
432 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
433 FCOMMON_OPT     += -m128bit-long-double
434 endif
435 ifeq ($(C_COMPILER), CLANG)
436 EXPRECISION     = 1
437 CCOMMON_OPT     += -DEXPRECISION
438 FCOMMON_OPT     += -m128bit-long-double
439 endif
440 endif
441 endif
442 endif
443
444 ifeq ($(C_COMPILER), INTEL)
445 CCOMMON_OPT    += -wd981
446 endif
447
448
449 ifeq ($(USE_OPENMP), 1)
450
451 #check
452 ifeq ($(USE_THREAD), 0)
453 $(error OpenBLAS: Cannot set both USE_OPENMP=1 and USE_THREAD=0. The USE_THREAD=0 is only for building single thread version.)
454 endif
455
456 # ifeq logical or. GCC or LSB
457 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
458 CCOMMON_OPT    += -fopenmp
459 endif
460
461 ifeq ($(C_COMPILER), CLANG)
462 CCOMMON_OPT    += -fopenmp
463 endif
464
465 ifeq ($(C_COMPILER), INTEL)
466 CCOMMON_OPT    += -fopenmp
467 endif
468
469 ifeq ($(C_COMPILER), PGI)
470 CCOMMON_OPT    += -mp
471 endif
472
473 ifeq ($(C_COMPILER), OPEN64)
474 CCOMMON_OPT    += -mp
475 CEXTRALIB   += -lstdc++
476 endif
477
478 ifeq ($(C_COMPILER), PATHSCALE)
479 CCOMMON_OPT    += -mp
480 endif
481 endif
482
483
484 ifeq ($(DYNAMIC_ARCH), 1)
485 ifeq ($(ARCH), x86)
486 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
487                CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
488 endif
489
490 ifeq ($(ARCH), x86_64)
491 DYNAMIC_CORE = PRESCOTT CORE2 
492 ifeq ($(DYNAMIC_OLDER), 1)
493 DYNAMIC_CORE += PENRYN DUNNINGTON 
494 endif
495 DYNAMIC_CORE += NEHALEM 
496 ifeq ($(DYNAMIC_OLDER), 1)
497 DYNAMIC_CORE += OPTERON OPTERON_SSE3 
498 endif
499 DYNAMIC_CORE += BARCELONA 
500 ifeq ($(DYNAMIC_OLDER), 1)
501 DYNAMIC_CORE += BOBCAT ATOM NANO
502 endif
503 ifneq ($(NO_AVX), 1)
504 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
505 endif
506 ifneq ($(NO_AVX2), 1)
507 DYNAMIC_CORE += HASWELL ZEN
508 endif
509 ifneq ($(NO_AVX512), 1)
510 ifneq ($(NO_AVX2), 1)
511 DYNAMIC_CORE += SKYLAKEX
512 endif
513 endif
514 endif
515
516 ifdef DYNAMIC_LIST
517 override DYNAMIC_CORE = PRESCOTT $(DYNAMIC_LIST)
518 XCCOMMON_OPT = -DDYNAMIC_LIST -DDYN_PRESCOTT
519 XCCOMMON_OPT += $(foreach dcore,$(DYNAMIC_LIST),-DDYN_$(dcore))
520 CCOMMON_OPT += $(XCCOMMON_OPT)
521 #CCOMMON_OPT    += -DDYNAMIC_LIST='$(DYNAMIC_LIST)'
522 endif
523
524 ifeq ($(ARCH), arm64)
525 DYNAMIC_CORE =  ARMV8
526 DYNAMIC_CORE += CORTEXA57
527 DYNAMIC_CORE += THUNDERX
528 DYNAMIC_CORE += THUNDERX2T99
529 endif
530
531 # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
532 ifndef DYNAMIC_CORE
533 override DYNAMIC_ARCH=
534 endif
535 endif
536
537 ifeq ($(ARCH), ia64)
538 NO_BINARY_MODE  = 1
539 BINARY_DEFINED  = 1
540
541 ifeq ($(F_COMPILER), GFORTRAN)
542 ifeq ($(C_COMPILER), GCC)
543 # EXPRECISION   = 1
544 # CCOMMON_OPT   += -DEXPRECISION
545 endif
546 endif
547 endif
548
549 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
550 NO_BINARY_MODE  = 1
551 endif
552
553 ifeq ($(ARCH), alpha)
554 NO_BINARY_MODE  = 1
555 BINARY_DEFINED  = 1
556 endif
557
558 ifeq ($(ARCH), arm)
559 NO_BINARY_MODE  = 1
560 BINARY_DEFINED  = 1
561
562 CCOMMON_OPT += -marm
563 FCOMMON_OPT += -marm
564
565 # If softfp abi is mentioned on the command line, force it.
566 ifeq ($(ARM_SOFTFP_ABI), 1)
567 CCOMMON_OPT += -mfloat-abi=softfp
568 FCOMMON_OPT += -mfloat-abi=softfp
569 endif
570
571 ifeq ($(OSNAME), Android)
572 ifeq ($(ARM_SOFTFP_ABI), 1)
573 EXTRALIB        += -lm
574 else
575 EXTRALIB        += -Wl,-lm_hard
576 endif
577 endif
578 endif
579
580 ifeq ($(ARCH), arm64)
581 NO_BINARY_MODE  = 1
582 BINARY_DEFINED  = 1
583 endif
584
585
586
587
588 #
589 #  C Compiler dependent settings
590 #
591
592
593 # ifeq logical or. GCC or CLANG or LSB
594 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
595 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
596 CCOMMON_OPT += -Wall
597 COMMON_PROF += -fno-inline
598 NO_UNINITIALIZED_WARN =  -Wno-uninitialized
599
600 ifeq ($(QUIET_MAKE), 1)
601 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
602 endif
603
604 ifdef NO_BINARY_MODE
605
606 ifeq ($(ARCH), $(filter $(ARCH),mips64))
607 ifdef BINARY64
608 CCOMMON_OPT += -mabi=64
609 else
610 CCOMMON_OPT += -mabi=n32
611 endif
612 BINARY_DEFINED = 1
613 else ifeq ($(ARCH), $(filter $(ARCH),mips))
614 CCOMMON_OPT += -mabi=32
615 BINARY_DEFINED = 1
616 endif
617
618 ifeq ($(CORE), LOONGSON3A)
619 CCOMMON_OPT += -march=mips64
620 FCOMMON_OPT += -march=mips64
621 endif
622
623 ifeq ($(CORE), LOONGSON3B)
624 CCOMMON_OPT += -march=mips64
625 FCOMMON_OPT += -march=mips64
626 endif
627
628 ifeq ($(CORE), 1004K)
629 CCOMMON_OPT += -mips32r2   $(MSA_FLAGS)
630 FCOMMON_OPT += -mips32r2   $(MSA_FLAGS)
631 endif
632
633 ifeq ($(CORE), P5600)
634 CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
635 FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
636 endif
637
638 ifeq ($(CORE), I6400)
639 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
640 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
641 endif
642
643 ifeq ($(CORE), P6600)
644 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
645 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
646 endif
647
648 ifeq ($(CORE), I6500)
649 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
650 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
651 endif
652
653 ifeq ($(OSNAME), AIX)
654 BINARY_DEFINED = 1
655 endif
656
657 endif
658
659 ifndef BINARY_DEFINED
660 ifneq ($(OSNAME), AIX)
661 ifdef BINARY64
662 CCOMMON_OPT += -m64
663 else
664 CCOMMON_OPT += -m32
665 endif
666 endif
667 endif
668
669 endif
670
671 ifeq ($(C_COMPILER), PGI)
672 ifdef BINARY64
673 CCOMMON_OPT += -tp p7-64
674 else
675 CCOMMON_OPT += -tp p7
676 endif
677 endif
678
679 ifeq ($(C_COMPILER), PATHSCALE)
680 ifdef BINARY64
681 CCOMMON_OPT += -m64
682 else
683 CCOMMON_OPT += -m32
684 endif
685 endif
686
687 #
688 #  Fortran Compiler dependent settings
689 #
690
691 ifeq ($(F_COMPILER), FLANG)
692 CCOMMON_OPT += -DF_INTERFACE_FLANG
693 ifdef BINARY64
694 ifdef INTERFACE64
695 ifneq ($(INTERFACE64), 0)
696 FCOMMON_OPT += -i8
697 endif
698 endif
699 FCOMMON_OPT += -Wall
700 else
701 FCOMMON_OPT += -Wall
702 endif
703 ifeq ($(USE_OPENMP), 1)
704 FCOMMON_OPT += -fopenmp
705 endif
706 endif
707
708 ifeq ($(F_COMPILER), G77)
709 CCOMMON_OPT += -DF_INTERFACE_G77
710 FCOMMON_OPT += -Wall
711 ifndef NO_BINARY_MODE
712 ifneq ($(OSNAME), AIX)
713 ifdef BINARY64
714 FCOMMON_OPT += -m64
715 else
716 FCOMMON_OPT += -m32
717 endif
718 endif
719 endif
720 endif
721
722 ifeq ($(F_COMPILER), G95)
723 CCOMMON_OPT += -DF_INTERFACE_G95
724 FCOMMON_OPT += -Wall
725 ifneq ($(OSNAME), AIX)
726 ifndef NO_BINARY_MODE
727 ifdef BINARY64
728 FCOMMON_OPT += -m64
729 else
730 FCOMMON_OPT += -m32
731 endif
732 endif
733 endif
734 endif
735
736 ifeq ($(F_COMPILER), GFORTRAN)
737 CCOMMON_OPT += -DF_INTERFACE_GFORT
738 FCOMMON_OPT += -Wall
739 # make single-threaded LAPACK calls thread-safe #1847
740 FCOMMON_OPT += -frecursive
741 #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
742 ifneq ($(NO_LAPACK), 1)
743 EXTRALIB += -lgfortran
744 endif
745 ifdef NO_BINARY_MODE
746 ifeq ($(ARCH), $(filter $(ARCH),mips64))
747 ifdef BINARY64
748 FCOMMON_OPT += -mabi=64
749 else
750 FCOMMON_OPT += -mabi=n32
751 endif
752 else ifeq ($(ARCH), $(filter $(ARCH),mips))
753 FCOMMON_OPT += -mabi=32
754 endif
755 else
756 ifdef BINARY64
757 ifneq ($(OSNAME), AIX)
758 FCOMMON_OPT += -m64
759 endif
760 ifdef INTERFACE64
761 ifneq ($(INTERFACE64), 0)
762 FCOMMON_OPT +=  -fdefault-integer-8
763 endif
764 endif
765 else
766 ifneq ($(OSNAME), AIX)
767 FCOMMON_OPT += -m32
768 endif
769 endif
770 endif
771 ifeq ($(USE_OPENMP), 1)
772 FCOMMON_OPT += -fopenmp
773 endif
774 endif
775
776 ifeq ($(F_COMPILER), INTEL)
777 CCOMMON_OPT += -DF_INTERFACE_INTEL
778 ifdef INTERFACE64
779 ifneq ($(INTERFACE64), 0)
780 FCOMMON_OPT += -i8
781 endif
782 endif
783 ifeq ($(USE_OPENMP), 1)
784 FCOMMON_OPT += -fopenmp
785 endif
786 endif
787
788 ifeq ($(F_COMPILER), FUJITSU)
789 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
790 ifeq ($(USE_OPENMP), 1)
791 FCOMMON_OPT += -openmp
792 endif
793 endif
794
795 ifeq ($(F_COMPILER), IBM)
796 CCOMMON_OPT += -DF_INTERFACE_IBM
797 # FCOMMON_OPT   += -qarch=440
798 ifdef BINARY64
799 FCOMMON_OPT += -q64
800 ifdef INTERFACE64
801 ifneq ($(INTERFACE64), 0)
802 FCOMMON_OPT += -qintsize=8
803 endif
804 endif
805 else
806 FCOMMON_OPT += -q32
807 endif
808 ifeq ($(USE_OPENMP), 1)
809 FCOMMON_OPT += -openmp
810 endif
811 endif
812
813 ifeq ($(F_COMPILER), PGI)
814 CCOMMON_OPT  += -DF_INTERFACE_PGI
815 COMMON_PROF +=  -DPGICOMPILER
816 ifdef BINARY64
817 ifdef INTERFACE64
818 ifneq ($(INTERFACE64), 0)
819 FCOMMON_OPT += -i8
820 endif
821 endif
822 FCOMMON_OPT += -tp p7-64
823 else
824 FCOMMON_OPT += -tp p7
825 endif
826 ifeq ($(USE_OPENMP), 1)
827 FCOMMON_OPT += -mp
828 endif
829 endif
830
831 ifeq ($(F_COMPILER), PATHSCALE)
832 CCOMMON_OPT  += -DF_INTERFACE_PATHSCALE
833 ifdef BINARY64
834 ifdef INTERFACE64
835 ifneq ($(INTERFACE64), 0)
836 FCOMMON_OPT += -i8
837 endif
838 endif
839 endif
840  
841 ifeq ($(USE_OPENMP), 1)
842 FCOMMON_OPT += -mp
843 endif
844 endif
845
846 ifeq ($(F_COMPILER), OPEN64)
847 CCOMMON_OPT  += -DF_INTERFACE_OPEN64
848 ifdef BINARY64
849 ifdef INTERFACE64
850 ifneq ($(INTERFACE64), 0)
851 FCOMMON_OPT += -i8
852 endif
853 endif
854 endif
855
856 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
857 ifndef BINARY64
858 FCOMMON_OPT += -n32
859 else
860 FCOMMON_OPT += -n64
861 endif
862 ifeq ($(CORE), LOONGSON3A)
863 FCOMMON_OPT += -loongson3 -static
864 endif
865
866 ifeq ($(CORE), LOONGSON3B)
867 FCOMMON_OPT += -loongson3 -static
868 endif
869
870 else
871 ifndef BINARY64
872 FCOMMON_OPT += -m32
873 else
874 FCOMMON_OPT += -m64
875 endif
876 endif
877
878 ifeq ($(USE_OPENMP), 1)
879 FEXTRALIB   += -lstdc++
880 FCOMMON_OPT += -mp
881 endif
882 endif
883
884 ifeq ($(C_COMPILER), OPEN64)
885
886 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
887 ifndef BINARY64
888 CCOMMON_OPT += -n32
889 else
890 CCOMMON_OPT += -n64
891 endif
892 ifeq ($(CORE), LOONGSON3A)
893 CCOMMON_OPT += -loongson3 -static
894 endif
895
896 ifeq ($(CORE), LOONGSON3B)
897 CCOMMON_OPT += -loongson3 -static
898 endif
899
900 else
901
902 ifndef BINARY64
903 CCOMMON_OPT += -m32
904 else
905 CCOMMON_OPT += -m64
906 endif
907 endif
908 endif
909
910 ifeq ($(C_COMPILER), SUN)
911 CCOMMON_OPT  += -w
912 ifeq ($(ARCH), x86)
913 CCOMMON_OPT  += -m32
914 else
915 FCOMMON_OPT  += -m64
916 endif
917 endif
918
919 ifeq ($(F_COMPILER), SUN)
920 CCOMMON_OPT  += -DF_INTERFACE_SUN
921 ifeq ($(ARCH), x86)
922 FCOMMON_OPT  += -m32
923 else
924 FCOMMON_OPT  += -m64
925 endif
926 ifeq ($(USE_OPENMP), 1)
927 FCOMMON_OPT += -xopenmp=parallel
928 endif
929 endif
930
931 ifeq ($(F_COMPILER), COMPAQ)
932 CCOMMON_OPT  += -DF_INTERFACE_COMPAQ
933 ifeq ($(USE_OPENMP), 1)
934 FCOMMON_OPT += -openmp
935 endif
936 endif
937
938 ifdef BINARY64
939 ifdef INTERFACE64
940 ifneq ($(INTERFACE64), 0)
941 CCOMMON_OPT     +=
942 #-DUSE64BITINT
943 endif
944 endif
945 endif
946
947 ifeq ($(NEED_PIC), 1)
948 ifeq ($(C_COMPILER), IBM)
949 CCOMMON_OPT += -qpic=large
950 else
951 CCOMMON_OPT += -fPIC
952 endif
953 ifeq ($(F_COMPILER), SUN)
954 FCOMMON_OPT  += -pic
955 else
956 FCOMMON_OPT += -fPIC
957 endif
958 endif
959
960 ifeq ($(DYNAMIC_ARCH), 1)
961 CCOMMON_OPT     += -DDYNAMIC_ARCH
962 endif
963
964 ifeq ($(DYNAMIC_OLDER), 1)
965 CCOMMON_OPT     += -DDYNAMIC_OLDER
966 endif
967
968 ifeq ($(NO_LAPACK), 1)
969 CCOMMON_OPT     += -DNO_LAPACK
970 #Disable LAPACK C interface
971 NO_LAPACKE = 1
972 endif
973
974 ifeq ($(NO_LAPACKE), 1)
975 CCOMMON_OPT     += -DNO_LAPACKE
976 endif
977
978 ifeq ($(NO_AVX), 1)
979 CCOMMON_OPT     += -DNO_AVX
980 endif
981
982 ifeq ($(ARCH), x86)
983 CCOMMON_OPT     += -DNO_AVX
984 endif
985
986 ifeq ($(NO_AVX2), 1)
987 CCOMMON_OPT     += -DNO_AVX2
988 endif
989
990 ifeq ($(NO_AVX512), 1)
991 CCOMMON_OPT     += -DNO_AVX512
992 endif
993
994 ifdef SMP
995 CCOMMON_OPT     += -DSMP_SERVER
996
997 ifeq ($(ARCH), mips64)
998 ifneq ($(CORE), LOONGSON3B)
999 USE_SIMPLE_THREADED_LEVEL3 = 1
1000 endif
1001 endif
1002
1003 ifeq ($(USE_OPENMP), 1)
1004 # USE_SIMPLE_THREADED_LEVEL3 = 1
1005 # NO_AFFINITY = 1
1006 CCOMMON_OPT     += -DUSE_OPENMP
1007 endif
1008
1009 ifeq ($(BIGNUMA), 1)
1010 CCOMMON_OPT     += -DBIGNUMA
1011 endif
1012
1013 endif
1014
1015 ifeq ($(NO_WARMUP), 1)
1016 CCOMMON_OPT     += -DNO_WARMUP
1017 endif
1018
1019 ifeq ($(CONSISTENT_FPCSR), 1)
1020 CCOMMON_OPT     += -DCONSISTENT_FPCSR
1021 endif
1022
1023 # Only for development
1024 # CCOMMON_OPT    += -DPARAMTEST
1025 # CCOMMON_OPT    += -DPREFETCHTEST
1026 # CCOMMON_OPT    += -DNO_SWITCHING
1027 # USE_PAPI = 1
1028
1029 ifdef USE_PAPI
1030 CCOMMON_OPT      += -DUSE_PAPI
1031 EXTRALIB         += -lpapi -lperfctr
1032 endif
1033
1034 ifdef DYNAMIC_THREADS
1035 CCOMMON_OPT      += -DDYNAMIC_THREADS
1036 endif
1037
1038 CCOMMON_OPT     += -DMAX_CPU_NUMBER=$(NUM_THREADS)
1039
1040 CCOMMON_OPT     += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
1041
1042 ifdef USE_SIMPLE_THREADED_LEVEL3
1043 CCOMMON_OPT     += -DUSE_SIMPLE_THREADED_LEVEL3
1044 endif
1045
1046 ifdef USE_TLS
1047 CCOMMON_OPT += -DUSE_TLS
1048 endif
1049
1050 CCOMMON_OPT += -DVERSION=\"$(VERSION)\"
1051
1052 ifndef SYMBOLPREFIX
1053 SYMBOLPREFIX =
1054 endif
1055
1056 ifndef SYMBOLSUFFIX
1057 SYMBOLSUFFIX =
1058 endif
1059
1060 ifndef LIBNAMESUFFIX
1061 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)
1062 else
1063 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
1064 endif
1065
1066 ifeq ($(OSNAME), CYGWIN_NT)
1067 LIBPREFIX = cyg$(LIBNAMEBASE)
1068 else
1069 LIBPREFIX = lib$(LIBNAMEBASE)
1070 endif
1071
1072 KERNELDIR       = $(TOPDIR)/kernel/$(ARCH)
1073
1074 include $(TOPDIR)/Makefile.$(ARCH)
1075
1076 CCOMMON_OPT     += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
1077
1078 ifeq ($(CORE), PPC440)
1079 CCOMMON_OPT     += -DALLOC_QALLOC
1080 endif
1081
1082 ifeq ($(CORE), PPC440FP2)
1083 STATIC_ALLOCATION = 1
1084 endif
1085
1086 ifneq ($(OSNAME), Linux)
1087 NO_AFFINITY = 1
1088 endif
1089
1090 ifneq ($(ARCH), x86_64)
1091 ifneq ($(ARCH), x86)
1092 ifneq ($(CORE), LOONGSON3B)
1093 NO_AFFINITY = 1
1094 endif
1095 endif
1096 endif
1097
1098 ifdef NO_AFFINITY
1099 CCOMMON_OPT     += -DNO_AFFINITY
1100 endif
1101
1102 ifdef FUNCTION_PROFILE
1103 CCOMMON_OPT     += -DFUNCTION_PROFILE
1104 endif
1105
1106 ifdef HUGETLB_ALLOCATION
1107 CCOMMON_OPT     += -DALLOC_HUGETLB
1108 endif
1109
1110 ifdef HUGETLBFILE_ALLOCATION
1111 CCOMMON_OPT     += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
1112 endif
1113
1114 ifdef STATIC_ALLOCATION
1115 CCOMMON_OPT     += -DALLOC_STATIC
1116 endif
1117
1118 ifdef DEVICEDRIVER_ALLOCATION
1119 CCOMMON_OPT     += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
1120 endif
1121
1122 ifdef MIXED_MEMORY_ALLOCATION
1123 CCOMMON_OPT     += -DMIXED_MEMORY_ALLOCATION
1124 endif
1125
1126 ifeq ($(OSNAME), SunOS)
1127 TAR     = gtar
1128 PATCH   = gpatch
1129 GREP    = ggrep
1130 AWK     = nawk
1131 else
1132 TAR     = tar
1133 PATCH   = patch
1134 GREP    = grep
1135 AWK     = awk
1136 endif
1137
1138 ifndef MD5SUM
1139 MD5SUM  = md5sum
1140 endif
1141
1142
1143 REVISION = -r$(VERSION)
1144 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
1145
1146 ifeq ($(DEBUG), 1)
1147 COMMON_OPT += -g
1148 endif
1149
1150 ifeq ($(DEBUG), 1)
1151 FCOMMON_OPT += -g
1152 endif
1153
1154 ifndef COMMON_OPT
1155 COMMON_OPT = -O2
1156 endif
1157
1158 ifndef FCOMMON_OPT
1159 FCOMMON_OPT = -O2 -frecursive
1160 endif
1161
1162 override CFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
1163 override PFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
1164
1165 override FFLAGS     += $(COMMON_OPT) $(FCOMMON_OPT)
1166 override FPFLAGS    += $(FCOMMON_OPT) $(COMMON_PROF)
1167 #MAKEOVERRIDES =
1168
1169 ifdef NEED_PIC
1170 ifeq (,$(findstring PIC,$(FFLAGS)))
1171 override FFLAGS += -fPIC
1172 endif
1173 endif
1174
1175 #For LAPACK Fortran codes.
1176 #Disable -fopenmp for LAPACK Fortran codes on Windows.
1177 ifdef OS_WINDOWS
1178 LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
1179 LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
1180 else
1181 LAPACK_FFLAGS := $(FFLAGS)
1182 LAPACK_FPFLAGS := $(FPFLAGS)
1183 endif
1184
1185 LAPACK_CFLAGS = $(CFLAGS)
1186 LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
1187 ifdef INTERFACE64
1188 ifneq ($(INTERFACE64), 0)
1189 LAPACK_CFLAGS +=  -DLAPACK_ILP64
1190 endif
1191 endif
1192
1193 ifdef OS_WINDOWS
1194 LAPACK_CFLAGS +=  -DOPENBLAS_OS_WINDOWS
1195 endif
1196 ifeq ($(C_COMPILER), LSB)
1197 LAPACK_CFLAGS +=  -DLAPACK_COMPLEX_STRUCTURE
1198 endif
1199
1200 ifndef SUFFIX
1201 SUFFIX  = o
1202 endif
1203
1204 ifndef PSUFFIX
1205 PSUFFIX = po
1206 endif
1207
1208 ifndef LIBSUFFIX
1209 LIBSUFFIX = a
1210 endif
1211
1212 ifneq ($(DYNAMIC_ARCH), 1)
1213 ifndef SMP
1214 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
1215 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
1216 else
1217 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
1218 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
1219 endif
1220 else
1221 ifndef SMP
1222 LIBNAME         = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
1223 LIBNAME_P       = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
1224 else
1225 LIBNAME         = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
1226 LIBNAME_P       = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
1227 endif
1228 endif
1229
1230
1231 LIBDLLNAME   = $(LIBPREFIX).dll
1232 IMPLIBNAME   = lib$(LIBNAMEBASE).dll.a
1233 ifneq ($(OSNAME), AIX)
1234 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.so)
1235 else
1236 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.a)
1237 endif
1238 LIBDYNNAME   = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
1239 LIBDEFNAME   = $(LIBNAME:.$(LIBSUFFIX)=.def)
1240 LIBEXPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.exp)
1241 LIBZIPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.zip)
1242
1243 LIBS            = $(TOPDIR)/$(LIBNAME)
1244 LIBS_P          = $(TOPDIR)/$(LIBNAME_P)
1245
1246
1247 LIB_COMPONENTS = BLAS
1248 ifneq ($(NO_CBLAS), 1)
1249 LIB_COMPONENTS += CBLAS
1250 endif
1251
1252 ifneq ($(NO_LAPACK), 1)
1253 LIB_COMPONENTS += LAPACK
1254 ifneq ($(NO_LAPACKE), 1)
1255 LIB_COMPONENTS += LAPACKE
1256 endif
1257 ifeq ($(BUILD_RELAPACK), 1)
1258 LIB_COMPONENTS += ReLAPACK
1259 endif
1260 endif
1261
1262 ifeq ($(ONLY_CBLAS), 1)
1263 LIB_COMPONENTS = CBLAS
1264 endif
1265
1266 export OSNAME
1267 export ARCH
1268 export CORE
1269 export LIBCORE
1270 export PGCPATH
1271 export CONFIG
1272 export CC
1273 export FC
1274 export BU
1275 export FU
1276 export NEED2UNDERSCORES
1277 export USE_THREAD
1278 export NUM_THREADS
1279 export NUM_CORES
1280 export SMP
1281 export MAKEFILE_RULE
1282 export NEED_PIC
1283 export BINARY
1284 export BINARY32
1285 export BINARY64
1286 export F_COMPILER
1287 export C_COMPILER
1288 export USE_OPENMP
1289 export CROSS
1290 export CROSS_SUFFIX
1291 export NOFORTRAN
1292 export NO_FBLAS
1293 export EXTRALIB
1294 export CEXTRALIB
1295 export FEXTRALIB
1296 export HAVE_SSE
1297 export HAVE_SSE2
1298 export HAVE_SSE3
1299 export HAVE_SSSE3
1300 export HAVE_SSE4_1
1301 export HAVE_SSE4_2
1302 export HAVE_SSE4A
1303 export HAVE_SSE5
1304 export HAVE_AVX
1305 export HAVE_VFP
1306 export HAVE_VFPV3
1307 export HAVE_VFPV4
1308 export HAVE_NEON
1309 export HAVE_MSA
1310 export MSA_FLAGS
1311 export KERNELDIR
1312 export FUNCTION_PROFILE
1313 export TARGET_CORE
1314 export NO_AVX512
1315
1316 export SGEMM_UNROLL_M
1317 export SGEMM_UNROLL_N
1318 export DGEMM_UNROLL_M
1319 export DGEMM_UNROLL_N
1320 export QGEMM_UNROLL_M
1321 export QGEMM_UNROLL_N
1322 export CGEMM_UNROLL_M
1323 export CGEMM_UNROLL_N
1324 export ZGEMM_UNROLL_M
1325 export ZGEMM_UNROLL_N
1326 export XGEMM_UNROLL_M
1327 export XGEMM_UNROLL_N
1328 export CGEMM3M_UNROLL_M
1329 export CGEMM3M_UNROLL_N
1330 export ZGEMM3M_UNROLL_M
1331 export ZGEMM3M_UNROLL_N
1332 export XGEMM3M_UNROLL_M
1333 export XGEMM3M_UNROLL_N
1334
1335
1336 ifdef USE_CUDA
1337 export CUDADIR
1338 export CUCC
1339 export CUFLAGS
1340 export CULIB
1341 endif
1342
1343 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
1344
1345 .f.$(SUFFIX):
1346         $(FC) $(FFLAGS) -c $<  -o $(@F)
1347
1348 .f.$(PSUFFIX):
1349         $(FC) $(FPFLAGS) -pg -c $<  -o $(@F)
1350
1351
1352 ifdef BINARY64
1353 PATHSCALEPATH   = /opt/pathscale/lib/3.1
1354 PGIPATH         = /opt/pgi/linux86-64/7.1-5/lib
1355 else
1356 PATHSCALEPATH   = /opt/pathscale/lib/3.1/32
1357 PGIPATH         = /opt/pgi/linux86/7.1-5/lib
1358 endif
1359
1360 ACMLPATH        = /opt/acml/4.3.0
1361 ifneq ($(OSNAME), Darwin)
1362 MKLPATH         = /opt/intel/mkl/10.2.2.025/lib
1363 else
1364 MKLPATH         = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
1365 endif
1366 ATLASPATH       = /opt/atlas/3.9.17/opteron
1367 FLAMEPATH       = $(HOME)/flame/lib
1368 ifneq ($(OSNAME), SunOS)
1369 SUNPATH         = /opt/sunstudio12.1
1370 else
1371 SUNPATH         = /opt/SUNWspro
1372 endif