Refs #248. Fixed the LSB compatiable issue for BLAS only.
[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 ifneq ($(NO_LAPACK), 1)
451 EXTRALIB += -lgfortran 
452 endif
453 ifdef NO_BINARY_MODE
454 ifeq ($(ARCH), mips64)
455 ifdef BINARY64
456 FCOMMON_OPT += -mabi=64
457 else
458 FCOMMON_OPT += -mabi=n32
459 endif
460 endif
461 else
462 ifdef BINARY64
463 FCOMMON_OPT += -m64
464 ifdef INTERFACE64
465 FCOMMON_OPT +=  -fdefault-integer-8
466 endif
467 else
468 FCOMMON_OPT += -m32
469 endif
470 endif
471 ifdef USE_OPENMP
472 FCOMMON_OPT += -fopenmp
473 endif
474 endif
475
476 ifeq ($(F_COMPILER), INTEL)
477 CCOMMON_OPT += -DF_INTERFACE_INTEL
478 ifdef INTERFACE64
479 FCOMMON_OPT += -i8
480 endif
481 ifdef USE_OPENMP
482 FCOMMON_OPT += -openmp
483 endif
484 endif
485
486 ifeq ($(F_COMPILER), FUJITSU)
487 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
488 ifdef USE_OPENMP
489 FCOMMON_OPT += -openmp
490 endif
491 endif
492
493 ifeq ($(F_COMPILER), IBM)
494 CCOMMON_OPT += -DF_INTERFACE_IBM
495 # FCOMMON_OPT   += -qarch=440
496 ifdef BINARY64
497 FCOMMON_OPT += -q64
498 ifdef INTERFACE64
499 FCOMMON_OPT += -qintsize=8
500 endif
501 else
502 FCOMMON_OPT += -q32
503 endif
504 ifdef USE_OPENMP
505 FCOMMON_OPT += -openmp
506 endif
507 endif
508
509 ifeq ($(F_COMPILER), PGI)
510 CCOMMON_OPT  += -DF_INTERFACE_PGI
511 COMMON_PROF +=  -DPGICOMPILER
512 ifdef BINARY64
513 ifdef INTERFACE64
514 FCOMMON_OPT += -i8
515 endif
516 FCOMMON_OPT += -tp p7-64
517 else
518 FCOMMON_OPT += -tp p7
519 endif
520 ifdef USE_OPENMP
521 FCOMMON_OPT += -mp
522 endif
523 endif
524
525 ifeq ($(F_COMPILER), PATHSCALE)
526 CCOMMON_OPT  += -DF_INTERFACE_PATHSCALE
527 ifdef BINARY64
528 ifdef INTERFACE64
529 FCOMMON_OPT += -i8
530 endif
531 endif
532
533 ifneq ($(ARCH), mips64)
534 ifndef BINARY64
535 FCOMMON_OPT += -m32
536 else
537 FCOMMON_OPT += -m64
538 endif
539 else
540 ifdef BINARY64
541 FCOMMON_OPT += -mabi=64
542 else
543 FCOMMON_OPT += -mabi=n32
544 endif
545 endif
546
547 ifdef USE_OPENMP
548 FCOMMON_OPT += -mp
549 endif
550 endif
551
552 ifeq ($(F_COMPILER), OPEN64)
553 CCOMMON_OPT  += -DF_INTERFACE_OPEN64
554 ifdef BINARY64
555 ifdef INTERFACE64
556 FCOMMON_OPT += -i8
557 endif
558 endif
559 ifndef BINARY64
560 FCOMMON_OPT += -m32
561 else
562 FCOMMON_OPT += -m64
563 endif
564
565 ifdef USE_OPENMP
566 FEXTRALIB   += -lstdc++
567 FCOMMON_OPT += -mp
568 endif
569 endif
570
571 ifeq ($(C_COMPILER), OPEN64)
572 ifndef BINARY64
573 CCOMMON_OPT += -m32
574 else
575 CCOMMON_OPT += -m64
576 endif
577 endif
578
579 ifeq ($(C_COMPILER), SUN)
580 CCOMMON_OPT  += -w
581 ifeq ($(ARCH), x86)
582 CCOMMON_OPT  += -m32
583 else
584 FCOMMON_OPT  += -m64
585 endif
586 endif
587
588 ifeq ($(F_COMPILER), SUN)
589 CCOMMON_OPT  += -DF_INTERFACE_SUN
590 ifeq ($(ARCH), x86)
591 FCOMMON_OPT  += -m32
592 else
593 FCOMMON_OPT  += -m64
594 endif
595 ifdef USE_OPENMP
596 FCOMMON_OPT += -xopenmp=parallel
597 endif
598 endif
599
600 ifeq ($(F_COMPILER), COMPAQ)
601 CCOMMON_OPT  += -DF_INTERFACE_COMPAQ
602 ifdef USE_OPENMP
603 FCOMMON_OPT += -openmp
604 endif
605 endif
606
607 ifdef BINARY64
608 ifdef INTERFACE64
609 CCOMMON_OPT     += 
610 #-DUSE64BITINT
611 endif
612 endif
613
614 ifeq ($(NEED_PIC), 1)
615 ifeq ($(C_COMPILER), IBM)
616 CCOMMON_OPT += -qpic=large 
617 else
618 CCOMMON_OPT += -fPIC 
619 endif
620 ifeq ($(F_COMPILER), SUN)
621 FCOMMON_OPT  += -pic
622 else
623 FCOMMON_OPT += -fPIC 
624 endif
625 endif
626
627 ifeq ($(DYNAMIC_ARCH), 1)
628 CCOMMON_OPT     += -DDYNAMIC_ARCH
629 endif
630
631 ifeq ($(NO_LAPACK), 1)
632 CCOMMON_OPT     += -DNO_LAPACK
633 #Disable LAPACK C interface
634 NO_LAPACKE = 1
635 endif
636
637 ifeq ($(NO_LAPACKE), 1)
638 CCOMMON_OPT     += -DNO_LAPACKE
639 endif
640
641 ifeq ($(NO_AVX), 1)
642 CCOMMON_OPT     += -DNO_AVX
643 endif
644
645 ifdef SMP
646 CCOMMON_OPT     += -DSMP_SERVER
647
648 ifeq ($(ARCH), mips64)
649 ifneq ($(CORE), LOONGSON3B)
650 USE_SIMPLE_THREADED_LEVEL3 = 1
651 endif
652 endif
653
654 ifeq ($(USE_OPENMP), 1)
655 # USE_SIMPLE_THREADED_LEVEL3 = 1
656 # NO_AFFINITY = 1
657 CCOMMON_OPT     += -DUSE_OPENMP
658 endif
659
660 endif
661
662 ifeq ($(NO_WARMUP), 1)
663 CCOMMON_OPT     += -DNO_WARMUP
664 endif
665
666 ifeq ($(CONSISTENT_FPCSR), 1)
667 CCOMMON_OPT     += -DCONSISTENT_FPCSR
668 endif
669
670 # Only for development
671 # CCOMMON_OPT    += -DPARAMTEST
672 # CCOMMON_OPT    += -DPREFETCHTEST
673 # CCOMMON_OPT    += -DNO_SWITCHING
674 # USE_PAPI = 1
675
676 ifdef USE_PAPI
677 CCOMMON_OPT      += -DUSE_PAPI
678 EXTRALIB         += -lpapi -lperfctr
679 endif
680
681 ifdef DYNAMIC_THREADS
682 CCOMMON_OPT      += -DDYNAMIC_THREADS
683 endif
684
685 CCOMMON_OPT     += -DMAX_CPU_NUMBER=$(NUM_THREADS)
686
687 ifdef USE_SIMPLE_THREADED_LEVEL3
688 CCOMMON_OPT     += -DUSE_SIMPLE_THREADED_LEVEL3
689 endif
690
691 ifndef LIBNAMESUFFIX
692 LIBPREFIX = libopenblas
693 else
694 LIBPREFIX = libopenblas_$(LIBNAMESUFFIX)
695 endif
696
697 KERNELDIR       = $(TOPDIR)/kernel/$(ARCH)
698
699 include $(TOPDIR)/Makefile.$(ARCH)
700
701 CCOMMON_OPT     += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
702
703 ifeq ($(CORE), PPC440)
704 CCOMMON_OPT     += -DALLOC_QALLOC
705 endif
706
707 ifeq ($(CORE), PPC440FP2)
708 STATIC_ALLOCATION = 1
709 endif
710
711 ifneq ($(OSNAME), Linux)
712 NO_AFFINITY = 1
713 endif
714
715 ifneq ($(ARCH), x86_64)
716 ifneq ($(ARCH), x86)
717 ifneq ($(CORE), LOONGSON3B)
718 NO_AFFINITY = 1
719 endif
720 endif
721 endif
722
723 ifdef NO_AFFINITY
724 CCOMMON_OPT     += -DNO_AFFINITY
725 endif
726
727 ifdef FUNCTION_PROFILE
728 CCOMMON_OPT     += -DFUNCTION_PROFILE
729 endif
730
731 ifdef HUGETLB_ALLOCATION
732 CCOMMON_OPT     += -DALLOC_HUGETLB
733 endif
734
735 ifdef HUGETLBFILE_ALLOCATION
736 CCOMMON_OPT     += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
737 endif
738
739 ifdef STATIC_ALLOCATION
740 CCOMMON_OPT     += -DALLOC_STATIC
741 endif
742
743 ifdef DEVICEDRIVER_ALLOCATION
744 CCOMMON_OPT     += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
745 endif
746
747 ifdef MIXED_MEMORY_ALLOCATION
748 CCOMMON_OPT     += -DMIXED_MEMORY_ALLOCATION
749 endif
750
751 ifeq ($(OSNAME), SunOS)
752 TAR     = gtar
753 PATCH   = gpatch
754 GREP    = ggrep
755 else
756 TAR     = tar
757 PATCH   = patch
758 GREP    = grep
759 endif
760
761 ifndef MD5SUM
762 MD5SUM  = md5sum
763 endif
764
765 AWK     = awk
766
767 REVISION = -r$(VERSION)
768 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
769
770 ifeq ($(DEBUG), 1)
771 COMMON_OPT += -g
772 endif
773
774 ifndef COMMON_OPT
775 COMMON_OPT = -O2
776 endif
777
778
779 override CFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
780 override PFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
781
782 override FFLAGS     += $(COMMON_OPT) $(FCOMMON_OPT)
783 override FPFLAGS    += $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF)
784 #MAKEOVERRIDES =
785
786 ifndef SUFFIX
787 SUFFIX  = o
788 endif
789
790 ifndef PSUFFIX
791 PSUFFIX = po
792 endif
793
794 ifndef LIBSUFFIX
795 LIBSUFFIX = a
796 endif
797
798 ifneq ($(DYNAMIC_ARCH), 1)
799 ifndef SMP
800 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
801 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
802 else
803 LIBNAME         = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
804 LIBNAME_P       = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
805 endif
806 else
807 ifndef SMP
808 LIBNAME         = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
809 LIBNAME_P       = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
810 else
811 LIBNAME         = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
812 LIBNAME_P       = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
813 endif
814 endif
815
816
817 LIBDLLNAME   = $(LIBPREFIX).dll
818 LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.so)
819 LIBDYNNAME   = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
820 LIBDEFNAME   = $(LIBNAME:.$(LIBSUFFIX)=.def)
821 LIBEXPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.exp)
822 LIBZIPNAME   = $(LIBNAME:.$(LIBSUFFIX)=.zip)
823
824 LIBS            = $(TOPDIR)/$(LIBNAME)
825 LIBS_P          = $(TOPDIR)/$(LIBNAME_P)
826
827 export OSNAME
828 export ARCH
829 export CORE
830 export LIBCORE
831 export PGCPATH
832 export CONFIG
833 export CC
834 export FC
835 export BU
836 export FU
837 export USE_THREAD
838 export NUM_THREADS
839 export NUM_CORES
840 export SMP
841 export MAKEFILE_RULE
842 export NEED_PIC
843 export BINARY
844 export BINARY32
845 export BINARY64
846 export F_COMPILER
847 export C_COMPILER
848 export USE_OPENMP
849 export CROSS
850 export CROSS_SUFFIX
851 export NOFORTRAN
852 export EXTRALIB
853 export CEXTRALIB
854 export FEXTRALIB
855 export HAVE_SSE
856 export HAVE_SSE2
857 export HAVE_SSE3
858 export HAVE_SSSE3
859 export HAVE_SSE4_1
860 export HAVE_SSE4_2
861 export HAVE_SSE4A
862 export HAVE_SSE5
863 export HAVE_AVX
864 export KERNELDIR
865 export FUNCTION_PROFILE
866 export TARGET_CORE
867
868 export SGEMM_UNROLL_M
869 export SGEMM_UNROLL_N
870 export DGEMM_UNROLL_M
871 export DGEMM_UNROLL_N
872 export QGEMM_UNROLL_M
873 export QGEMM_UNROLL_N
874 export CGEMM_UNROLL_M
875 export CGEMM_UNROLL_N
876 export ZGEMM_UNROLL_M
877 export ZGEMM_UNROLL_N
878 export XGEMM_UNROLL_M
879 export XGEMM_UNROLL_N
880 export CGEMM3M_UNROLL_M
881 export CGEMM3M_UNROLL_N
882 export ZGEMM3M_UNROLL_M
883 export ZGEMM3M_UNROLL_N
884 export XGEMM3M_UNROLL_M
885 export XGEMM3M_UNROLL_N
886
887
888 ifdef USE_CUDA
889 export CUDADIR
890 export CUCC
891 export CUFLAGS
892 export CULIB
893 endif
894
895 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
896
897 .f.$(SUFFIX):
898         $(FC) $(FFLAGS) -c $<  -o $(@F)
899
900 .f.$(PSUFFIX):
901         $(FC) $(FPFLAGS) -pg -c $<  -o $(@F)
902
903
904 ifdef BINARY64
905 PATHSCALEPATH   = /opt/pathscale/lib/3.1
906 PGIPATH         = /opt/pgi/linux86-64/7.1-5/lib
907 else
908 PATHSCALEPATH   = /opt/pathscale/lib/3.1/32
909 PGIPATH         = /opt/pgi/linux86/7.1-5/lib
910 endif
911
912 ACMLPATH        = /opt/acml/4.3.0
913 ifneq ($(OSNAME), Darwin)
914 MKLPATH         = /opt/intel/mkl/10.2.2.025/lib
915 else
916 MKLPATH         = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
917 endif
918 ATLASPATH       = /opt/atlas/3.9.17/opteron
919 FLAMEPATH       = $(HOME)/flame/lib
920 ifneq ($(OSNAME), SunOS)
921 SUNPATH         = /opt/sunstudio12.1
922 else
923 SUNPATH         = /opt/SUNWspro
924 endif
925