dnl Autoconf configure script for GDB, the GNU debugger.
dnl Copyright (C) 2022 Free Software Foundation, Inc.
dnl
dnl This file is part of GDB.
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 3 of the License, or
dnl (at your option) any later version.
dnl
dnl This program 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
dnl You should have received a copy of the GNU General Public License
dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Sets up GDB_COMPILER_TYPE to either 'gcc', 'clang', or 'unknown'.
# The autoconf compiler check will set GCC=yes for clang as well as
# gcc, it's really more of a "is gcc like" check.
#
# By contrast, this will set the GDB_COMPILER_TYPE to 'gcc' only for
# versions of gcc.
#
# There's no reason why this can't be extended to identify other
# compiler types if needed in the future, users of this variable
# should therefore avoid relying on the 'unknown' value, instead
# checks should be written in terms of the known compiler types.
AC_DEFUN([AM_GDB_COMPILER_TYPE],[

  AC_CACHE_CHECK([the compiler type],
                 [gdb_cv_compiler_type],
 [gdb_cv_compiler_type=unknown
  if test "$gdb_cv_compiler_type" = unknown; then
     AC_COMPILE_IFELSE(
        [AC_LANG_PROGRAM([],
                         [
                          #if !defined __GNUC__ || defined __clang__
                          #error not gcc
                          #endif
                         ])],
        [gdb_cv_compiler_type=gcc], [])
  fi

  if test "$gdb_cv_compiler_type" = unknown; then
     AC_COMPILE_IFELSE(
        [AC_LANG_PROGRAM([],
                         [
                          #ifndef __clang__
                          #error not clang
                          #endif
                         ])],
        [gdb_cv_compiler_type=clang], [])
  fi
 ])

 GDB_COMPILER_TYPE="$gdb_cv_compiler_type"
])
