dnl
dnl acx_prog_cc_optim.m4
dnl
dnl Enable a reasonable set of optimization flags for the C compiler.
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl This file part of: AstrOmatic software
dnl
dnl Copyright: (C) 2002-2010 Emmanuel Bertin -- IAP/CNRS/UPMC
dnl (C) 2002 Ville Lauriki (original version)
dnl
dnl Licenses: GPL (this version)
dnl MIT AllPermissive (original script)
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: 09/10/2010
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl @synopsis ACX_PROG_CC_OPTIM
dnl
dnl Currently this macro knows about GCC, Solaris C compiler,
dnl Digital Unix C compiler, C for AIX Compiler, HP-UX C compiler,
dnl IRIX C compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90
dnl (Unicos 10.0.0.8) C compiler.
dnl
dnl This macro is a modification of Ville Laurikari's VL_PROG_CC_WARNINGS
dnl
AC_DEFUN([ACX_PROG_CC_OPTIM], [
msg="for C compiler optimization flags"
AC_CACHE_CHECK($msg, prog_cc_optim_cv_flags, [
if test -n "$CC"; then
cat > conftest.c <&1 | grep -i "Intel(R) 64" > /dev/null 2>&1 &&
$CC -c -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3 -axSSE3,SSE4.1,SSE4.2,AVX -no-prec-div -unroll"
prog_ld_optim_cv_flags="-static-intel"
dnl INTEL C 32bits compiler
elif $CC -V 2>&1 | grep -i "Intel(R)" > /dev/null 2>&1 &&
$CC -c -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3 -axSSE2,SSE3,SSE4.1,SSE4.2,AVX -no-prec-div -unroll"
prog_ld_optim_cv_flags="-static-intel"
dnl GCC
elif test "$GCC" = "yes"; then
prog_cc_optim_cv_flags="-O3 -g -funroll-loops -fomit-frame-pointer -Wall"
prog_ld_optim_cv_flags=""
dnl Solaris C compiler
elif $CC -V 2>&1 | grep -i "WorkShop" > /dev/null 2>&1 &&
$CC -c -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O"
prog_ld_optim_cv_flags=""
dnl Digital Unix/Compaq C compiler
elif ($CC -V 2>&1 | grep -i "Digital UNIX Compiler"> /dev/null 2>&1 ||
$CC -V 2>&1 | grep -i "Compaq C"> /dev/null 2>&1) &&
$CC -c -fast conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-fast -tune host"
prog_ld_optim_cv_flags=""
dnl C for AIX Compiler
elif $CC 2>&1 | grep -i "C for AIX Compiler" > /dev/null 2>&1 &&
$CC -c -qinfo=all -O2 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O2"
prog_ld_optim_cv_flags=""
dnl IRIX C compiler
elif $CC -version 2>&1 | grep -i "MIPSpro Compilers" > /dev/null 2>&1 &&
$CC -c -fullwarn -O3 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3"
prog_ld_optim_cv_flags=""
dnl HP-UX C compiler
elif what $CC 2>&1 | grep -i "HP C Compiler" > /dev/null 2>&1 &&
$CC -c -Aa +O3 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="+O3"
prog_ld_optim_cv_flags=""
dnl The NEC SX-5 (Super-UX 10) C compiler
elif $CC -V 2>&1 | grep "/SX" > /dev/null 2>&1 &&
$CC -c -Xc -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O"
prog_ld_optim_cv_flags=""
dnl The Cray C compiler (Unicos)
elif $CC -V 2>&1 | grep -i "Cray" > /dev/null 2>&1 &&
$CC -c -h conform -O3 conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3"
prog_ld_optim_cv_flags=""
fi
rm -f conftest.*
fi
if test -n "$prog_cc_optim_cv_flags"; then
AM_CFLAGS="$CFLAGS $prog_cc_optim_cv_flags"
AM_LDFLAGS="$LDFLAGS $prog_ld_optim_cv_flags"
else
prog_cc_optim_cv_flags=""
prog_ld_optim_cv_flags=""
fi
])
])dnl