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