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 . +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"