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