Refs #247. Included lapack source codes. Avoid downloading tar.gz from netlib.org
[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 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
13
14 # Default C compiler
15 # - Only set if not specified on the command line or inherited from the environment.
16 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
17 #   http://stackoverflow.com/questions/4029274/mingw-and-make-variables
18 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
19 ifeq ($(origin CC),default)
20 CC = gcc
21 # Change the default compile to clang on Mac OSX.
22 # http://stackoverflow.com/questions/714100/os-detecting-makefile
23 UNAME_S := $(shell uname -s)
24 ifeq ($(UNAME_S),Darwin)
25      CC = clang
26 endif
27 endif
28
29 # Default Fortran compiler (FC) is selected by f_check.
30
31 ifndef MAKEFILE_RULE
32 include $(TOPDIR)/Makefile.rule
33 else
34 include $(TOPDIR)/$(MAKEFILE_RULE)
35 endif
36
37 #
38 #  Beginning of system configuration 
39 #
40
41 ifndef HOSTCC
42 HOSTCC   = $(CC)
43 endif
44
45 ifdef TARGET
46 GETARCH_FLAGS := -DFORCE_$(TARGET)
47 endif
48
49 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
50 #
51 ifdef TARGET_CORE
52 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
53 endif
54
55 ifdef INTERFACE64
56 GETARCH_FLAGS   += -DUSE64BITINT
57 endif
58
59 ifndef GEMM_MULTITHREAD_THRESHOLD
60 GEMM_MULTITHREAD_THRESHOLD=4
61 endif
62 GETARCH_FLAGS   += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD) 
63
64 ifeq ($(NO_AVX), 1)
65 GETARCH_FLAGS   += -DNO_AVX
66 endif
67
68 ifeq ($(DEBUG), 1)
69 GETARCH_FLAGS   += -g
70 endif
71
72 ifeq ($(QUIET_MAKE), 1)
73 MAKE += -s
74 endif
75
76 ifndef NO_PARALLEL_MAKE
77 NO_PARALLEL_MAKE=0
78 endif
79 GETARCH_FLAGS   += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
80 # This operation is expensive, so execution should be once.
81 ifndef GOTOBLAS_MAKEFILE
82 export GOTOBLAS_MAKEFILE = 1
83
84 # Generating Makefile.conf and config.h
85 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)
86
87 ifndef TARGET_CORE
88 include $(TOPDIR)/Makefile.conf
89 else
90 include $(TOPDIR)/Makefile_kernel.conf
91 endif
92
93 endif
94
95 ifndef NUM_THREADS
96 NUM_THREADS = $(NUM_CORES)
97 endif
98
99 ifeq ($(NUM_THREADS), 1)
100 override USE_THREAD = 0
101 endif
102
103 ifdef USE_THREAD
104 ifeq ($(USE_THREAD), 0)
105 SMP =
106 else
107 SMP = 1
108 endif
109 else
110 ifeq ($(NUM_THREAD), 1)
111 SMP =
112 else
113 SMP = 1
114 endif
115 endif
116
117 ifndef NEED_PIC
118 NEED_PIC = 1
119 endif
120
121 ARFLAGS =
122 CPP     = $(COMPILER) -E
123 AR      = $(CROSS_SUFFIX)ar
124 AS      = $(CROSS_SUFFIX)as
125 LD      = $(CROSS_SUFFIX)ld
126 RANLIB  = $(CROSS_SUFFIX)ranlib
127 NM      = $(CROSS_SUFFIX)nm
128 DLLWRAP = $(CROSS_SUFFIX)dllwrap
129
130 #
131 #  OS dependent settings
132 #
133
134 ifeq ($(OSNAME), Darwin)
135 export MACOSX_DEPLOYMENT_TARGET=10.2
136 MD5SUM = md5 -r
137 endif
138
139 ifeq ($(OSNAME), FreeBSD)
140 MD5SUM = md5 -r
141 endif
142
143 ifeq ($(OSNAME), NetBSD)
144 MD5SUM = md5 -n
145 endif
146
147 ifeq ($(OSNAME), Linux)
148 EXTRALIB        += -lm
149 endif
150
151 ifeq ($(OSNAME), AIX)
152 EXTRALIB        += -lm
153 endif
154
155 ifeq ($(OSNAME), WINNT)
156 NEED_PIC = 0
157 NO_EXPRECISION = 1
158
159 EXTRALIB        += -defaultlib:advapi32
160
161 SUFFIX  = obj
162 PSUFFIX = pobj
163 LIBSUFFIX = a
164
165 ifeq ($(C_COMPILER), CLANG)
166 CCOMMON_OPT     += -DMS_ABI
167 endif
168
169 ifeq ($(C_COMPILER), GCC)
170 #Test for supporting MS_ABI
171 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
172 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
173 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
174 ifeq ($(GCCVERSIONGT4), 1)
175 # GCC Majar version > 4
176 # It is compatible with MSVC ABI. 
177 CCOMMON_OPT     += -DMS_ABI
178 endif
179
180 ifeq ($(GCCVERSIONGTEQ4), 1)
181 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
182 # GCC Version >=4.7
183 # It is compatible with MSVC ABI. 
184 CCOMMON_OPT     += -DMS_ABI
185 endif
186 endif
187
188 endif
189 endif
190
191 ifeq ($(OSNAME), Interix)
192 NEED_PIC = 0
193 NO_EXPRECISION = 1
194
195 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
196 endif
197
198 ifeq ($(OSNAME), CYGWIN_NT)
199 NEED_PIC = 0
200 NO_EXPRECISION = 1
201 endif
202
203 ifneq ($(OSNAME), WINNT)
204 ifneq ($(OSNAME), CYGWIN_NT)
205 ifneq ($(OSNAME), Interix)
206 ifdef SMP
207 EXTRALIB   += -lpthread
208 endif
209 endif
210 endif
211 endif
212
213 ifdef QUAD_PRECISION
214 CCOMMON_OPT     += -DQUAD_PRECISION
215 NO_EXPRECISION = 1
216 endif
217
218 ifneq ($(ARCH), x86)
219 ifneq ($(ARCH), x86_64)
220 NO_EXPRECISION = 1
221 endif
222 endif
223
224 ifdef UTEST_CHECK
225 CCOMMON_OPT     += -DUTEST_CHECK
226 SANITY_CHECK = 1
227 endif
228
229 ifdef SANITY_CHECK
230 CCOMMON_OPT     += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
231 endif
232
233 #
234 #  Architecture dependent settings
235 #
236
237 ifeq ($(ARCH), x86)
238 ifndef BINARY
239 NO_BINARY_MODE  = 1
240 endif
241 ifndef NO_EXPRECISION
242 ifeq ($(F_COMPILER), GFORTRAN)
243 ifeq ($(C_COMPILER), GCC)
244 EXPRECISION     = 1
245 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
246 FCOMMON_OPT     += -m128bit-long-double
247 endif
248 ifeq ($(C_COMPILER), CLANG)
249 EXPRECISION     = 1
250 CCOMMON_OPT     += -DEXPRECISION 
251 FCOMMON_OPT     += -m128bit-long-double
252 endif
253 endif
254 endif
255 endif
256
257 ifeq ($(ARCH), x86_64)
258 ifndef NO_EXPRECISION
259 ifeq ($(F_COMPILER), GFORTRAN)
260 ifeq ($(C_COMPILER), GCC)
261 EXPRECISION     = 1
262 CCOMMON_OPT     += -DEXPRECISION -m128bit-long-double
263 FCOMMON_OPT     += -m128bit-long-double
264 endif
265 ifeq ($(C_COMPILER), CLANG)
266 EXPRECISION     = 1
267 CCOMMON_OPT     += -DEXPRECISION 
268 FCOMMON_OPT     += -m128bit-long-double
269 endif
270 endif
271 endif
272 endif
273
274 ifeq ($(C_COMPILER), INTEL)
275 CCOMMON_OPT    += -wd981
276 endif
277
278 ifeq ($(USE_OPENMP), 1)
279 ifeq ($(C_COMPILER), GCC)
280 CCOMMON_OPT    += -fopenmp
281 endif
282
283 ifeq ($(C_COMPILER), CLANG)
284 $(error OpenBLAS: Clang didn't support OpenMP yet.)
285 CCOMMON_OPT    += -fopenmp
286 endif
287
288 ifeq ($(C_COMPILER), INTEL)
289 CCOMMON_OPT    += -openmp
290 endif
291
292 ifeq ($(C_COMPILER), PGI)
293 CCOMMON_OPT    += -mp
294 endif
295
296 ifeq ($(C_COMPILER), OPEN64)
297 CCOMMON_OPT    += -mp
298 CEXTRALIB   += -lstdc++
299 endif
300
301 ifeq ($(C_COMPILER), PATHSCALE)
302 CCOMMON_OPT    += -mp
303 endif
304 endif
305
306
307 ifeq ($(DYNAMIC_ARCH), 1)
308 ifeq ($(ARCH), x86)
309 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
310                CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
311 ifneq ($(NO_AVX), 1)
312 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER
313 endif
314 endif
315
316 ifeq ($(ARCH), x86_64)
317 DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
318 ifneq ($(NO_AVX), 1)
319 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER
320 endif
321 endif
322
323 ifndef DYNAMIC_CORE
324 DYNAMIC_ARCH =
325 endif
326 endif
327
328 ifeq ($(ARCH), ia64)
329 NO_BINARY_MODE  = 1
330 BINARY_DEFINED  = 1
331
332 ifeq ($(F_COMPILER), GFORTRAN)
333 ifeq ($(C_COMPILER), GCC)
334 # EXPRECISION   = 1
335 # CCOMMON_OPT   += -DEXPRECISION
336 endif
337 endif
338 endif
339
340 ifeq ($(ARCH), mips64)
341 NO_BINARY_MODE  = 1
342 endif
343
344 ifeq ($(ARCH), alpha)
345 NO_BINARY_MODE  = 1
346 BINARY_DEFINED  = 1
347 endif
348
349 #
350 #  C Compiler dependent settings
351 #
352
353 # ifeq logical or. GCC or CLANG
354 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
355 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG))
356 CCOMMON_OPT += -Wall
357 COMMON_PROF += -fno-inline
358 NO_UNINITIALIZED_WARN =  -Wno-uninitialized
359
360 ifeq ($(QUIET_MAKE), 1)
361 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN)
362 endif
363
364 ifdef NO_BINARY_MODE
365
366 ifeq ($(ARCH), mips64)
367 ifdef BINARY64
368 CCOMMON_OPT += -mabi=64
369 else
370 CCOMMON_OPT += -mabi=n32
371 endif
372 BINARY_DEFINED = 1
373 endif
374
375 ifeq ($(CORE), LOONGSON3A) 
376 CCOMMON_OPT += -march=mips64
377 FCOMMON_OPT += -march=mips64
378 endif
379
380 ifeq ($(CORE), LOONGSON3B) 
381 CCOMMON_OPT += -march=mips64
382 FCOMMON_OPT += -march=mips64
383 endif
384
385 ifeq ($(OSNAME), AIX)
386 BINARY_DEFINED = 1
387 endif
388
389 endif
390
391 ifndef BINARY_DEFINED
392 ifdef BINARY64
393 CCOMMON_OPT += -m64
394 else
395 CCOMMON_OPT += -m32
396 endif
397 endif
398
399 endif
400
401 ifeq ($(C_COMPILER), PGI)
402 ifdef BINARY64
403 CCOMMON_OPT += -tp p7-64
404 else
405 CCOMMON_OPT += -tp p7
406 endif
407 endif
408
409 ifeq ($(C_COMPILER), PATHSCALE)
410 ifdef BINARY64
411 CCOMMON_OPT += -m64
412 else
413 CCOMMON_OPT += -m32
414 endif
415 endif
416
417 #
418 #  Fortran Compiler dependent settings
419 #
420
421 ifeq ($(F_COMPILER), G77)
422 CCOMMON_OPT += -DF_INTERFACE_G77
423 FCOMMON_OPT += -Wall
424 ifndef NO_BINARY_MODE
425 ifdef BINARY64
426 FCOMMON_OPT += -m64
427 else
428 FCOMMON_OPT += -m32
429 endif
430 endif
431 endif
432
433 ifeq ($(F_COMPILER), G95)
434 CCOMMON_OPT += -DF_INTERFACE_G95
435 FCOMMON_OPT += -Wall
436 ifndef NO_BINARY_MODE
437 ifdef BINARY64
438 FCOMMON_OPT += -m64
439 else
440 FCOMMON_OPT += -m32
441 endif
442 endif
443 endif
444
445 ifeq ($(F_COMPILER), GFORTRAN)
446 CCOMMON_OPT += -DF_INTERFACE_GFORT
447 FCOMMON_OPT += -Wall
448 ifneq ($(NO_LAPACK), 1)
449 EXTRALIB += -lgfortran 
450 endif
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