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