Merge pull request #3016 from xiegengxin/complex-asum
[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 ifdef HAVE_SSE3
12 CCOMMON_OPT += -msse3
13 FCOMMON_OPT += -msse3
14 endif
15 ifdef HAVE_SSSE3
16 CCOMMON_OPT += -mssse3
17 FCOMMON_OPT += -mssse3
18 endif
19 ifdef HAVE_SSE4_1
20 CCOMMON_OPT += -msse4.1
21 FCOMMON_OPT += -msse4.1
22 endif
23 ifndef OLDGCC
24 ifdef HAVE_AVX
25 CCOMMON_OPT += -mavx
26 FCOMMON_OPT += -mavx
27 endif
28 endif
29 ifndef NO_AVX2
30 ifdef HAVE_AVX2
31 CCOMMON_OPT += -mavx2
32 FCOMMON_OPT += -mavx2
33 endif
34 endif
35 ifndef OLDGCC
36 ifdef HAVE_FMA3
37 CCOMMON_OPT += -mfma
38 FCOMMON_OPT += -mfma
39 endif
40 endif
41
42 ifeq ($(CORE), SKYLAKEX)
43 ifndef DYNAMIC_ARCH
44 ifndef NO_AVX512
45 CCOMMON_OPT += -march=skylake-avx512
46 FCOMMON_OPT += -march=skylake-avx512
47 ifeq ($(OSNAME), CYGWIN_NT)
48 CCOMMON_OPT += -fno-asynchronous-unwind-tables
49 FCOMMON_OPT += -fno-asynchronous-unwind-tables
50 endif
51 ifeq ($(OSNAME), WINNT)
52 ifeq ($(C_COMPILER), GCC)
53 CCOMMON_OPT += -fno-asynchronous-unwind-tables
54 FCOMMON_OPT += -fno-asynchronous-unwind-tables
55 endif
56 endif
57 endif
58 endif
59 endif
60
61 ifeq ($(CORE), COOPERLAKE)
62 ifndef DYNAMIC_ARCH
63 ifndef NO_AVX512
64 ifeq ($(C_COMPILER), GCC)
65 # cooperlake support was added in 10.1
66 ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
67 CCOMMON_OPT += -march=cooperlake
68 FCOMMON_OPT += -march=cooperlake
69 endif
70 endif
71 ifeq ($(OSNAME), CYGWIN_NT)
72 CCOMMON_OPT += -fno-asynchronous-unwind-tables
73 FCOMMON_OPT += -fno-asynchronous-unwind-tables
74 endif
75 ifeq ($(OSNAME), WINNT)
76 ifeq ($(C_COMPILER), GCC)
77 CCOMMON_OPT += -fno-asynchronous-unwind-tables
78 FCOMMON_OPT += -fno-asynchronous-unwind-tables
79 endif
80 endif
81 endif
82 endif
83 endif
84
85 ifdef HAVE_AVX2
86 ifndef NO_AVX2
87 ifeq ($(C_COMPILER), GCC)
88 # AVX2 support was added in 4.7.0
89 GCCVERSIONCHECK := $(GCCVERSIONGT4)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
90 ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
91 CCOMMON_OPT += -mavx2
92 endif
93 else 
94 ifeq ($(C_COMPILER), CLANG)
95 CCOMMON_OPT += -mavx2
96 endif
97 endif
98 ifeq ($(F_COMPILER), GFORTRAN)
99 # AVX2 support was added in 4.7.0
100 GCCVERSIONGTEQ4 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 4)
101 GCCVERSIONGTEQ5 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 5)
102 GCCMINORVERSIONGTEQ7 := $(shell expr `$(FC) -dumpversion | cut -f2 -d.` \>= 7)
103 GCCVERSIONCHECK := $(GCCVERSIONGTEQ5)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
104 ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
105 FCOMMON_OPT += -mavx2
106 endif
107 else
108 ifeq ($(F_COMPILER), FLANG)
109 FCOMMON_OPT += -mavx2
110 endif
111 endif
112 endif
113 endif
114
115
116
117 ifeq ($(OSNAME), Interix)
118 ARFLAGS         = -m x64
119 endif
120
121 ifeq ($(OSNAME), Darwin)
122 ifndef SMP
123 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm
124 else
125 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread -lm
126 endif
127 else
128 ifndef SMP
129 LIBMKL          = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lguide -lpthread -lm
130 else
131 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
132 endif
133 endif
134
135
136 ifndef SMP
137 LIBATLAS        = -L$(ATLASPATH)64 -llapack -lcblas -lf77blas -latlas -lm
138 else
139 LIBATLAS        = -L$(ATLASPATH)64 -llapack -lptcblas -lptf77blas -latlas -lpthread -lm
140 endif
141
142 LIBFLAME        = -L$(FLAMEPATH) -llapack2flame -lflame $(TOPDIR)/$(LIBNAME) -lgfortran -lpthread -lm
143
144
145 ifeq ($(F_COMPILER), g77)
146 LIBACML         = -L$(ACMLPATH)/gnu64/lib -Wl,-rpath,$(ACMLPATH)/gnu64/lib -lacml -lacml_mv -lg2c -lm
147 endif
148
149 ifeq ($(F_COMPILER), GFORTRAN)
150 ifndef SMP
151 LIBACML         = -L$(ACMLPATH)/gfortran64/lib -Wl,-rpath,$(ACMLPATH)/gfortran64/lib -lacml -lacml_mv -lgfortran -lm
152 else
153 LIBACML         = -L$(ACMLPATH)/gfortran64_mp/lib -Wl,-rpath,$(ACMLPATH)/gfortran64_mp/lib -lacml_mp -lacml_mv -lgfortran -lgomp -lm
154 endif
155 endif
156
157 ifeq ($(F_COMPILER), INTEL)
158 ifndef SMP
159 LIBACML         = -L$(ACMLPATH)/ifort64/lib -Wl,-rpath,$(ACMLPATH)/ifort64/lib -lacml -lacml_mv -lifcoremt_pic -lirc -lm -lpthread -ldl
160 else
161 LIBACML         = -L$(ACMLPATH)/ifort64_mp/lib -Wl,-rpath,$(ACMLPATH)/ifort64_mp/lib -lacml_mp -lacml_mv -lifcoremt_pic -liomp5 -lirc -lm -lpthread -ldl
162 endif
163 endif
164
165 ifeq ($(F_COMPILER), OPEN64)
166 ifndef SMP
167 LIBACML         = -L$(ACMLPATH)/open64/lib -Wl,-rpath,$(ACMLPATH)/open64/lib -lacml -lacml_mv -lm
168 else
169 LIBACML         = -L$(ACMLPATH)/open64_mp/lib -Wl,-rpath,$(ACMLPATH)/open64_mp/lib -lacml_mp -lacml_mv -lm -lpthread
170 endif
171 endif
172
173 ifeq ($(F_COMPILER), pgf77)
174 ifndef SMP
175 LIBACML         = -L$(ACMLPATH)/pgi64/lib    -Wl,-rpath,$(ACMLPATH)/pgi64/lib    -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
176 else
177 LIBACML         = -L$(ACMLPATH)/pgi64_mp/lib -Wl,-rpath,$(ACMLPATH)/pgi64_mp/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
178 endif
179 endif
180
181 ifeq ($(F_COMPILER), PATHSCALE)
182 ifndef SMP
183 LIBACML         = -L$(ACMLPATH)/pathscale64/lib -Wl,-rpath,$(ACMLPATH)/pathscale64/lib -lacml -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lpathfortran -lm
184 else
185 LIBACML         = -L$(ACMLPATH)/pathscale64_mp/lib -Wl,-rpath,$(ACMLPATH)/pathscale64_mp/lib -lacml_mp -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lopenmp -lpathfortran -lm
186 endif
187 endif
188
189 ifeq ($(F_COMPILER), f90)
190 LIBACML         = -L$(ACMLPATH)/sun64/lib -Wl,-R,$(ACMLPATH)/sun64/lib -L$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -lacml -lacml_mv -lfsu
191 endif
192
193 LIBSUNPERF      = -L$(SUNPATH)/lib/amd64 -L$(SUNPATH)/rtlibs/amd64 -Wl,-R,$(SUNPATH)/lib/amd64  -Wl,-R,$(SUNPATH)/rtlibs/amd64 -lsunperf -lfui -lfsu -lmtsk
194
195 LIBVECLIB       = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib