refactor: enhance assembler pseudo-ops and compiler flag checking

This commit is contained in:
Anthony Green 2025-05-26 08:19:15 -04:00
parent be4e59e399
commit 4094362f54
2 changed files with 40 additions and 14 deletions

View File

@ -1,13 +1,29 @@
dnl ------------------------------------------------------------------
dnl Check whether the assembler understands .cfi_* pseudo-ops.
dnl ------------------------------------------------------------------
AC_DEFUN([GCC_AS_CFI_PSEUDO_OP],
[AC_CACHE_CHECK([assembler .cfi pseudo-op support],
gcc_cv_as_cfi_pseudo_op, [
gcc_cv_as_cfi_pseudo_op=unknown
AC_TRY_COMPILE([asm (".cfi_sections\n\t.cfi_startproc\n\t.cfi_endproc");],,
[gcc_cv_as_cfi_pseudo_op=yes],
[gcc_cv_as_cfi_pseudo_op=no])
])
if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
[Define if your assembler supports .cfi_* directives.])
fi
[
AC_CACHE_CHECK([assembler .cfi pseudo-op support],
[gcc_cv_as_cfi_pseudo_op],
[ AC_LANG_PUSH([C])
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[
int foo (void)
{
__asm__ (
".cfi_sections\n\t"
".cfi_startproc\n\t"
".cfi_endproc");
return 0;
}
]])],
[gcc_cv_as_cfi_pseudo_op=yes],
[gcc_cv_as_cfi_pseudo_op=no])
AC_LANG_POP([C])
])
if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
AC_DEFINE([HAVE_AS_CFI_PSEUDO_OP], [1],
[Define if your assembler supports .cfi_* directives.])
fi
])

View File

@ -34,14 +34,24 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 6
#serial 11
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
AC_CACHE_CHECK([whether the _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
if test x"m4_case(_AC_LANG,
[C], [$GCC],
[C++], [$GXX],
[Fortran], [$GFC],
[Fortran 77], [$G77],
[Objective C], [$GOBJC],
[Objective C++], [$GOBJCXX],
[no])" = xyes ; then
add_gnu_werror="-Werror"
fi
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1 $add_gnu_werror"
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])