1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
diff -u -p --recursive -N a/sextractor-2.19.5/acx_mkl_gcc.m4 b/sextractor-2.19.5/acx_mkl_gcc.m4
--- a/sextractor-2.19.5/acx_mkl_gcc.m4 1969-12-31 19:00:00.000000000 -0500
+++ b/sextractor-2.19.5/acx_mkl_gcc.m4 2017-12-30 17:54:54.000000000 -0500
@@ -0,0 +1,210 @@
+dnl
+dnl acx_mkl_gcc.m4
+dnl
+dnl Set up options for using the INTEL MKL library.
+dnl
+dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+dnl
+dnl This file part of: AstrOmatic software
+dnl
+dnl Copyright: (C) 2003-2013 Emmanuel Bertin -- IAP/CNRS/UPMC
+dnl
+dnl License: GNU General Public License
+dnl
+dnl AstrOmatic software is free software: you can redistribute it and/or
+dnl modify it under the terms of the GNU General Public License as
+dnl published by the Free Software Foundation, either version 3 of the
+dnl License, or (at your option) any later version.
+dnl AstrOmatic software is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl You should have received a copy of the GNU General Public License
+dnl along with AstrOmatic software.
+dnl If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl Last modified: 17/04/2013
+dnl
+dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+dnl
+dnl @synopsis ACX_MKL_GCC([MKL_DIR, ILP64_FLAG, STATIC_FLAG, CONV_LIBS])
+dnl
+dnl This macro sets the MKL_CFLAGS, MKL_LDFLAGS and MKL_LIBS variables to
+dnl for compiling and linking with INTEL's MKL. A coma-separated list of
+dnl convenience libraries may be included in the linked group for static linking.
+dnl You may wish to use these variables in your default CFLAGS:
+dnl
+dnl CFLAGS="$CFLAGS $MKL_CFLAGS"
+dnl
+dnl You may wish to use these variables in your default LDFLAGS:
+dnl
+dnl LDFLAGS="$LDFLAGS $MKL_LDLAGS"
+dnl
+dnl You may wish to use these variables in your default LIBS:
+dnl
+dnl LIBS="$LIBS $MKL_LIBS"
+dnl
+
+AC_DEFUN([ACX_MKL_GCC], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+
+dnl ------------------------
+dnl Set MKL's root directory
+dnl ------------------------
+
+if test x$1 = x; then
+ mklroot=${MKLROOT}
+else
+ mklroot=$1
+fi
+
+dnl -----------------------------
+dnl Include convenience libraries
+dnl -----------------------------
+
+if test x$4 = x; then
+ startgroup="-Wl,--start-group"
+else
+ startgroup="-Wl,--start-group,$4"
+fi
+
+dnl ----------------------
+dnl Set architecture flags
+dnl ----------------------
+
+dnl check if GCC (or clang... it doesn't matter here) compiler is present
+gcc --version 2>&1 | egrep -i "gcc|clang" > /dev/null 2>&1 && flaggcc=yes
+
+# Meh.
+flag64=yes
+
+dnl check if the platform is OSX
+sw_vers 2>&1 | grep -i "ProductVersion" > /dev/null 2>&1 && flagosx=yes
+
+dnl ----------------------
+dnl Exit if INTEL compiler is not found
+dnl ----------------------
+if test x$flaggcc = x; then
+ AC_SUBST(MKL_CFLAGS, "")
+ AC_SUBST(MKL_LDFLAGS, "")
+ AC_SUBST(MKL_LIBS, "")
+ MKL_WARN="GCC compiler not detected"
+ AC_SUBST(MKL_WARN)
+ exit
+fi
+
+if test x$flagosx = xyes; then
+dnl MacOSX
+ if test x$flag64 = xyes; then
+dnl INTEL compiler uses Intel64 architecture
+ if test x$2 = xyes; then
+dnl 64 bit pointers
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -DMKL_ILP64 -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS, ["$mklroot/lib/libmkl_intel_ilp64.a \
+ $mklroot/lib/libmkl_intel_thread.a \
+ $mklroot/lib/libmkl_core.a -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib -lmkl_intel_ilp64 \
+ -lmkl_intel_thread -lmkl_core -lpthread -lm")
+ fi
+ else
+dnl 32 bit pointers
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS, ["$mklroot/lib/libmkl_intel_lp64.a \
+ $mklroot/lib/libmkl_intel_thread.a \
+ $mklroot/lib/libmkl_core.a -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib -lmkl_intel_lp64 \
+ -lmkl_intel_thread -lmkl_core -lpthread -lm")
+ fi
+ fi
+ else
+dnl INTEL compiler uses IA32 architecture
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS, ["$mklroot/lib/libmkl_intel.a \
+ $mklroot/lib/libmkl_intel_thread.a \
+ $mklroot/lib/libmkl_core.a -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib -lmkl_intel -lmkl_intel_thread \
+ -lmkl_core -lpthread -lm")
+ fi
+ fi
+else
+dnl Linux
+ if test x$flag64 = xyes; then
+dnl INTEL compiler uses Intel64 architecture
+ if test x$2 = xyes; then
+dnl 64 bit pointers
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -DMKL_ILP64 -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS,
+ ["$startgroup,$mklroot/lib/intel64/libmkl_intel_ilp64.a,\
+$mklroot/lib/intel64/libmkl_intel_thread.a,\
+$mklroot/lib/intel64/libmkl_core.a,-end-group -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib/intel64 -lmkl_intel_ilp64 \
+ -lmkl_intel_thread -lmkl_core -lpthread -lm")
+ fi
+ else
+dnl 32 bit pointers
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS,
+ ["$startgroup,$mklroot/lib/intel64/libmkl_intel_lp64.a,\
+$mklroot/lib/intel64/libmkl_intel_thread.a,\
+$mklroot/lib/intel64/libmkl_core.a,--end-group -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib/intel64 -lmkl_intel_lp64 \
+ -lmkl_intel_thread -lmkl_core -lpthread -lm")
+ fi
+ fi
+ else
+dnl INTEL compiler uses IA32 architecture
+ AC_SUBST(MKL_CFLAGS, "-fopenmp -I$mklroot/include")
+ if test x$3 = xyes; then
+dnl Static linking
+ AC_SUBST(MKL_LIBS, ["$startgroup,$mklroot/lib/ia32/libmkl_intel.a,\
+$mklroot/lib/ia32/libmkl_intel_thread.a,\
+$mklroot/lib/ia32/libmkl_core.a,--end-group -lpthread -lm"])
+ else
+dnl Dynamic linking
+ AC_SUBST(MKL_LIBS, "-L$mklroot/lib/ia32 -lmkl_intel -lmkl_intel_thread \
+ -lmkl_core -lpthread -lm")
+ fi
+ fi
+fi
+
+AC_SUBST(MKL_LDFLAGS, "")
+
+dnl --------------------
+dnl Set internal flags
+dnl --------------------
+
+AC_DEFINE(HAVE_MKL,1, [Define if you have the MKL libraries.])
+AC_DEFINE(HAVE_FFTW,1, [Define if you have the FFTW libraries.])
+AC_DEFINE(HAVE_LAPACK,1, [Define if you have the LAPACK libraries.])
+AC_DEFINE(HAVE_LAPACKE,1, [Define if you have the LAPACKe libraries.])
+
+dnl --------------------
+dnl Set include files
+dnl --------------------
+
+AC_DEFINE_UNQUOTED(MKL_H, "mkl.h", [MKL header filename.])
+AC_DEFINE_UNQUOTED(FFTW_H, "fftw/fftw3_mkl.h", [FFTW header filename.])
+AC_DEFINE_UNQUOTED(LAPACK_H, "mkl_lapack.h", [LAPACK header filename.])
+AC_DEFINE_UNQUOTED(LAPACKE_H, "mkl_lapacke.h", [LAPACKe header filename.])
+
+])dnl ACX_MKL_GCC
diff -u -p --recursive -N a/sextractor-2.19.5/configure.ac b/sextractor-2.19.5/configure.ac
--- a/sextractor-2.19.5/configure.ac 2013-12-14 12:12:32.000000000 -0500
+++ b/sextractor-2.19.5/configure.ac 2017-12-30 16:37:44.000000000 -0500
@@ -48,6 +48,7 @@ AC_SUBST(DATE3, "$date3")
sinclude(acx_atlas.m4)
sinclude(acx_fftw.m4)
sinclude(acx_mkl.m4)
+sinclude(acx_mkl_gcc.m4)
sinclude(acx_prog_cc_optim.m4)
sinclude(acx_pthread.m4)
sinclude(acx_urbi_resolve_dir.m4)
@@ -79,12 +80,21 @@ AC_ARG_ENABLE(icc,
AC_MSG_CHECKING([whether we should use INTEL's MKL])
AC_ARG_ENABLE(mkl,
[AS_HELP_STRING([--enable-mkl],
- [Use INTEL's MKL for solvers and FFTs (off by default)])],
+ [Use INTEL MKL for solvers and FFTs (off by default)])],
enable_icc="yes"
CC="icc"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
+AC_MSG_CHECKING([whether we should use INTEL MKL with gcc])
+AC_ARG_ENABLE(mkl_gcc,
+ [AS_HELP_STRING([--enable-mkl-gcc],
+ [Use INTEL MKL for solvers and FFTs (off by default)])],
+ enable_mkl_gcc="yes"
+ CC="gcc"
+ AC_MSG_RESULT([yes]),
+ AC_MSG_RESULT([no]))
+
# Checks for programs.
AC_LANG(C)
@@ -105,7 +115,7 @@ AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h limits.h malloc.h stdlib.h string.h sys/mman.h \
sys/types.h unistd.h])
# Checks for INTEL math header files.
-if test x$enable_icc = xyes; then
+if test x$enable_icc = xyes || test x$enable_mkl_gcc = xyes; then
AC_CHECK_HEADERS(mathimf.h)
fi
@@ -226,9 +236,14 @@ AM_CONDITIONAL(USE_THREADS, [test x$use_
if test x$enable_model_fitting != xno; then
AC_DEFINE(USE_MODEL, 1, [Triggers model-fitting])
############ handle the INTEL MKL library (FFTW + LAPACK) ###########
- if test x$enable_mkl = xyes; then
+ if test x$enable_mkl = xyes || test x$enable_mkl_gcc = xyes; then
convlibs="${srcdir}/wcs/libwcs_c.a,${srcdir}/levmar/liblevmar.a"
- ACX_MKL($with_mkl_dir,,$enable_best_link,$convlibs)
+ if test x$enable_mkl_gcc = xyes; then
+ ACX_MKL_GCC($with_mkl_dir,,$enable_best_link,$convlibs)
+ else
+ ACX_MKL($with_mkl_dir,,$enable_best_link,$convlibs)
+ fi
+
if test x$MKL_WARN != x; then
AC_MSG_WARN([$MKL_WARN])
fi
@@ -256,7 +271,7 @@ AM_CONDITIONAL(USE_MODEL, [test x$enable
# Compile with profiling option
if test x$enable_profiling = xyes; then
- if test x$enable_icc = xyes; then
+ if test x$enable_icc = xyes || test x$enable_mkl_gcc = xyes; then
AM_CFLAGS="$AM_CFLAGS -pq"
else
AM_CFLAGS="$AM_CFLAGS -pg"
|