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