2023-05-10 19:55:40 +08:00

245 lines
6.9 KiB
Plaintext

AC_INIT(m4ri,20140914)
AC_CANONICAL_HOST
AC_CONFIG_SRCDIR(m4ri/brilliantrussian.c)
AM_INIT_AUTOMAKE
dnl Include maintainer mode targets.
AM_MAINTAINER_MODE
dnl Needed when reconfiguring with 'autoreconf -i -s'
AC_CONFIG_MACRO_DIR([m4])
dnl Compiling with per-target flags (test_elimination.c) requires AM_PROG_CC_C_O.
AM_PROG_CC_C_O
AC_PROG_LIBTOOL
AC_PROG_INSTALL
AC_CONFIG_HEADERS(m4ri/config.h)
AC_PROG_CC_C99()
if test "$ac_cv_prog_cc_c99" = "no"; then
AC_MSG_ERROR([C99 support is required but not found.])
fi
# SSE2 support
AC_ARG_ENABLE([sse2],
AS_HELP_STRING([--disable-sse2], [don't use SSE2 instruction set.]),
, [if test "$m4ri_wrapword" = "yes"; then enable_sse2="no"; else enable_sse2="yes"; fi])
AS_IF([test "x$enable_sse2" != "xno"], [
if test "$m4ri_wrapword" = "yes"; then
AC_MSG_ERROR([SSE2 cannot be supported when wrapping word in a C++ class.])
fi
case $host_cpu in i[[3456]]86*|x86_64*)
AX_EXT()
esac
])
if test x"$ax_cv_have_sse2_ext" = x"yes"; then
M4RI_HAVE_SSE2=1
else
M4RI_HAVE_SSE2=0
fi
AC_SUBST(M4RI_HAVE_SSE2)
AC_ARG_WITH(papi,
AS_HELP_STRING([--with-papi@<:@=PATH@:>@], [The PAPI install prefix, if configure can't find it.]),
[m4ri_config_papi=$withval])
AC_ARG_WITH(cachesize,
AS_HELP_STRING([--with-cachesize@<:@=VALUE@:>@], [L1,L2 and L3 cache sizes in bytes, separated by a colon. Overrides cache tuning.]),[m4ri_config_cachesize=$withval])
AC_CHECK_HEADER([mm_malloc.h],AC_DEFINE(HAVE_MM_MALLOC,,[Support aligned allocations]),)
if test "$ac_cv_header_mm_malloc_h" = "yes"; then
M4RI_HAVE_MM_MALLOC=1
else
M4RI_HAVE_MM_MALLOC=0
fi
AC_SUBST(M4RI_HAVE_MM_MALLOC)
# Correctly working posix_memalign
AX_FUNC_POSIX_MEMALIGN
if test "$ax_cv_func_posix_memalign_works" = "yes"; then
M4RI_HAVE_POSIX_MEMALIGN=1
else
M4RI_HAVE_POSIX_MEMALIGN=0
fi
AC_SUBST(M4RI_HAVE_POSIX_MEMALIGN)
# OpenMP support
AC_ARG_ENABLE([openmp],
AS_HELP_STRING( [--enable-openmp],[add support for OpenMP multicore support.]))
AS_IF([test "x$enable_openmp" = "xyes"], [
AX_OPENMP()
])
AC_SUBST(OPENMP_CFLAGS)
if test -n "$OPENMP_CFLAGS"; then
M4RI_HAVE_OPENMP=1
else
M4RI_HAVE_OPENMP=0
fi
AC_SUBST(M4RI_HAVE_OPENMP)
# Debugging support
AC_ARG_ENABLE([debug],
AS_HELP_STRING([--enable-debug], [Enable assert() statements for debugging.]))
AC_ARG_ENABLE([debug-dump],
AS_HELP_STRING([--enable-debug-dump], [Dump output at exit of every function.]))
if test "x$enable_debug_dump" = "xyes"; then
M4RI_DEBUG_DUMP=1
else
M4RI_DEBUG_DUMP=0
fi
AC_SUBST(M4RI_DEBUG_DUMP)
AC_ARG_ENABLE([debug-mzd],
AS_HELP_STRING([--enable-debug-mzd], [Add consistency checks on matrix structures.]))
if test "x$enable_debug_mzd" = "xyes"; then
M4RI_DEBUG_MZD=1
else
M4RI_DEBUG_MZD=0
fi
AC_SUBST(M4RI_DEBUG_MZD)
if test "x$enable_debug" = x"yes"; then
DEBUG_FLAGS="-g"
AC_SUBST(DEBUG_FLAGS)
else
if test "x$enable_debug_mzd" != "xyes"; then
AC_DEFINE(NDEBUG,1,[Define whether debugging is enabled])
fi
fi
# For the testsuite. Detect if PAPI is installed. See http://icl.cs.utk.edu/papi/ .
if test -z "$m4ri_config_papi"; then
AC_CHECK_LIB(papi, PAPI_start_counters,
[
AX_GUESS_PATH_LIB(papi)
AX_GUESS_PATH_HEADER(papi.h)
if test -n "$LIBPAPI_PATH"; then
PAPI_LDFLAGS="-Wl,-rpath,$LIBPAPI_PATH"
PAPI_LIBS="-L$LIBPAPI_PATH -lpapi"
else
PAPI_LIBS="-lpapi"
if ! test -e "/usr/lib/libpapi.so"; then
AC_MSG_WARN([Could not find libpapi.so. Use --with-papi=<install_prefix> or set LD_LIBRARY_PATH correctly before running benchmark applications.])
fi
fi
if test -n "$PAPI_H_PATH"; then
PAPI_CFLAGS="-I$PAPI_H_PATH"
AC_DEFINE_UNQUOTED([HAVE_LIBPAPI], 1, [Define when libpapi is available.])
else
AC_MSG_WARN([Could not find papi.h; Use --with-papi=<install_prefix> or add -I<install_prefix>/include to either CPPFLAGS
or CFLAGS, or turn off papi all together by configuring with --without-papi.])
fi
])
fi
if test x"$m4ri_config_papi" != x"no" && test -n "$m4ri_config_papi"; then
LIBPAPI_PATH="`realpath -s $m4ri_config_papi/lib`"
PAPI_H_PATH="`realpath -s $m4ri_config_papi/include`"
PAPI_CFLAGS="-I$PAPI_H_PATH"
PAPI_LDFLAGS="-Wl,-rpath,$LIBPAPI_PATH"
PAPI_LIBS="-L$LIBPAPI_PATH -lpapi"
AC_DEFINE_UNQUOTED([HAVE_LIBPAPI], 1, [Define when libpapi is available.])
fi
AC_SUBST(PAPI_LIBS)
AC_SUBST(PAPI_LDFLAGS)
AC_SUBST(PAPI_CFLAGS)
AC_ARG_ENABLE([cachetune],
AS_HELP_STRING([--enable-cachetune],[calculate cache size from timing information (deprecated).]))
# Cache Sizes
if test -z $m4ri_config_cachesize; then
AX_CACHE_SIZE()
AS_IF([test "x$enable_cachetune" = "xyes"], [AC_MSG_WARN(--enable-cachetune is deprecated since it usually does not provide optimal parameters.) AX_CACHE_SIZE_TUNE()])
else
AS_IF([test "x$enable_cachetune" = "xyes"], [AC_MSG_WARN(Ignoring cache tuning since --with-cachesize was given.)])
ax_l1_size=`echo $m4ri_config_cachesize | cut -d ":" -f 1`
ax_l2_size=`echo $m4ri_config_cachesize | cut -d ":" -f 2`
ax_l3_size=`echo $m4ri_config_cachesize | cut -d ":" -f 3`
M4RI_CPU_L1_CACHE=${ax_l1_size}
M4RI_CPU_L2_CACHE=${ax_l2_size}
M4RI_CPU_L3_CACHE=${ax_l3_size}
AC_SUBST(M4RI_CPU_L1_CACHE)
AC_SUBST(M4RI_CPU_L2_CACHE)
AC_SUBST(M4RI_CPU_L3_CACHE)
fi
# PNG
have_libpng="no"
AC_ARG_ENABLE([png],
[AC_HELP_STRING([--disable-png], [disable PNG support @<:@default=enabled@:>@])],
[
if test "x${enableval}" = "xyes" ; then
want_png="yes"
else
want_png="no"
fi
],
[want_png="yes"])
AC_MSG_CHECKING([whether to build with PNG support])
AC_MSG_RESULT([${want_png}])
if test "x${want_png}" = "xyes" ; then
PKG_CHECK_MODULES([PNG], [libpng],
[have_libpng="yes"; LIBPNG_LIBADD=`pkg-config --libs libpng`],
[have_libpng="no"])
if ! test "x${have_libpng}" = "xyes" ; then
AC_CHECK_LIB([png],
[png_create_write_struct],
[have_libpng="yes"; LIBPNG_LIBADD="-lpng"],
[AC_CHECK_LIB([png14],
[png_create_write_struct],
[have_libpng="yes"; LIBPNG_LIBADD="-lpng14"],
[AC_CHECK_LIB([png12],
[png_create_write_struct],
[have_libpng="yes"; LIBPNG_LIBADD="-lpng12"],
[AC_CHECK_LIB([png10],
[png_create_write_struct],
[have_libpng="yes"; LIBPNG_LIBADD="-lpng10"],
[have_libpng="no"])
])
])
])
fi
if test "x${have_libpng}" = "xno" ; then
AC_MSG_WARN([Can not find a usuable PNG library. Make sure that CPPFLAGS and LDFLAGS are correctly set.])
fi
fi
if test "x${have_libpng}" = "xyes" ; then
M4RI_HAVE_LIBPNG=1
AC_SUBST(M4RI_HAVE_LIBPNG)
AC_SUBST(LIBPNG_LIBADD)
else
M4RI_HAVE_LIBPNG=0
AC_SUBST(M4RI_HAVE_LIBPNG)
fi
RELEASE="AC_PACKAGE_VERSION"
AC_SUBST(RELEASE)
AC_PROG_MAKE_SET
AC_CONFIG_FILES([Makefile testsuite/Makefile m4ri/m4ri_config.h m4ri.pc])
AC_OUTPUT