У меня есть код, который я хочу скомпилировать на всех системах Unix, но если -m64 у меня есть, и он работает, я хочу, чтобы скрипт конфигурирования использовал его. Как заставить autoconf проверить, работает ли -m64 и, если да, использовать его?
my_save_cflags="$CFLAGS" CFLAGS=-m64 AC_MSG_CHECKING([whether CC supports -m64]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])] [AM_CFLAGS=-m64], [AC_MSG_RESULT([no])] ) CFLAGS="$my_save_cflags" AC_SUBST([AM_CFLAGS])
Использование AM_CFLAGS для добавления -m64 в сборку предполагает automake (или использование AM_CFLAGS в ваших собственных неавтоматических make-файлах.)
dnl @synopsis CXX_FLAGS_CHECK [compiler flags] dnl @summary check whether compiler supports given C++ flags or not AC_DEFUN([CXX_FLAG_CHECK], [dnl AC_MSG_CHECKING([if $CXX supports $1]) AC_LANG_PUSH([C++]) ac_saved_cxxflags="$CXXFLAGS" CXXFLAGS="-Werror $1" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no])] ) CXXFLAGS="$ac_saved_cxxflags" AC_LANG_POP([C++]) ])
И используйте
CXX_FLAGS_CHECK([-m64])