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