Added UNROLL values for 3M to getarch_2nd.c, Makefile.system and Makefile.L3
[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 ifndef NETLIB_LAPACK_DIR
13 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-3.4.2
14 endif
15
16 # Default C compiler
17 # - Only set if not specified on the command line or inherited from the environment.
18 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
19 #   http://stackoverflow.com/questions/4029274/mingw-and-make-variables
20 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
21 ifeq ($(origin CC),default)
22 CC = gcc
23 endif
24
25 # Default Fortran compiler (FC) is selected by f_check.
26
27 ifndef MAKEFILE_RULE
28 include $(TOPDIR)/Makefile.rule
29 else
30 include $(TOPDIR)/$(MAKEFILE_RULE)
31 endif
32
33 #
34 #  Beginning of system configuration 
35 #
36
37 ifndef HOSTCC
38 HOSTCC   = $(CC)
39 endif
40
41 ifdef TARGET
42 GETARCH_FLAGS := -DFORCE_$(TARGET)
43 endif
44
45 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
46 #
47 ifdef TARGET_CORE
48 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
49 endif
50
51 ifdef INTERFACE64
52 GETARCH_FLAGS   += -DUSE64BITINT
53 endif
54
55 ifndef GEMM_MULTITHREAD_THRESHOLD
56 GEMM_MULTITHREAD_THRESHOLD=50
57 endif
58 GETARCH_FLAGS   += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD) 
59
60 ifeq ($(NO_AVX), 1)
61 GETARCH_FLAGS   += -DNO_AVX
62 endif
63
64 ifeq ($(DEBUG), 1)
65 GETARCH_FLAGS   += -g
66 endif
67
68 # This operation is expensive, so execution should be once.
69 ifndef GOTOBLAS_MAKEFILE
70 export GOTOBLAS_MAKEFILE = 1
71
72 # Generating Makefile.conf and config.h
73 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) all)
74
75 ifndef TARGET_CORE
76 include $(TOPDIR)/Makefile.conf
77 else
78 include $(TOPDIR)/Makefile_kernel.conf
79 endif
80
81 endif
82
83 ifndef NUM_THREADS
84 NUM_THREADS = $(NUM_CORES)
85 endif
86
87 ifeq ($(NUM_THREADS), 1)
88 override USE_THREAD = 0
89 endif
90
91 ifdef USE_THREAD
92 ifeq ($(USE_THREAD), 0)
93 SMP =
94 else
95 SMP = 1
96 endif
97 else
98 ifeq ($(NUM_THREAD), 1)
99 SMP =
100 else
101 SMP = 1
102 endif
103 endif
104
105 ifndef NEED_PIC
106 NEED_PIC = 1
107 endif
108
109 ARFLAGS =
110 CPP     = $(COMPILER) -E
111 AR      = $(CROSS_SUFFIX)ar
112 AS      = $(CROSS_SUFFIX)as
113 LD      = $(CROSS_SUFFIX)ld
114 RANLIB  = $(CROSS_SUFFIX)ranlib
115 NM      = $(CROSS_SUFFIX)nm
116 DLLWRAP = $(CROSS_SUFFIX)dllwrap
117
118 #
119 #  OS dependent settings
120 #
121
122 ifeq ($(OSNAME), Darwin)
123 export MACOSX_DEPLOYMENT_TARGET=10.2
124 MD5SUM = md5 -r
125 endif
126
127 ifeq ($(OSNAME), FreeBSD)
128 MD5SUM = md5 -r
129 endif
130
131 ifeq ($(OSNAME), NetBSD)
132 MD5SUM = md5 -n
133 endif
134
135 ifeq ($(OSNAME), Linux)
136 EXTRALIB        += -lm
137 endif
138
139 ifeq ($(OSNAME), AIX)
140 EXTRALIB        += -lm
141 endif
142
143 ifeq ($(OSNAME), WINNT)
144 NEED_PIC = 0
145 NO_EXPRECISION = 1
146
147 EXTRALIB        += -defaultlib:advapi32
148
149 SUFFIX  = obj
150 PSUFFIX = pobj
151 LIBSUFFIX = lib
152 ifeq ($(C_COMPILER), GCC)
153 #Test for supporting MS_ABI
154 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
155 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
156 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
157 ifeq ($(GCCVERSIONGT4), 1)
158 # GCC Majar version > 4
159 # It is compatible with MSVC ABI. 
160 CCOMMON_OPT     += -DMS_ABI
161 endif
162
163 ifeq ($(GCCVERSIONGTEQ4), 1)
164 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
165 # GCC Version >=4.7
166 # It is compatible with MSVC ABI. 
167 CCOMMON_OPT     += -DMS_ABI
168 endif
169 endif
170
171 endif
172 endif
173
174 ifeq ($(OSNAME), Interix)
175 NEED_PIC = 0
176 NO_EXPRECISION = 1
177
178 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
179 endif
180
181 ifeq ($(OSNAME), CYGWIN_NT)
182 NEED_PIC = 0
183 NO_EXPRECISION = 1
184 endif
185
186 ifneq ($(OSNAME), WINNT)
187 ifneq ($(OSNAME), CYGWIN_NT)
188 ifneq ($(OSNAME), Interix)
189 ifdef SMP
190 EXTRALIB   += -lpthread
191 endif
192 endif
193 endif
194 endif
195
196 ifdef QUAD_PRECISION
197 CCOMMON_OPT     += -DQUAD_PRECISION
198 NO_EXPRECISION = 1
199 endif
200
201 ifneq ($(ARCH), x86)
202 ifneq ($(ARCH), x86_64)
203 NO_EXPRECISION = 1
204 endif
205 endif
206
207 ifdef UTEST_CHECK
208 CCOMMON_OPT     += -DUTEST_CHECK
209 SANITY_CHECK = 1
210 endif
211
212 ifdef SANITY_CHECK
213 CCOMMON_OPT     += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
214 endif
215
216 #
217 #  Architecture dependent settings
218 #
219
220 ifeq ($(ARCH), x86)
221 ifndef BINARY
222 NO_BINARY_MODE  = 1
223 endif
224 ifndef NO_EXPRECISION
225 ifeq ($(F_COMPILER), GFORTRAN)
226 ifeq ($(C_COMPILER), GCC)
227 EXPRECISION     = 1
228 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
229 FCOMMON_OPT     += -m128bit-long-double
230 endif
231 endif
232 endif
233 endif
234
235 ifeq ($(ARCH), x86_64)
236 ifndef NO_EXPRECISION
237 ifeq ($(F_COMPILER), GFORTRAN)
238 ifeq ($(C_COMPILER), GCC)
239 EXPRECISION     = 1
240 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
241 FCOMMON_OPT     += -m128bit-long-double
242 endif
243 endif
244 endif
245 endif
246
247 ifeq ($(C_COMPILER), INTEL)
248 CCOMMON_OPT    += -wd981
249 endif
250
251 ifeq ($(USE_OPENMP), 1)
252 ifeq ($(C_COMPILER), GCC)
253 CCOMMON_OPT    += -fopenmp
254 endif
255
256 ifeq ($(C_COMPILER), INTEL)
257 CCOMMON_OPT    += -openmp
258 endif
259
260 ifeq ($(C_COMPILER), PGI)
261 CCOMMON_OPT    += -mp
262 endif
263
264 ifeq ($(C_COMPILER), OPEN64)
265 CCOMMON_OPT    += -mp
266 CEXTRALIB   += -lstdc++
267 endif
268
269 ifeq ($(C_COMPILER), PATHSCALE)
270 CCOMMON_OPT    += -mp
271 endif
272 endif
273
274
275 ifeq ($(DYNAMIC_ARCH), 1)
276 ifeq ($(ARCH), x86)
277 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
278                CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
279 ifneq ($(NO_AVX), 1)
280 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER
281 endif
282 endif
283
284 ifeq ($(ARCH), x86_64)
285 DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
286 ifneq ($(NO_AVX), 1)
287 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER
288 endif
289 endif
290
291 ifndef DYNAMIC_CORE
292 DYNAMIC_ARCH =
293 endif
294 endif
295
296 ifeq ($(ARCH), ia64)
297 NO_BINARY_MODE  = 1
298 BINARY_DEFINED  = 1
299
300 ifeq ($(F_COMPILER), GFORTRAN)
301 ifeq ($(C_COMPILER), GCC)
302 # EXPRECISION   = 1
303 # CCOMMON_OPT   += -DEXPRECISION
304 endif
305 endif
306 endif
307
308 ifeq ($(ARCH), mips64)
309 NO_BINARY_MODE  = 1
310 endif
311
312 ifeq ($(ARCH), alpha)
313 NO_BINARY_MODE  = 1
314 BINARY_DEFINED  = 1
315 endif
316
317 #
318 #  C Compiler dependent settings
319 #
320
321 ifeq ($(C_COMPILER), GCC)
322 CCOMMON_OPT += -Wall
323 COMMON_PROF += -fno-inline
324 NO_UNINITIALIZED_WARN =  -Wno-uninitialized
325
326 ifdef NO_BINARY_MODE
327
328 ifeq ($(ARCH), mips64)
329 ifdef BINARY64
330 CCOMMON_OPT += -mabi=64
331 else
332 CCOMMON_OPT += -mabi=n32
333 endif
334 BINARY_DEFINED = 1
335 endif
336
337 ifeq ($(CORE), LOONGSON3A) 
338 CCOMMON_OPT += -march=mips64
339 FCOMMON_OPT += -march=mips64
340 endif
341
342 ifeq ($(CORE), LOONGSON3B) 
343 CCOMMON_OPT += -march=mips64
344 FCOMMON_OPT += -march=mips64
345 endif
346
347 ifeq ($(OSNAME), AIX)
348 BINARY_DEFINED = 1
349 endif
350
351 endif
352
353 ifndef BINARY_DEFINED
354 ifdef BINARY64
355 CCOMMON_OPT += -m64
356 else
357 CCOMMON_OPT += -m32
358 endif
359 endif
360
361 endif
362
363 ifeq ($(C_COMPILER), PGI)
364 ifdef BINARY64
365 CCOMMON_OPT += -tp p7-64
366 else
367 CCOMMON_OPT += -tp p7
368 endif
369 endif
370
371 ifeq ($(C_COMPILER), PATHSCALE)
372 ifdef BINARY64
373 CCOMMON_OPT += -m64
374 else
375 CCOMMON_OPT += -m32
376 endif
377 endif
378
379 #
380 #  Fortran Compiler dependent settings
381 #
382
383 ifeq ($(F_COMPILER), G77)
384 CCOMMON_OPT += -DF_INTERFACE_G77
385 FCOMMON_OPT += -Wall
386 ifndef NO_BINARY_MODE
387 ifdef BINARY64
388 FCOMMON_OPT += -m64
389 else
390 FCOMMON_OPT += -m32
391 endif
392 endif
393 endif
394
395 ifeq ($(F_COMPILER), G95)
396 CCOMMON_OPT += -DF_INTERFACE_G95
397 FCOMMON_OPT += -Wall
398 ifndef NO_BINARY_MODE
399 ifdef BINARY64
400 FCOMMON_OPT += -m64
401 else
402 FCOMMON_OPT += -m32
403 endif
404 endif
405 endif
406
407 ifeq ($(F_COMPILER), GFORTRAN)
408 CCOMMON_OPT += -DF_INTERFACE_GFORT
409 FCOMMON_OPT += -Wall
410 EXTRALIB += -lgfortran 
411 ifdef NO_BINARY_MODE
412 ifeq ($(ARCH), mips64)
413 ifdef BINARY64
414 FCOMMON_OPT += -mabi=64
415 else
416 FCOMMON_OPT += -mabi=n32
417 endif
418 endif
419 else
420 ifdef BINARY64
421 FCOMMON_OPT += -m64
422 ifdef INTERFACE64
423 FCOMMON_OPT +=  -fdefault-integer-8
424 endif
425 else
426 FCOMMON_OPT += -m32
427 endif
428 endif
429 ifdef USE_OPENMP
430 FCOMMON_OPT += -fopenmp
431 endif
432 endif
433
434 ifeq ($(F_COMPILER), INTEL)
435 CCOMMON_OPT += -DF_INTERFACE_INTEL
436 ifdef INTERFACE64
437 FCOMMON_OPT += -i8
438 endif
439 ifdef USE_OPENMP
440 FCOMMON_OPT += -openmp
441 endif
442 endif
443
444 ifeq ($(F_COMPILER), FUJITSU)
445 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
446 ifdef USE_OPENMP
447 FCOMMON_OPT += -openmp
448 endif
449 endif
450
451 ifeq ($(F_COMPILER), IBM)
452 CCOMMON_OPT += -DF_INTERFACE_IBM
453 # FCOMMON_OPT   += -qarch=440
454 ifdef BINARY64
455 FCOMMON_OPT += -q64
456 ifdef INTERFACE64
457 FCOMMON_OPT += -qintsize=8
458 endif
459 else
460 FCOMMON_OPT += -q32
461 endif
462 ifdef USE_OPENMP
463 FCOMMON_OPT += -openmp
464 endif
465 endif
466
467 ifeq ($(F_COMPILER), PGI)
468 CCOMMON_OPT  += -DF_INTERFACE_PGI
469 COMMON_PROF +=  -DPGICOMPILER
470 ifdef BINARY64
471 ifdef INTERFACE64
472 FCOMMON_OPT += -i8
473 endif
474 FCOMMON_OPT += -tp p7-64
475 else
476 FCOMMON_OPT += -tp p7
477 endif
478 ifdef USE_OPENMP
479 FCOMMON_OPT += -mp
480 endif
481 endif
482
483 ifeq ($(F_COMPILER), PATHSCALE)
484 CCOMMON_OPT  += -DF_INTERFACE_PATHSCALE
485 ifdef BINARY64
486 ifdef INTERFACE64
487 FCOMMON_OPT += -i8
488 endif
489 endif
490
491 ifneq ($(ARCH), mips64)
492 ifndef BINARY64
493 FCOMMON_OPT += -m32
494 else
495 FCOMMON_OPT += -m64
496 endif
497 else
498 ifdef BINARY64
499 FCOMMON_OPT += -mabi=64
500 else
501 FCOMMON_OPT += -mabi=n32
502 endif
503 endif
504
505 ifdef USE_OPENMP
506 FCOMMON_OPT += -mp
507 endif
508 endif
509
510 ifeq ($(F_COMPILER), OPEN64)
511 CCOMMON_OPT  += -DF_INTERFACE_OPEN64
512 ifdef BINARY64
513 ifdef INTERFACE64
514 FCOMMON_OPT += -i8
515 endif
516 endif
517 ifndef BINARY64
518 FCOMMON_OPT += -m32
519 else
520 FCOMMON_OPT += -m64
521 endif
522
523 ifdef USE_OPENMP
524 FEXTRALIB   += -lstdc++
525 FCOMMON_OPT += -mp
526 endif
527 endif
528
529 ifeq ($(C_COMPILER), OPEN64)
530 ifndef BINARY64
531 CCOMMON_OPT += -m32
532 else
533 CCOMMON_OPT += -m64
534 endif
535 endif
536
537 ifeq ($(C_COMPILER), SUN)
538 CCOMMON_OPT  += -w
539 ifeq ($(ARCH), x86)
540 CCOMMON_OPT  += -m32
541 else
542 FCOMMON_OPT  += -m64
543 endif
544 endif
545
546 ifeq ($(F_COMPILER), SUN)
547 CCOMMON_OPT  += -DF_INTERFACE_SUN
548 ifeq ($(ARCH), x86)
549 FCOMMON_OPT  += -m32
550 else
551 FCOMMON_OPT  += -m64
552 endif
553 ifdef USE_OPENMP
554 FCOMMON_OPT += -xopenmp=parallel
555 endif
556 endif
557
558 ifeq ($(F_COMPILER), COMPAQ)
559 CCOMMON_OPT  += -DF_INTERFACE_COMPAQ
560 ifdef USE_OPENMP
561 FCOMMON_OPT += -openmp
562 endif
563 endif
564
565 ifdef BINARY64
566 ifdef INTERFACE64
567 CCOMMON_OPT     += 
568 #-DUSE64BITINT
569 endif
570 endif
571
572 ifeq ($(NEED_PIC), 1)
573 ifeq ($(C_COMPILER), IBM)
574 CCOMMON_OPT += -qpic=large 
575 else
576 CCOMMON_OPT += -fPIC 
577 endif
578 ifeq ($(F_COMPILER), SUN)
579 FCOMMON_OPT  += -pic
580 else
581 FCOMMON_OPT += -fPIC 
582 endif
583 endif
584
585 ifeq ($(DYNAMIC_ARCH), 1)
586 CCOMMON_OPT     += -DDYNAMIC_ARCH
587 endif
588
589 ifeq ($(NO_LAPACK), 1)
590 CCOMMON_OPT     += -DNO_LAPACK
591 #Disable LAPACK C interface
592 NO_LAPACKE = 1
593 endif
594
595 ifeq ($(NO_LAPACKE), 1)
596 CCOMMON_OPT     += -DNO_LAPACKE
597 endif
598
599 ifeq ($(NO_AVX), 1)
600 CCOMMON_OPT     += -DNO_AVX
601 endif
602
603 ifdef SMP
604 CCOMMON_OPT     += -DSMP_SERVER
605
606 ifeq ($(ARCH), mips64)
607 ifneq ($(CORE), LOONGSON3B)
608 USE_SIMPLE_THREADED_LEVEL3 = 1
609 endif
610 endif
611
612 ifeq ($(USE_OPENMP), 1)
613 # USE_SIMPLE_THREADED_LEVEL3 = 1
614 # NO_AFFINITY = 1
615 CCOMMON_OPT     += -DUSE_OPENMP
616 endif
617
618 endif
619
620 ifeq ($(NO_WARMUP), 1)
621 CCOMMON_OPT     += -DNO_WARMUP
622 endif
623
624 ifeq ($(CONSISTENT_FPCSR), 1)
625 CCOMMON_OPT     += -DCONSISTENT_FPCSR
626 endif
627
628 # Only for development
629 # CCOMMON_OPT    += -DPARAMTEST
630 # CCOMMON_OPT    += -DPREFETCHTEST
631 # CCOMMON_OPT    += -DNO_SWITCHING
632 # USE_PAPI = 1
633
634 ifdef USE_PAPI
635 CCOMMON_OPT      += -DUSE_PAPI
636 EXTRALIB         += -lpapi -lperfctr
637 endif
638
639 ifdef DYNAMIC_THREADS
640 CCOMMON_OPT      += -DDYNAMIC_THREADS
641 endif
642
643 CCOMMON_OPT     += -DMAX_CPU_NUMBER=$(NUM_THREADS)
644
645 ifdef USE_SIMPLE_THREADED_LEVEL3
646 CCOMMON_OPT     += -DUSE_SIMPLE_THREADED_LEVEL3
647 endif
648
649 ifndef LIBNAMESUFFIX
650 LIBPREFIX = libopenblas
651 else
652 LIBPREFIX = libopenblas_$(LIBNAMESUFFIX)
653 endif
654
655 KERNELDIR       = $(TOPDIR)/kernel/$(ARCH)
656
657 include $(TOPDIR)/Makefile.$(ARCH)
658
659 CCOMMON_OPT     += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
660
661 ifeq ($(CORE), PPC440)
662 CCOMMON_OPT     += -DALLOC_QALLOC
663 endif
664
665 ifeq ($(CORE), PPC440FP2)
666 STATIC_ALLOCATION = 1
667 endif
668
669 ifneq ($(OSNAME), Linux)
670 NO_AFFINITY = 1
671 endif
672
673 ifneq ($(ARCH), x86_64)
674 ifneq ($(ARCH), x86)
675 ifneq ($(CORE), LOONGSON3B)
676 NO_AFFINITY = 1
677 endif
678 endif
679 endif
680
681 ifdef NO_AFFINITY
682 CCOMMON_OPT     += -DNO_AFFINITY
683 endif
684
685 ifdef FUNCTION_PROFILE
686 CCOMMON_OPT     += -DFUNCTION_PROFILE
687 endif
688
689 ifdef HUGETLB_ALLOCATION
690 CCOMMON_OPT     += -DALLOC_HUGETLB
691 endif
692
693 ifdef HUGETLBFILE_ALLOCATION
694 CCOMMON_OPT     += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
695 endif
696
697 ifdef STATIC_ALLOCATION
698 CCOMMON_OPT     += -DALLOC_STATIC
699 endif
700
701 ifdef DEVICEDRIVER_ALLOCATION
702 CCOMMON_OPT     += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
703 endif
704
705 ifdef MIXED_MEMORY_ALLOCATION
706 CCOMMON_OPT     += -DMIXED_MEMORY_ALLOCATION
707 endif
708
709 ifeq ($(OSNAME), SunOS)
710 TAR     = gtar
711 PATCH   = gpatch
712 GREP    = ggrep
713 else
714 TAR     = tar
715 PATCH   = patch
716 GREP    = grep
717 endif
718
719 ifndef MD5SUM
720 MD5SUM  = md5sum
721 endif
722
723 AWK     = awk
724
725 REVISION = -r$(VERSION)
726 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
727
728 ifeq ($(DEBUG), 1)
729 COMMON_OPT += -g
730 endif
731
732 ifndef COMMON_OPT
733 COMMON_OPT = -O2
734 endif
735
736
737 override CFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
738 override PFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
739
740 override FFLAGS     += $(COMMON_OPT) $(FCOMMON_OPT)
741 override FPFLAGS    += $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF)
742 #MAKEOVERRIDES =
743
744 ifndef SUFFIX
745 SUFFIX  = o
746 endif
747
748 ifndef PSUFFIX
749 PSUFFIX = po
750 endif
751
752 ifndef LIBSUFFIX
753 LIBSUFFIX = a
754 endif
755
756 ifneq ($(DYNAMIC_ARCH), 1)
757 ifndef SMP
758 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
759 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
760 else
761 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
762 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
763 endif
764 else
765 ifndef SMP
766 LIBNAME         = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
767 LIBNAME_P       = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
768 else
769 LIBNAME         = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
770 LIBNAME_P       = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
771 endif
772 endif
773
774
775 LIBDLLNAME   = $(LIBPREFIX).dll
776 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.so)
777 LIBDYNNAME   = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
778 LIBDEFNAME   = $(LIBNAME:.$(LIBSUFFIX)=.def)
779 LIBEXPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.exp)
780 LIBZIPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.zip)
781
782 LIBS            = $(TOPDIR)/$(LIBNAME)
783 LIBS_P          = $(TOPDIR)/$(LIBNAME_P)
784
785 export OSNAME
786 export ARCH
787 export CORE
788 export LIBCORE
789 export PGCPATH
790 export CONFIG
791 export CC
792 export FC
793 export BU
794 export FU
795 export USE_THREAD
796 export NUM_THREADS
797 export NUM_CORES
798 export SMP
799 export MAKEFILE_RULE
800 export NEED_PIC
801 export BINARY
802 export BINARY32
803 export BINARY64
804 export F_COMPILER
805 export C_COMPILER
806 export USE_OPENMP
807 export CROSS
808 export CROSS_SUFFIX
809 export NOFORTRAN
810 export EXTRALIB
811 export CEXTRALIB
812 export FEXTRALIB
813 export HAVE_SSE
814 export HAVE_SSE2
815 export HAVE_SSE3
816 export HAVE_SSSE3
817 export HAVE_SSE4_1
818 export HAVE_SSE4_2
819 export HAVE_SSE4A
820 export HAVE_SSE5
821 export HAVE_AVX
822 export KERNELDIR
823 export FUNCTION_PROFILE
824 export TARGET_CORE
825
826 export SGEMM_UNROLL_M
827 export SGEMM_UNROLL_N
828 export DGEMM_UNROLL_M
829 export DGEMM_UNROLL_N
830 export QGEMM_UNROLL_M
831 export QGEMM_UNROLL_N
832 export CGEMM_UNROLL_M
833 export CGEMM_UNROLL_N
834 export ZGEMM_UNROLL_M
835 export ZGEMM_UNROLL_N
836 export XGEMM_UNROLL_M
837 export XGEMM_UNROLL_N
838 export CGEMM3M_UNROLL_M
839 export CGEMM3M_UNROLL_N
840 export ZGEMM3M_UNROLL_M
841 export ZGEMM3M_UNROLL_N
842 export XGEMM3M_UNROLL_M
843 export XGEMM3M_UNROLL_N
844
845
846 ifdef USE_CUDA
847 export CUDADIR
848 export CUCC
849 export CUFLAGS
850 export CULIB
851 endif
852
853 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
854
855 .f.$(SUFFIX):
856         $(FC) $(FFLAGS) -c $<  -o $(@F)
857
858 .f.$(PSUFFIX):
859         $(FC) $(FPFLAGS) -pg -c $<  -o $(@F)
860
861
862 ifdef BINARY64
863 PATHSCALEPATH   = /opt/pathscale/lib/3.1
864 PGIPATH         = /opt/pgi/linux86-64/7.1-5/lib
865 else
866 PATHSCALEPATH   = /opt/pathscale/lib/3.1/32
867 PGIPATH         = /opt/pgi/linux86/7.1-5/lib
868 endif
869
870 ACMLPATH        = /opt/acml/4.3.0
871 ifneq ($(OSNAME), Darwin)
872 MKLPATH         = /opt/intel/mkl/10.2.2.025/lib
873 else
874 MKLPATH         = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
875 endif
876 ATLASPATH       = /opt/atlas/3.9.17/opteron
877 FLAMEPATH       = $(HOME)/flame/lib
878 ifneq ($(OSNAME), SunOS)
879 SUNPATH         = /opt/sunstudio12.1
880 else
881 SUNPATH         = /opt/SUNWspro
882 endif
883