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