#
# configure.ac
#
# Process this file with autoconf to generate a configure script.
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#
# This file part of: SExtractor
#
# Copyright: (C) 2002-2022 IAP/CNRS/SorbonneU
#
# License: GNU General Public License
#
# SExtractor is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# SExtractor is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with SExtractor. If not, see .
#
# Last modified: 16/09/2022
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# First, disable the annoying config.cache
define([AC_CACHE_LOAD],)
define([AC_CACHE_SAVE],)
# This is your standard AstrOmatic source code...
AC_INIT([SExtractor],[2.27.0],[astromatic@astromatic.iap.fr],
[sextractor],[http://astromatic.net/software/sextractor])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR(autoconf)
AC_CONFIG_SRCDIR(src/makeit.c)
AC_CONFIG_HEADERS(config.h)
AM_INIT_AUTOMAKE
date=`date +%Y-%m-%d`
date1=`date -R`
date2=`date +"%a %b %d %Y"`
date3=`date +"%B %Y"`
AC_DEFINE_UNQUOTED(DATE, "$date", [Archive creation date])
AC_SUBST(PACKAGER, "AstrOmatic")
AC_SUBST(DATE1, "$date1")
AC_SUBST(DATE2, "$date2")
AC_SUBST(DATE3, "$date3")
# Include macros
sinclude(acx_atlas.m4)
sinclude(acx_openblas.m4)
sinclude(acx_fftw.m4)
sinclude(acx_mkl.m4)
sinclude(acx_cfitsio.m4)
sinclude(acx_prog_cc_optim.m4)
sinclude(acx_pthread.m4)
sinclude(acx_urbi_resolve_dir.m4)
# Provide a special option for setting the package release number
AC_ARG_WITH(release,
[AS_HELP_STRING([--with-release=],
[set the package release number (default = 1)])],
[],
[with_release="no"])
if test "$with_release" = "no"; then
with_release=1
fi
AC_SUBST(PACKAGE_RELEASE, "$with_release")
# Display pakage and version number
AC_MSG_RESULT([******** Configuring: $PACKAGE_NAME $PACKAGE_VERSION - $PACKAGE_RELEASE ($date) ********])
# Provide special option for choosing automatically the compilation flags.
AC_MSG_CHECKING([if compilation flags are set automatically])
AC_ARG_ENABLE(auto-flags,
[AS_HELP_STRING([--enable-auto-flags],
[Let the configure script choose the compilation flags (default = no)])],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special option for the Linux Intel C "classic" compiler
AC_MSG_CHECKING([whether the classic INTEL compiler is enabled])
AC_ARG_ENABLE(icc,
[AS_HELP_STRING([--enable-icc],
[Use the Intel compiler (default = no)])],
CC="icc"
enable_iccx="yes"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special option for the Linux Intel OneAPI C compiler
AC_MSG_CHECKING([whether the INTEL compiler is enabled])
AC_ARG_ENABLE(icx,
[AS_HELP_STRING([--enable-icx],
[Use the Intel compiler (default = no)])],
CC="icx"
enable_iccx="yes"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special options for INTEL MKL
# We use icc if available, if not Intel OneAPI's icx
# (we don't use AC_PROG_CC as it does not play nice
# in a conditional block)
AC_MSG_CHECKING([whether INTEL's MKL is enabled])
AC_ARG_ENABLE(mkl,
[AS_HELP_STRING([--enable-mkl],
[Use INTEL's MKL for solvers and FFTs (default = no)])],
AC_MSG_RESULT([yes])
CC=""
[AC_CHECK_PROGS(CC, [icc icx cc])]
enable_iccx="yes",
AC_MSG_RESULT([no]))
# Checks for programs.
AC_LANG(C)
AC_SEARCH_LIBS([strerror],[cposix])
if test "$enable_auto_flags" = "yes"; then
CFLAGS=""
LDFLAGS=""
ACX_PROG_CC_OPTIM
fi
LT_INIT
AC_PROG_INSTALL
# Checks for libraries.
AC_CHECK_LIB(m, sin)
# Checks for header files.
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 "$enable_iccx" = "yes"; then
AC_CHECK_HEADERS(mathimf.h)
fi
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_TYPE_LONG_LONG_INT
AC_TYPE_UNSIGNED_LONG_LONG_INT
AC_STRUCT_TM
AC_TYPE_UID_T
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MMAP
AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_CHECK_FUNCS([atexit getenv gettimeofday isinf isnan logf memcpy memmove \
memset mkdir munmap posix_memalign setlinebuf sincosf strstr sysconf])
# Check support for large files
AC_SYS_LARGEFILE
AC_FUNC_FSEEKO
# Provide special options for ATLAS
AC_ARG_WITH(atlas-libdir,
[AS_HELP_STRING([--with-atlas-libdir=],
[Provide an alternative path to the ATLAS library])])
AC_ARG_WITH(atlas-incdir,
[AS_HELP_STRING([--with-atlas-incdir=],
[Provide an alternative path to the ATLAS include directory])])
# Provide special options for FFTW
AC_ARG_WITH(fftw-libdir,
[AS_HELP_STRING([--with-fftw-libdir=],
[Provide an alternative path to the FFTW library])])
AC_ARG_WITH(fftw-incdir,
[AS_HELP_STRING([--with-fftw-incdir=],
[Provide an alternative path to the FFTW include directory])])
# Provide special options for the MKL library
AC_ARG_WITH(mkl-dir,
[AS_HELP_STRING([--with-mkl-dir=],
[Provide an alternative path to the MKL library])])
# Provide special options for OpenBLAS
AC_MSG_CHECKING([whether OpenBLAS is enabled])
AC_ARG_ENABLE(openblas,
[AS_HELP_STRING([--enable-openblas],
[Use the OpenBLAS library instead of ATLAS (default = no)])],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
AC_ARG_WITH(openblas-libdir,
[AS_HELP_STRING([--with-openblas-libdir=],
[Provide an alternative path to the OpenBLAS library])])
AC_ARG_WITH(openblas-incdir,
[AS_HELP_STRING([--with-openblas-incdir=],
[Provide an alternative path to the OpenBLAS header directory])])
# Provide special option for CFITSIO
AC_MSG_CHECKING([whether CFITSIO support should be disabled (default=enabled)])
AC_ARG_ENABLE(cfitsio,
[AS_HELP_STRING([--disable-cfitsio],
[Disable support for compressed FITS files through the CFITSIO library (default=enabled)])],
if test "$enable_cfitsio" = "no"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi,
AC_MSG_RESULT([no]))
AC_ARG_WITH(cfitsio-libdir,
[AS_HELP_STRING([--with-cfitsio-libdir=],
[Provide an alternative path to the CFITSIO library])])
AC_ARG_WITH(cfitsio-incdir,
[AS_HELP_STRING([--with-cfitsio-incdir=],
[Provide an alternative path to the CFITSIO include directory])])
# Provide a special option for the default XSLT URL
with_xsl_url="file://"$(URBI_RESOLVE_DIR([$datadir]))"/$PACKAGE_TARNAME/$PACKAGE_TARNAME.xsl"
AC_ARG_WITH(xsl_url,
[AS_HELP_STRING([--with-xsl_url=],
[Provide an alternative default URL of the XSLT filter])])
AC_DEFINE_UNQUOTED([XSL_URL], "$with_xsl_url",[Default URL of the XSLT filter])
# Provide special option to disable model-fitting (enabled by default)
AC_MSG_CHECKING([if model-fitting should be disabled (default=enabled)])
AC_ARG_ENABLE([model-fitting],
[AS_HELP_STRING([--disable-model-fitting],
[Disable model-fitting and library dependencies])],
if test "$enable_model_fitting" = "no"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi,
AC_MSG_RESULT([no]))
# Set flags for multithreading
n_pthreads=1024
AC_ARG_ENABLE(threads,
[AS_HELP_STRING([--enable-threads@<:@=@:>@],
[Enable multhreading (on with up to 1024 threads by default)])],
if test "$enableval" = "no"; then
use_pthreads="no"
else
use_pthreads="yes"
if test "$enableval" != "yes"; then
n_pthreads=$enableval
fi
fi,
use_pthreads=yes
)
# Deactivate multithreading for now
use_pthreads="no"
# Provide special option for profiling
AC_MSG_CHECKING([for profiler mode])
AC_ARG_ENABLE(profiling,
[AS_HELP_STRING([--enable-profiling],
[Enable special mode for profiling (default = no)])],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Enable linking options for making the executable as portable as possible.
AC_MSG_CHECKING([best linking option])
AC_ARG_ENABLE(best-link,
[AS_HELP_STRING([--enable-best-link],
[Choose the right combination of static and dynamic linking to make \
the executable as portable as possible (default = no)])],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
################# Actions to complete in case of multhreading ################
AC_DEFINE_UNQUOTED(THREADS_NMAX, $n_pthreads,[Maximum number of POSIX threads])
if test "$use_pthreads" = "yes"; then
AC_MSG_CHECKING([for multithreading])
AC_MSG_RESULT([maximum of $n_pthreads thread(s)])
AC_DEFINE(USE_THREADS, 1, [Triggers multhreading])
# CC, CFLAGS and LIBS are system and compiler-dependent
ACX_PTHREAD
CC="$PTHREAD_CC"
[AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS -D_REENTRANT"]
LIBS="$LIBS $PTHREAD_LIBS"
fi
AM_CONDITIONAL(USE_THREADS, test $use_pthreads = "yes")
############# Actions to complete if model-fitting is activated ##############
if test "$enable_model_fitting" != "no"; then
AC_DEFINE(USE_MODEL, 1, [Triggers model-fitting])
############ handle the INTEL MKL library (FFTW + LAPACKe) ###########
if test "$enable_mkl" = "yes"; then
convlibs="${srcdir}/wcs/libwcs_c.a,${srcdir}/levmar/liblevmar.a"
ACX_MKL($with_mkl_dir,,$enable_best_link,$convlibs)
if test "$MKL_WARN" != ""; then
AC_MSG_WARN([$MKL_WARN])
fi
AM_CFLAGS="$AM_CFLAGS $MKL_CFLAGS "
AM_LDFLAGS="$AM_LDFLAGS $MKL_LDFLAGS "
LIBS="$LIBS $MKL_LIBS"
else
################ handle the FFTW library (Fourier transforms) ################
ACX_FFTW($with_fftw_libdir, $with_fftw_incdir, $use_pthreads,yes,
[
[LIBS="$FFTW_LIBS $LIBS"]
if test "$FFTW_WARN" != ""; then
AC_MSG_WARN([$FFTW_WARN])
fi
],
AC_MSG_ERROR([$FFTW_ERROR Exiting.])
)
if test "x$enable_openblas" = "xyes"; then
######## Handle the OpenBLAS library (linear algebra: BLAS + LAPACKe) ########
ACX_OPENBLAS($with_openblas_libdir, $with_openblas_incdir, $use_pthreads, no,
[
AM_CFLAGS="$AM_CFLAGS $OPENBLAS_CFLAGS "
AM_LDFLAGS="$AM_LDFLAGS $OPENBLAS_LDFLAGS "
LIBS="$OPENBLAS_LIBS $LIBS"
if test "$OPENBLAS_WARN" != ""; then
AC_MSG_WARN([$OPENBLAS_WARN])
fi
],
AC_MSG_ERROR([$OPENBLAS_ERROR Exiting.])
)
else
######### handle the ATLAS library (linear algebra: BLAS + cLAPACK) ##########
ACX_ATLAS($with_atlas_libdir, $with_atlas_incdir, $use_pthreads,
[
[LIBS="$ATLAS_LIBS $LIBS"]
if test "$ATLAS_WARN" != ""; then
AC_MSG_WARN([$ATLAS_WARN])
fi
],
AC_MSG_ERROR([$ATLAS_ERROR Exiting.])
)
fi
fi
fi
########################## handle the CFITSIO library ########################
if test "$enable_cfitsio" != "no"; then
ACX_CFITSIO($with_cfitsio_libdir, $with_cfitsio_incdir,
[LIBS="$CFITSIO_LIBS $LIBS"]
if test "$CFITSIO_WARN" != ""; then
AC_MSG_WARN([$CFITSIO_WARN])
fi,
AC_MSG_ERROR([$CFITSIO_ERROR Exiting.]))
fi
AM_CONDITIONAL(USE_MODEL, [test "$enable_model_fitting" != "no"])
# Compile with profiling option
if test "$enable_profiling" = "yes"; then
if test "$enable_iccx" = "yes"; then
AM_CFLAGS="$AM_CFLAGS -pq"
else
AM_CFLAGS="$AM_CFLAGS -pg"
fi
enable_best_link="no"
fi
# "Best" linking option
if test "$enable_best_link" = "yes"; then
if test "$enable_iccx" = "yes"; then
AM_LDFLAGS="-static-intel -qopenmp-link=static -shared-libgcc \
-static-libtool-libs -avoid-version $AM_LDFLAGS"
else
AM_LDFLAGS="-shared-libgcc -static-libtool-libs -avoid-version $AM_LDFLAGS"
fi
fi
AC_SUBST(AM_CFLAGS)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_LDFLAGS)
# Display compiler and linker flags
AC_MSG_RESULT([***************************************************************])
AC_MSG_RESULT([Compile cmdline: $CC $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS])
AC_MSG_RESULT([Link cmdline: $CC $AM_LDFLAGS $LDFLAGS $LIBS])
AC_MSG_RESULT([Default XSLT URL: $xsl_url])
AC_MSG_RESULT([***************************************************************])
AC_CONFIG_FILES([
Makefile
sextractor.spec
debian/Makefile
debian/changelog
doc/Makefile
doc/src/conf.py
man/Makefile
man/sex.1
src/Makefile
src/fits/Makefile
src/levmar/Makefile
src/wcs/Makefile
tests/Makefile
])
AC_OUTPUT