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