Add Fujitsu compiler
[platform/upstream/openblas.git] / Makefile.x86_64
1 # CCOMMON_OPT   += -DFASTCPU
2
3 ifeq ($(OSNAME), SunOS)
4 ifdef BINARY64
5 ifeq ($(F_COMPILER), SUN)
6 FCOMMON_OPT += -m64
7 endif
8 endif
9 endif
10
11
12 ifneq ($(DYNAMIC_ARCH),1)
13 ADD_CPUFLAGS = 1
14 else
15 ifdef TARGET_CORE
16 ADD_CPUFLAGS = 1
17 endif
18 endif
19
20 ifdef ADD_CPUFLAGS
21 ifdef HAVE_SSE3
22 CCOMMON_OPT += -msse3
23 ifneq ($(F_COMPILER), NAG)
24 FCOMMON_OPT += -msse3
25 endif
26 endif
27 ifdef HAVE_SSSE3
28 CCOMMON_OPT += -mssse3
29 ifneq ($(F_COMPILER), NAG)
30 FCOMMON_OPT += -mssse3
31 endif
32 endif
33 ifdef HAVE_SSE4_1
34 CCOMMON_OPT += -msse4.1
35 ifneq ($(F_COMPILER), NAG)
36 FCOMMON_OPT += -msse4.1
37 endif
38 endif
39 ifndef OLDGCC
40 ifdef HAVE_AVX
41 CCOMMON_OPT += -mavx
42 ifneq ($(F_COMPILER), NAG)
43 FCOMMON_OPT += -mavx
44 endif
45 endif
46 endif
47 ifndef NO_AVX2
48 ifdef HAVE_AVX2
49 CCOMMON_OPT += -mavx2
50 ifneq ($(F_COMPILER), NAG)
51 FCOMMON_OPT += -mavx2
52 endif
53 endif
54 endif
55
56 ifeq ($(CORE), SKYLAKEX)
57 ifndef NO_AVX512
58 CCOMMON_OPT += -march=skylake-avx512
59 ifneq ($(F_COMPILER), NAG)
60 FCOMMON_OPT += -march=skylake-avx512
61 endif
62 ifeq ($(OSNAME), CYGWIN_NT)
63 CCOMMON_OPT += -fno-asynchronous-unwind-tables
64 FCOMMON_OPT += -fno-asynchronous-unwind-tables
65 endif
66 ifeq ($(OSNAME), WINNT)
67 ifeq ($(C_COMPILER), GCC)
68 CCOMMON_OPT += -fno-asynchronous-unwind-tables
69 FCOMMON_OPT += -fno-asynchronous-unwind-tables
70 endif
71 endif
72 endif
73 endif
74
75 ifeq ($(CORE), COOPERLAKE)
76 ifndef NO_AVX512
77 ifeq ($(C_COMPILER), GCC)
78 # cooperlake support was added in 10.1
79 ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
80 CCOMMON_OPT += -march=cooperlake
81 ifneq ($(F_COMPILER), NAG)
82 FCOMMON_OPT += -march=cooperlake
83 endif
84 else  # gcc not support, fallback to avx512
85 CCOMMON_OPT += -march=skylake-avx512
86 ifneq ($(F_COMPILER), NAG)
87 FCOMMON_OPT += -march=skylake-avx512
88 endif
89 endif
90 endif
91 ifeq ($(OSNAME), CYGWIN_NT)
92 CCOMMON_OPT += -fno-asynchronous-unwind-tables
93 FCOMMON_OPT += -fno-asynchronous-unwind-tables
94 endif
95 ifeq ($(OSNAME), WINNT)
96 ifeq ($(C_COMPILER), GCC)
97 CCOMMON_OPT += -fno-asynchronous-unwind-tables
98 FCOMMON_OPT += -fno-asynchronous-unwind-tables
99 endif
100 endif
101 endif
102 endif
103
104 ifeq ($(CORE), SAPPHIRERAPIDS)
105 ifndef NO_AVX512
106 ifeq ($(C_COMPILER), GCC)
107 # sapphire rapids support was added in 11
108 ifeq ($(GCCVERSIONGTEQ11), 1)
109 CCOMMON_OPT += -march=sapphirerapids
110 ifneq ($(F_COMPILER), NAG)
111 FCOMMON_OPT += -march=sapphirerapids
112 endif
113 else  # gcc not support, fallback to avx512
114 CCOMMON_OPT += -march=skylake-avx512
115 ifneq ($(F_COMPILER), NAG)
116 FCOMMON_OPT += -march=skylake-avx512
117 endif
118 endif
119 endif
120 ifeq ($(OSNAME), CYGWIN_NT)
121 CCOMMON_OPT += -fno-asynchronous-unwind-tables
122 FCOMMON_OPT += -fno-asynchronous-unwind-tables
123 endif
124 ifeq ($(OSNAME), WINNT)
125 ifeq ($(C_COMPILER), GCC)
126 CCOMMON_OPT += -fno-asynchronous-unwind-tables
127 FCOMMON_OPT += -fno-asynchronous-unwind-tables
128 endif
129 endif
130 endif
131 endif
132
133 ifdef HAVE_AVX2
134 ifndef NO_AVX2
135 ifeq ($(C_COMPILER), GCC)
136 # AVX2 support was added in 4.7.0
137 GCCVERSIONCHECK := $(GCCVERSIONGT4)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
138 ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
139 CCOMMON_OPT += -mavx2
140 endif
141 else 
142 ifeq ($(C_COMPILER), CLANG)
143 CCOMMON_OPT += -mavx2
144 endif
145 endif
146 ifeq ($(F_COMPILER), GFORTRAN)
147 # AVX2 support was added in 4.7.0
148 GCCVERSIONGTEQ4 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 4)
149 GCCVERSIONGTEQ5 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 5)
150 GCCMINORVERSIONGTEQ7 := $(shell expr `$(FC) -dumpversion | cut -f2 -d.` \>= 7)
151 GCCVERSIONCHECK := $(GCCVERSIONGTEQ5)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
152 ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
153 FCOMMON_OPT += -mavx2
154 endif
155 else
156 ifeq ($(F_COMPILER), FLANG)
157 FCOMMON_OPT += -mavx2
158 endif
159 endif
160 endif
161 endif
162
163 endif
164
165
166 ifeq ($(OSNAME), Interix)
167 ARFLAGS         = -m x64
168 endif
169
170 ifeq ($(OSNAME), Darwin)
171 ifndef SMP
172 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm
173 else
174 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread -lm
175 endif
176 else
177 ifndef SMP
178 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lguide -lpthread -lm
179 else
180 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lguide -lpthread -lm
181 endif
182 endif
183
184
185 ifndef SMP
186 LIBATLAS        = -L$(ATLASPATH)64 -llapack -lcblas -lf77blas -latlas -lm
187 else
188 LIBATLAS        = -L$(ATLASPATH)64 -llapack -lptcblas -lptf77blas -latlas -lpthread -lm
189 endif
190
191 LIBFLAME        = -L$(FLAMEPATH) -llapack2flame -lflame $(TOPDIR)/$(LIBNAME) -lgfortran -lpthread -lm
192
193
194 ifeq ($(F_COMPILER), g77)
195 LIBACML         = -L$(ACMLPATH)/gnu64/lib -Wl,-rpath,$(ACMLPATH)/gnu64/lib -lacml -lacml_mv -lg2c -lm
196 endif
197
198 ifeq ($(F_COMPILER), GFORTRAN)
199 ifndef SMP
200 LIBACML         = -L$(ACMLPATH)/gfortran64/lib -Wl,-rpath,$(ACMLPATH)/gfortran64/lib -lacml -lacml_mv -lgfortran -lm
201 else
202 LIBACML         = -L$(ACMLPATH)/gfortran64_mp/lib -Wl,-rpath,$(ACMLPATH)/gfortran64_mp/lib -lacml_mp -lacml_mv -lgfortran -lgomp -lm
203 endif
204 endif
205
206 ifeq ($(F_COMPILER), INTEL)
207 ifndef SMP
208 LIBACML         = -L$(ACMLPATH)/ifort64/lib -Wl,-rpath,$(ACMLPATH)/ifort64/lib -lacml -lacml_mv -lifcoremt_pic -lirc -lm -lpthread -ldl
209 else
210 LIBACML         = -L$(ACMLPATH)/ifort64_mp/lib -Wl,-rpath,$(ACMLPATH)/ifort64_mp/lib -lacml_mp -lacml_mv -lifcoremt_pic -liomp5 -lirc -lm -lpthread -ldl
211 endif
212 endif
213
214 ifeq ($(F_COMPILER), OPEN64)
215 ifndef SMP
216 LIBACML         = -L$(ACMLPATH)/open64/lib -Wl,-rpath,$(ACMLPATH)/open64/lib -lacml -lacml_mv -lm
217 else
218 LIBACML         = -L$(ACMLPATH)/open64_mp/lib -Wl,-rpath,$(ACMLPATH)/open64_mp/lib -lacml_mp -lacml_mv -lm -lpthread
219 endif
220 endif
221
222 ifeq ($(F_COMPILER), pgf77)
223 ifndef SMP
224 LIBACML         = -L$(ACMLPATH)/pgi64/lib    -Wl,-rpath,$(ACMLPATH)/pgi64/lib    -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
225 else
226 LIBACML         = -L$(ACMLPATH)/pgi64_mp/lib -Wl,-rpath,$(ACMLPATH)/pgi64_mp/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
227 endif
228 endif
229
230 ifeq ($(F_COMPILER), PATHSCALE)
231 ifndef SMP
232 LIBACML         = -L$(ACMLPATH)/pathscale64/lib -Wl,-rpath,$(ACMLPATH)/pathscale64/lib -lacml -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lpathfortran -lm
233 else
234 LIBACML         = -L$(ACMLPATH)/pathscale64_mp/lib -Wl,-rpath,$(ACMLPATH)/pathscale64_mp/lib -lacml_mp -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lopenmp -lpathfortran -lm
235 endif
236 endif
237
238 ifeq ($(F_COMPILER), f90)
239 LIBACML         = -L$(ACMLPATH)/sun64/lib -Wl,-R,$(ACMLPATH)/sun64/lib -L$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -lacml -lacml_mv -lfsu
240 endif
241
242 LIBSUNPERF      = -L$(SUNPATH)/lib/amd64 -L$(SUNPATH)/rtlibs/amd64 -Wl,-R,$(SUNPATH)/lib/amd64  -Wl,-R,$(SUNPATH)/rtlibs/amd64 -lsunperf -lfui -lfsu -lmtsk
243
244 LIBVECLIB       = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib