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