Disable repeated recursion on Ab_BR in ReLAPACK xGBTRF
[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 ifeq ($(ARCH), power)
532 DYNAMIC_CORE = POWER6
533 DYNAMIC_CORE += POWER8
534 DYNAMIC_CORE += POWER9
535 endif
536
537 # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
538 ifndef DYNAMIC_CORE
539 override DYNAMIC_ARCH=
540 endif
541 endif
542
543 ifeq ($(ARCH), ia64)
544 NO_BINARY_MODE  = 1
545 BINARY_DEFINED  = 1
546
547 ifeq ($(F_COMPILER), GFORTRAN)
548 ifeq ($(C_COMPILER), GCC)
549 # EXPRECISION   = 1
550 # CCOMMON_OPT   += -DEXPRECISION
551 endif
552 endif
553 endif
554
555 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
556 NO_BINARY_MODE  = 1
557 endif
558
559 ifeq ($(ARCH), alpha)
560 NO_BINARY_MODE  = 1
561 BINARY_DEFINED  = 1
562 endif
563
564 ifeq ($(ARCH), arm)
565 NO_BINARY_MODE  = 1
566 BINARY_DEFINED  = 1
567
568 CCOMMON_OPT += -marm
569 FCOMMON_OPT += -marm
570
571 # If softfp abi is mentioned on the command line, force it.
572 ifeq ($(ARM_SOFTFP_ABI), 1)
573 CCOMMON_OPT += -mfloat-abi=softfp
574 FCOMMON_OPT += -mfloat-abi=softfp
575 endif
576
577 ifeq ($(OSNAME), Android)
578 ifeq ($(ARM_SOFTFP_ABI), 1)
579 EXTRALIB        += -lm
580 else
581 EXTRALIB        += -Wl,-lm_hard
582 endif
583 endif
584 endif
585
586 ifeq ($(ARCH), arm64)
587 NO_BINARY_MODE  = 1
588 BINARY_DEFINED  = 1
589 endif
590
591
592
593
594 #
595 #  C Compiler dependent settings
596 #
597
598
599 # ifeq logical or. GCC or CLANG or LSB
600 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
601 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
602 CCOMMON_OPT += -Wall
603 COMMON_PROF += -fno-inline
604 NO_UNINITIALIZED_WARN =  -Wno-uninitialized
605
606 ifeq ($(QUIET_MAKE), 1)
607 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
608 endif
609
610 ifdef NO_BINARY_MODE
611
612 ifeq ($(ARCH), $(filter $(ARCH),mips64))
613 ifdef BINARY64
614 CCOMMON_OPT += -mabi=64
615 else
616 CCOMMON_OPT += -mabi=n32
617 endif
618 BINARY_DEFINED = 1
619 else ifeq ($(ARCH), $(filter $(ARCH),mips))
620 CCOMMON_OPT += -mabi=32
621 BINARY_DEFINED = 1
622 endif
623
624 ifeq ($(CORE), LOONGSON3A)
625 CCOMMON_OPT += -march=mips64
626 FCOMMON_OPT += -march=mips64
627 endif
628
629 ifeq ($(CORE), LOONGSON3B)
630 CCOMMON_OPT += -march=mips64
631 FCOMMON_OPT += -march=mips64
632 endif
633
634 ifeq ($(CORE), 1004K)
635 CCOMMON_OPT += -mips32r2   $(MSA_FLAGS)
636 FCOMMON_OPT += -mips32r2   $(MSA_FLAGS)
637 endif
638
639 ifeq ($(CORE), P5600)
640 CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
641 FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600  $(MSA_FLAGS)
642 endif
643
644 ifeq ($(CORE), I6400)
645 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
646 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
647 endif
648
649 ifeq ($(CORE), P6600)
650 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
651 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
652 endif
653
654 ifeq ($(CORE), I6500)
655 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
656 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
657 endif
658
659 ifeq ($(OSNAME), AIX)
660 BINARY_DEFINED = 1
661 endif
662
663 endif
664
665 ifndef BINARY_DEFINED
666 ifneq ($(OSNAME), AIX)
667 ifdef BINARY64
668 CCOMMON_OPT += -m64
669 else
670 CCOMMON_OPT += -m32
671 endif
672 endif
673 endif
674
675 endif
676
677 ifeq ($(C_COMPILER), PGI)
678 ifdef BINARY64
679 CCOMMON_OPT += -tp p7-64
680 else
681 CCOMMON_OPT += -tp p7
682 endif
683 endif
684
685 ifeq ($(C_COMPILER), PATHSCALE)
686 ifdef BINARY64
687 CCOMMON_OPT += -m64
688 else
689 CCOMMON_OPT += -m32
690 endif
691 endif
692
693 #
694 #  Fortran Compiler dependent settings
695 #
696
697 ifeq ($(F_COMPILER), FLANG)
698 CCOMMON_OPT += -DF_INTERFACE_FLANG
699 ifdef BINARY64
700 ifdef INTERFACE64
701 ifneq ($(INTERFACE64), 0)
702 FCOMMON_OPT += -i8
703 endif
704 endif
705 FCOMMON_OPT += -Wall
706 else
707 FCOMMON_OPT += -Wall
708 endif
709 ifeq ($(USE_OPENMP), 1)
710 FCOMMON_OPT += -fopenmp
711 endif
712 endif
713
714 ifeq ($(F_COMPILER), G77)
715 CCOMMON_OPT += -DF_INTERFACE_G77
716 FCOMMON_OPT += -Wall
717 ifndef NO_BINARY_MODE
718 ifneq ($(OSNAME), AIX)
719 ifdef BINARY64
720 FCOMMON_OPT += -m64
721 else
722 FCOMMON_OPT += -m32
723 endif
724 endif
725 endif
726 endif
727
728 ifeq ($(F_COMPILER), G95)
729 CCOMMON_OPT += -DF_INTERFACE_G95
730 FCOMMON_OPT += -Wall
731 ifneq ($(OSNAME), AIX)
732 ifndef NO_BINARY_MODE
733 ifdef BINARY64
734 FCOMMON_OPT += -m64
735 else
736 FCOMMON_OPT += -m32
737 endif
738 endif
739 endif
740 endif
741
742 ifeq ($(F_COMPILER), GFORTRAN)
743 CCOMMON_OPT += -DF_INTERFACE_GFORT
744 FCOMMON_OPT += -Wall
745 # make single-threaded LAPACK calls thread-safe #1847
746 FCOMMON_OPT += -frecursive
747 #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
748 ifneq ($(NO_LAPACK), 1)
749 EXTRALIB += -lgfortran
750 endif
751 ifdef NO_BINARY_MODE
752 ifeq ($(ARCH), $(filter $(ARCH),mips64))
753 ifdef BINARY64
754 FCOMMON_OPT += -mabi=64
755 else
756 FCOMMON_OPT += -mabi=n32
757 endif
758 else ifeq ($(ARCH), $(filter $(ARCH),mips))
759 FCOMMON_OPT += -mabi=32
760 endif
761 else
762 ifdef BINARY64
763 ifneq ($(OSNAME), AIX)
764 FCOMMON_OPT += -m64
765 endif
766 ifdef INTERFACE64
767 ifneq ($(INTERFACE64), 0)
768 FCOMMON_OPT +=  -fdefault-integer-8
769 endif
770 endif
771 else
772 ifneq ($(OSNAME), AIX)
773 FCOMMON_OPT += -m32
774 endif
775 endif
776 endif
777 ifeq ($(USE_OPENMP), 1)
778 FCOMMON_OPT += -fopenmp
779 endif
780 endif
781
782 ifeq ($(F_COMPILER), INTEL)
783 CCOMMON_OPT += -DF_INTERFACE_INTEL
784 ifdef INTERFACE64
785 ifneq ($(INTERFACE64), 0)
786 FCOMMON_OPT += -i8
787 endif
788 endif
789 ifeq ($(USE_OPENMP), 1)
790 FCOMMON_OPT += -fopenmp
791 endif
792 endif
793
794 ifeq ($(F_COMPILER), FUJITSU)
795 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
796 ifeq ($(USE_OPENMP), 1)
797 FCOMMON_OPT += -openmp
798 endif
799 endif
800
801 ifeq ($(F_COMPILER), IBM)
802 CCOMMON_OPT += -DF_INTERFACE_IBM
803 # FCOMMON_OPT   += -qarch=440
804 ifdef BINARY64
805 FCOMMON_OPT += -q64
806 ifdef INTERFACE64
807 ifneq ($(INTERFACE64), 0)
808 FCOMMON_OPT += -qintsize=8
809 endif
810 endif
811 else
812 FCOMMON_OPT += -q32
813 endif
814 ifeq ($(USE_OPENMP), 1)
815 FCOMMON_OPT += -openmp
816 endif
817 endif
818
819 ifeq ($(F_COMPILER), PGI)
820 CCOMMON_OPT  += -DF_INTERFACE_PGI
821 COMMON_PROF +=  -DPGICOMPILER
822 ifdef BINARY64
823 ifdef INTERFACE64
824 ifneq ($(INTERFACE64), 0)
825 FCOMMON_OPT += -i8
826 endif
827 endif
828 FCOMMON_OPT += -tp p7-64
829 else
830 FCOMMON_OPT += -tp p7
831 endif
832 ifeq ($(USE_OPENMP), 1)
833 FCOMMON_OPT += -mp
834 endif
835 endif
836
837 ifeq ($(F_COMPILER), PATHSCALE)
838 CCOMMON_OPT  += -DF_INTERFACE_PATHSCALE
839 ifdef BINARY64
840 ifdef INTERFACE64
841 ifneq ($(INTERFACE64), 0)
842 FCOMMON_OPT += -i8
843 endif
844 endif
845 endif
846  
847 ifeq ($(USE_OPENMP), 1)
848 FCOMMON_OPT += -mp
849 endif
850 endif
851
852 ifeq ($(F_COMPILER), OPEN64)
853 CCOMMON_OPT  += -DF_INTERFACE_OPEN64
854 ifdef BINARY64
855 ifdef INTERFACE64
856 ifneq ($(INTERFACE64), 0)
857 FCOMMON_OPT += -i8
858 endif
859 endif
860 endif
861
862 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
863 ifndef BINARY64
864 FCOMMON_OPT += -n32
865 else
866 FCOMMON_OPT += -n64
867 endif
868 ifeq ($(CORE), LOONGSON3A)
869 FCOMMON_OPT += -loongson3 -static
870 endif
871
872 ifeq ($(CORE), LOONGSON3B)
873 FCOMMON_OPT += -loongson3 -static
874 endif
875
876 else
877 ifndef BINARY64
878 FCOMMON_OPT += -m32
879 else
880 FCOMMON_OPT += -m64
881 endif
882 endif
883
884 ifeq ($(USE_OPENMP), 1)
885 FEXTRALIB   += -lstdc++
886 FCOMMON_OPT += -mp
887 endif
888 endif
889
890 ifeq ($(C_COMPILER), OPEN64)
891
892 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
893 ifndef BINARY64
894 CCOMMON_OPT += -n32
895 else
896 CCOMMON_OPT += -n64
897 endif
898 ifeq ($(CORE), LOONGSON3A)
899 CCOMMON_OPT += -loongson3 -static
900 endif
901
902 ifeq ($(CORE), LOONGSON3B)
903 CCOMMON_OPT += -loongson3 -static
904 endif
905
906 else
907
908 ifndef BINARY64
909 CCOMMON_OPT += -m32
910 else
911 CCOMMON_OPT += -m64
912 endif
913 endif
914 endif
915
916 ifeq ($(C_COMPILER), SUN)
917 CCOMMON_OPT  += -w
918 ifeq ($(ARCH), x86)
919 CCOMMON_OPT  += -m32
920 else
921 FCOMMON_OPT  += -m64
922 endif
923 endif
924
925 ifeq ($(F_COMPILER), SUN)
926 CCOMMON_OPT  += -DF_INTERFACE_SUN
927 ifeq ($(ARCH), x86)
928 FCOMMON_OPT  += -m32
929 else
930 FCOMMON_OPT  += -m64
931 endif
932 ifeq ($(USE_OPENMP), 1)
933 FCOMMON_OPT += -xopenmp=parallel
934 endif
935 endif
936
937 ifeq ($(F_COMPILER), COMPAQ)
938 CCOMMON_OPT  += -DF_INTERFACE_COMPAQ
939 ifeq ($(USE_OPENMP), 1)
940 FCOMMON_OPT += -openmp
941 endif
942 endif
943
944 ifdef BINARY64
945 ifdef INTERFACE64
946 ifneq ($(INTERFACE64), 0)
947 CCOMMON_OPT     +=
948 #-DUSE64BITINT
949 endif
950 endif
951 endif
952
953 ifeq ($(NEED_PIC), 1)
954 ifeq ($(C_COMPILER), IBM)
955 CCOMMON_OPT += -qpic=large
956 else
957 CCOMMON_OPT += -fPIC
958 endif
959 ifeq ($(F_COMPILER), SUN)
960 FCOMMON_OPT  += -pic
961 else
962 FCOMMON_OPT += -fPIC
963 endif
964 endif
965
966 ifeq ($(DYNAMIC_ARCH), 1)
967 CCOMMON_OPT     += -DDYNAMIC_ARCH
968 endif
969
970 ifeq ($(DYNAMIC_OLDER), 1)
971 CCOMMON_OPT     += -DDYNAMIC_OLDER
972 endif
973
974 ifeq ($(NO_LAPACK), 1)
975 CCOMMON_OPT     += -DNO_LAPACK
976 #Disable LAPACK C interface
977 NO_LAPACKE = 1
978 endif
979
980 ifeq ($(NO_LAPACKE), 1)
981 CCOMMON_OPT     += -DNO_LAPACKE
982 endif
983
984 ifeq ($(NO_AVX), 1)
985 CCOMMON_OPT     += -DNO_AVX
986 endif
987
988 ifeq ($(ARCH), x86)
989 CCOMMON_OPT     += -DNO_AVX
990 endif
991
992 ifeq ($(NO_AVX2), 1)
993 CCOMMON_OPT     += -DNO_AVX2
994 endif
995
996 ifeq ($(NO_AVX512), 1)
997 CCOMMON_OPT     += -DNO_AVX512
998 endif
999
1000 ifdef SMP
1001 CCOMMON_OPT     += -DSMP_SERVER
1002
1003 ifeq ($(ARCH), mips64)
1004 ifneq ($(CORE), LOONGSON3B)
1005 USE_SIMPLE_THREADED_LEVEL3 = 1
1006 endif
1007 endif
1008
1009 ifeq ($(USE_OPENMP), 1)
1010 # USE_SIMPLE_THREADED_LEVEL3 = 1
1011 # NO_AFFINITY = 1
1012 CCOMMON_OPT     += -DUSE_OPENMP
1013 endif
1014
1015 ifeq ($(BIGNUMA), 1)
1016 CCOMMON_OPT     += -DBIGNUMA
1017 endif
1018
1019 endif
1020
1021 ifeq ($(NO_WARMUP), 1)
1022 CCOMMON_OPT     += -DNO_WARMUP
1023 endif
1024
1025 ifeq ($(CONSISTENT_FPCSR), 1)
1026 CCOMMON_OPT     += -DCONSISTENT_FPCSR
1027 endif
1028
1029 # Only for development
1030 # CCOMMON_OPT    += -DPARAMTEST
1031 # CCOMMON_OPT    += -DPREFETCHTEST
1032 # CCOMMON_OPT    += -DNO_SWITCHING
1033 # USE_PAPI = 1
1034
1035 ifdef USE_PAPI
1036 CCOMMON_OPT      += -DUSE_PAPI
1037 EXTRALIB         += -lpapi -lperfctr
1038 endif
1039
1040 ifdef DYNAMIC_THREADS
1041 CCOMMON_OPT      += -DDYNAMIC_THREADS
1042 endif
1043
1044 CCOMMON_OPT     += -DMAX_CPU_NUMBER=$(NUM_THREADS)
1045
1046 CCOMMON_OPT     += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
1047
1048 ifdef USE_SIMPLE_THREADED_LEVEL3
1049 CCOMMON_OPT     += -DUSE_SIMPLE_THREADED_LEVEL3
1050 endif
1051
1052 ifdef USE_TLS
1053 CCOMMON_OPT += -DUSE_TLS
1054 endif
1055
1056 CCOMMON_OPT += -DVERSION=\"$(VERSION)\"
1057
1058 ifndef SYMBOLPREFIX
1059 SYMBOLPREFIX =
1060 endif
1061
1062 ifndef SYMBOLSUFFIX
1063 SYMBOLSUFFIX =
1064 endif
1065
1066 ifndef LIBNAMESUFFIX
1067 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)
1068 else
1069 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
1070 endif
1071
1072 ifeq ($(OSNAME), CYGWIN_NT)
1073 LIBPREFIX = cyg$(LIBNAMEBASE)
1074 else
1075 LIBPREFIX = lib$(LIBNAMEBASE)
1076 endif
1077
1078 KERNELDIR       = $(TOPDIR)/kernel/$(ARCH)
1079
1080 include $(TOPDIR)/Makefile.$(ARCH)
1081
1082 CCOMMON_OPT     += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
1083
1084 ifeq ($(CORE), PPC440)
1085 CCOMMON_OPT     += -DALLOC_QALLOC
1086 endif
1087
1088 ifeq ($(CORE), PPC440FP2)
1089 STATIC_ALLOCATION = 1
1090 endif
1091
1092 ifneq ($(OSNAME), Linux)
1093 NO_AFFINITY = 1
1094 endif
1095
1096 ifneq ($(ARCH), x86_64)
1097 ifneq ($(ARCH), x86)
1098 ifneq ($(CORE), LOONGSON3B)
1099 NO_AFFINITY = 1
1100 endif
1101 endif
1102 endif
1103
1104 ifdef NO_AFFINITY
1105 CCOMMON_OPT     += -DNO_AFFINITY
1106 endif
1107
1108 ifdef FUNCTION_PROFILE
1109 CCOMMON_OPT     += -DFUNCTION_PROFILE
1110 endif
1111
1112 ifdef HUGETLB_ALLOCATION
1113 CCOMMON_OPT     += -DALLOC_HUGETLB
1114 endif
1115
1116 ifdef HUGETLBFILE_ALLOCATION
1117 CCOMMON_OPT     += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
1118 endif
1119
1120 ifdef STATIC_ALLOCATION
1121 CCOMMON_OPT     += -DALLOC_STATIC
1122 endif
1123
1124 ifdef DEVICEDRIVER_ALLOCATION
1125 CCOMMON_OPT     += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
1126 endif
1127
1128 ifdef MIXED_MEMORY_ALLOCATION
1129 CCOMMON_OPT     += -DMIXED_MEMORY_ALLOCATION
1130 endif
1131
1132 ifeq ($(OSNAME), SunOS)
1133 TAR     = gtar
1134 PATCH   = gpatch
1135 GREP    = ggrep
1136 AWK     = nawk
1137 else
1138 TAR     = tar
1139 PATCH   = patch
1140 GREP    = grep
1141 AWK     = awk
1142 endif
1143
1144 ifndef MD5SUM
1145 MD5SUM  = md5sum
1146 endif
1147
1148
1149 REVISION = -r$(VERSION)
1150 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
1151
1152 ifeq ($(DEBUG), 1)
1153 COMMON_OPT += -g
1154 endif
1155
1156 ifeq ($(DEBUG), 1)
1157 FCOMMON_OPT += -g
1158 endif
1159
1160 ifndef COMMON_OPT
1161 COMMON_OPT = -O2
1162 endif
1163
1164 ifndef FCOMMON_OPT
1165 FCOMMON_OPT = -O2 -frecursive
1166 endif
1167
1168 override CFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
1169 override PFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
1170
1171 override FFLAGS     += $(COMMON_OPT) $(FCOMMON_OPT)
1172 override FPFLAGS    += $(FCOMMON_OPT) $(COMMON_PROF)
1173 #MAKEOVERRIDES =
1174
1175 ifdef NEED_PIC
1176 ifeq (,$(findstring PIC,$(FFLAGS)))
1177 override FFLAGS += -fPIC
1178 endif
1179 endif
1180
1181 #For LAPACK Fortran codes.
1182 #Disable -fopenmp for LAPACK Fortran codes on Windows.
1183 ifdef OS_WINDOWS
1184 LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
1185 LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
1186 else
1187 LAPACK_FFLAGS := $(FFLAGS)
1188 LAPACK_FPFLAGS := $(FPFLAGS)
1189 endif
1190
1191 LAPACK_CFLAGS = $(CFLAGS)
1192 LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
1193 ifdef INTERFACE64
1194 ifneq ($(INTERFACE64), 0)
1195 LAPACK_CFLAGS +=  -DLAPACK_ILP64
1196 endif
1197 endif
1198
1199 ifdef OS_WINDOWS
1200 LAPACK_CFLAGS +=  -DOPENBLAS_OS_WINDOWS
1201 endif
1202 ifeq ($(C_COMPILER), LSB)
1203 LAPACK_CFLAGS +=  -DLAPACK_COMPLEX_STRUCTURE
1204 endif
1205
1206 ifndef SUFFIX
1207 SUFFIX  = o
1208 endif
1209
1210 ifndef PSUFFIX
1211 PSUFFIX = po
1212 endif
1213
1214 ifndef LIBSUFFIX
1215 LIBSUFFIX = a
1216 endif
1217
1218 ifneq ($(DYNAMIC_ARCH), 1)
1219 ifndef SMP
1220 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
1221 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
1222 else
1223 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
1224 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
1225 endif
1226 else
1227 ifndef SMP
1228 LIBNAME         = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
1229 LIBNAME_P       = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
1230 else
1231 LIBNAME         = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
1232 LIBNAME_P       = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
1233 endif
1234 endif
1235
1236
1237 LIBDLLNAME   = $(LIBPREFIX).dll
1238 IMPLIBNAME   = lib$(LIBNAMEBASE).dll.a
1239 ifneq ($(OSNAME), AIX)
1240 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.so)
1241 else
1242 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.a)
1243 endif
1244 LIBDYNNAME   = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
1245 LIBDEFNAME   = $(LIBNAME:.$(LIBSUFFIX)=.def)
1246 LIBEXPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.exp)
1247 LIBZIPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.zip)
1248
1249 LIBS            = $(TOPDIR)/$(LIBNAME)
1250 LIBS_P          = $(TOPDIR)/$(LIBNAME_P)
1251
1252
1253 LIB_COMPONENTS = BLAS
1254 ifneq ($(NO_CBLAS), 1)
1255 LIB_COMPONENTS += CBLAS
1256 endif
1257
1258 ifneq ($(NO_LAPACK), 1)
1259 LIB_COMPONENTS += LAPACK
1260 ifneq ($(NO_LAPACKE), 1)
1261 LIB_COMPONENTS += LAPACKE
1262 endif
1263 ifeq ($(BUILD_RELAPACK), 1)
1264 LIB_COMPONENTS += ReLAPACK
1265 endif
1266 endif
1267
1268 ifeq ($(ONLY_CBLAS), 1)
1269 LIB_COMPONENTS = CBLAS
1270 endif
1271
1272 export OSNAME
1273 export ARCH
1274 export CORE
1275 export LIBCORE
1276 export PGCPATH
1277 export CONFIG
1278 export CC
1279 export FC
1280 export BU
1281 export FU
1282 export NEED2UNDERSCORES
1283 export USE_THREAD
1284 export NUM_THREADS
1285 export NUM_CORES
1286 export SMP
1287 export MAKEFILE_RULE
1288 export NEED_PIC
1289 export BINARY
1290 export BINARY32
1291 export BINARY64
1292 export F_COMPILER
1293 export C_COMPILER
1294 export USE_OPENMP
1295 export CROSS
1296 export CROSS_SUFFIX
1297 export NOFORTRAN
1298 export NO_FBLAS
1299 export EXTRALIB
1300 export CEXTRALIB
1301 export FEXTRALIB
1302 export HAVE_SSE
1303 export HAVE_SSE2
1304 export HAVE_SSE3
1305 export HAVE_SSSE3
1306 export HAVE_SSE4_1
1307 export HAVE_SSE4_2
1308 export HAVE_SSE4A
1309 export HAVE_SSE5
1310 export HAVE_AVX
1311 export HAVE_VFP
1312 export HAVE_VFPV3
1313 export HAVE_VFPV4
1314 export HAVE_NEON
1315 export HAVE_MSA
1316 export MSA_FLAGS
1317 export KERNELDIR
1318 export FUNCTION_PROFILE
1319 export TARGET_CORE
1320 export NO_AVX512
1321
1322 export SGEMM_UNROLL_M
1323 export SGEMM_UNROLL_N
1324 export DGEMM_UNROLL_M
1325 export DGEMM_UNROLL_N
1326 export QGEMM_UNROLL_M
1327 export QGEMM_UNROLL_N
1328 export CGEMM_UNROLL_M
1329 export CGEMM_UNROLL_N
1330 export ZGEMM_UNROLL_M
1331 export ZGEMM_UNROLL_N
1332 export XGEMM_UNROLL_M
1333 export XGEMM_UNROLL_N
1334 export CGEMM3M_UNROLL_M
1335 export CGEMM3M_UNROLL_N
1336 export ZGEMM3M_UNROLL_M
1337 export ZGEMM3M_UNROLL_N
1338 export XGEMM3M_UNROLL_M
1339 export XGEMM3M_UNROLL_N
1340
1341
1342 ifdef USE_CUDA
1343 export CUDADIR
1344 export CUCC
1345 export CUFLAGS
1346 export CULIB
1347 endif
1348
1349 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
1350
1351 .f.$(SUFFIX):
1352         $(FC) $(FFLAGS) -c $<  -o $(@F)
1353
1354 .f.$(PSUFFIX):
1355         $(FC) $(FPFLAGS) -pg -c $<  -o $(@F)
1356
1357
1358 ifdef BINARY64
1359 PATHSCALEPATH   = /opt/pathscale/lib/3.1
1360 PGIPATH         = /opt/pgi/linux86-64/7.1-5/lib
1361 else
1362 PATHSCALEPATH   = /opt/pathscale/lib/3.1/32
1363 PGIPATH         = /opt/pgi/linux86/7.1-5/lib
1364 endif
1365
1366 ACMLPATH        = /opt/acml/4.3.0
1367 ifneq ($(OSNAME), Darwin)
1368 MKLPATH         = /opt/intel/mkl/10.2.2.025/lib
1369 else
1370 MKLPATH         = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
1371 endif
1372 ATLASPATH       = /opt/atlas/3.9.17/opteron
1373 FLAMEPATH       = $(HOME)/flame/lib
1374 ifneq ($(OSNAME), SunOS)
1375 SUNPATH         = /opt/sunstudio12.1
1376 else
1377 SUNPATH         = /opt/SUNWspro
1378 endif