Merge branch 'develop' into msvc
[platform/upstream/openblas.git] / Makefile.power
1
2 ifdef USE_THREAD
3 ifeq ($(USE_THREAD), 0)
4 USE_OPENMP = 0
5 else
6 USE_OPENMP = 1
7 endif
8 else
9 USE_OPENMP = 1
10 endif
11
12 ifeq ($(CORE), POWER10)
13 ifneq ($(C_COMPILER), PGI)
14 CCOMMON_OPT += -Ofast -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math
15 FCOMMON_OPT += -O2 -frecursive -mcpu=power10 -mtune=power10  -fno-fast-math
16 endif
17 endif
18
19 ifeq ($(CORE), POWER9)
20 ifneq ($(C_COMPILER), PGI)
21 CCOMMON_OPT += -Ofast -mvsx -fno-fast-math
22 ifeq ($(C_COMPILER), GCC)
23 ifneq ($(GCCVERSIONGT4), 1)
24 $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended)
25 CCOMMON_OPT += -mcpu=power8 -mtune=power8 
26 else
27 CCOMMON_OPT += -mcpu=power9 -mtune=power9 
28 endif
29 else
30 CCOMMON_OPT += -mcpu=power9 -mtune=power9
31 endif
32 else
33 CCOMMON_OPT += -fast -Mvect=simd -Mcache_align
34 endif
35 ifneq ($(F_COMPILER), PGI)
36 FCOMMON_OPT += -O2 -frecursive -fno-fast-math
37 ifeq ($(C_COMPILER), GCC)
38 ifneq ($(GCCVERSIONGT4), 1)
39 $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended)
40 FCOMMON_OPT += -mcpu=power8 -mtune=power8 
41 else
42 FCOMMON_OPT += -mcpu=power9 -mtune=power9 
43 endif
44 else
45 FCOMMON_OPT += -mcpu=power9 -mtune=power9
46 endif
47 else
48 FCOMMON_OPT += -O2 -Mrecursive
49 endif
50 endif
51
52 ifeq ($(CORE), POWER8)
53 ifneq ($(C_COMPILER), PGI)
54 CCOMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx  -fno-fast-math
55 else
56 CCOMMON_OPT += -fast -Mvect=simd -Mcache_align
57 endif
58 ifneq ($(F_COMPILER), PGI)
59 ifeq ($(OSNAME), AIX)
60 FCOMMON_OPT += -O1 -frecursive -mcpu=power8 -mtune=power8  -fno-fast-math 
61 else
62 FCOMMON_OPT += -O2 -frecursive -mcpu=power8 -mtune=power8  -fno-fast-math 
63 endif
64 else
65 FCOMMON_OPT += -O2 -Mrecursive
66 endif
67 endif
68
69 ifeq ($(USE_OPENMP), 1)
70 ifneq ($(C_COMPILER), PGI)
71 CCOMMON_OPT += -DUSE_OPENMP -fopenmp
72 else
73 CCOMMON_OPT += -DUSE_OPENMP -mp
74 endif
75 ifneq ($(F_COMPILER), PGI)
76 FCOMMON_OPT += -DUSE_OPENMP -fopenmp
77 else
78 FCOMMON_OPT += -DUSE_OPENMP -mp
79 endif
80 endif
81
82 # workaround for C->FORTRAN ABI violation in LAPACKE
83 ifeq ($(F_COMPILER), GFORTRAN)
84 FCOMMON_OPT += -fno-optimize-sibling-calls
85 endif
86
87 FLAMEPATH       = $(HOME)/flame/lib
88
89 #ifeq ($(CORE), CELL)
90 #CELL_SDK_ROOT = /opt/IBM/cell-sdk-1.1/sysroot/usr
91 #SPU_CC          = spu-gcc
92 #EXTRALIB       += -lspe
93 #endif
94
95 ifeq ($(OSNAME), Linux)
96 ifdef BINARY64
97 # COMPILER_PREFIX = powerpc64-linux-
98 else
99 # COMPILER_PREFIX = powerpc-linux-
100 endif
101 endif
102
103 #Either uncomment below line or run make with `USE_MASS=1` to enable support of MASS library
104 #USE_MASS = 1
105
106 ifeq ($(USE_MASS), 1)
107 # Path to MASS libs, change it if the libs are installed at any other location
108 MASSPATH        = /opt/ibm/xlmass/8.1.5/lib
109 COMMON_OPT     += -mveclibabi=mass -ftree-vectorize -funsafe-math-optimizations -DUSE_MASS
110 EXTRALIB       += -L$(MASSPATH) -lmass -lmassvp8 -lmass_simdp8
111 endif
112
113 ifdef BINARY64
114
115
116 ifeq ($(OSNAME), AIX)
117 CCOMMON_OPT     += -mpowerpc64 -maix64
118 ifeq ($(COMPILER_F77), g77)
119 FCOMMON_OPT     += -mpowerpc64 -maix64
120 endif
121 ifeq ($(F_COMPILER), GFORTRAN)
122 FCOMMON_OPT     += -mpowerpc64 -maix64
123 endif
124 ifeq ($(COMPILER_F77), xlf)
125 FCOMMON_OPT     += -q64
126 endif
127 ARFLAGS         = -X 64
128 ASFLAGS         = -a64
129 endif
130 else
131 ifeq ($(OSNAME), AIX)
132 CCOMMON_OPT     += -Wa,-a32
133 ARFLAGS         = -X 32
134 ASFLAGS         = -a32
135 endif
136 endif
137
138 # CCOMMON_OPT   += -maltivec -mabi=altivec
139
140 LIBFLAME        = -L$(FLAMEPATH) -llapack2flame -lflame-lapack -lflame-base $(LIBS)
141
142 ifeq ($(OSNAME), Darwin)
143 CCOMMON_OPT     += -force_cpusubtype_ALL
144 endif
145
146
147 ifndef BINARY64
148 ifeq ($(OSNAME), Linux)
149 ESSLPATH = -L/opt/ibmcmp/lib -L/opt/ibmcmp/xlf/11.1/lib -Wl,-rpath,/opt/ibmcmp/lib -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib -lxlf90_r -lxlomp_ser -lxlfmath -lxl -lpthread
150 else
151 ESSLPATH = -lxlf90_r
152 endif
153
154
155 LIBVECLIB       = -framework VecLib
156 ifndef SMP
157 LIBATLAS        = -L/usr/lib/atlas3.7.11 -lf77blas -latlas -lg2c -lm
158 LIBESSL         = -lessl $(ESSLPATH) ../../level1/others/libmisc.a -lm
159 else
160 LIBATLAS        = -L/usr/lib/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
161 LIBESSL         = -lesslsmp $(ESSLPATH)  ../../level1/others/libmisc.a -lm
162 endif
163 else
164 ifeq ($(OSNAME), Linux)
165 ESSLPATH = -L/opt/ibmcmp/lib64 -Wl,-rpath,/opt/ibmcmp/lib64 -L/opt/ibmcmp/xlf/11.1/lib64 -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib64 -lxlf90_r -lxlomp_ser
166 else
167 ESSLPATH = -lxlf90_r
168 endif
169
170 LIBVECLIB       = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib
171
172 ifndef SMP
173 LIBATLAS        = -L/usr/lib64/atlas3.7.11  -lf77blas -latlas -lg2c -lm
174 LIBESSL         = -lessl $(ESSLPATH) -lm
175 else
176 LIBATLAS        = -L/usr/lib64/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
177 LIBESSL         = -lesslsmp $(ESSLPATH) -lxlsmp -lm
178 endif
179 endif