ax_compiler_vendor.m4 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. # ===========================================================================
  2. # https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
  3. # ===========================================================================
  4. #
  5. # SYNOPSIS
  6. #
  7. # AX_COMPILER_VENDOR
  8. #
  9. # DESCRIPTION
  10. #
  11. # Determine the vendor of the C, C++ or Fortran compiler. The vendor is
  12. # returned in the cache variable $ax_cv_c_compiler_vendor for C,
  13. # $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for
  14. # (modern) Fortran. The value is one of "intel", "ibm", "pathscale",
  15. # "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "nvhpc" (NVIDIA HPC
  16. # Compiler), "portland" (PGI), "gnu" (GCC), "sun" (Oracle Developer
  17. # Studio), "hp", "dec", "borland", "comeau", "kai", "lcc", "sgi",
  18. # "microsoft", "metrowerks", "watcom", "tcc" (Tiny CC) or "unknown" (if
  19. # the compiler cannot be determined).
  20. #
  21. # To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT
  22. # with an appropriate preprocessor-enabled extension. For example:
  23. #
  24. # AC_LANG_PUSH([Fortran])
  25. # AC_PROG_FC
  26. # AC_FC_PP_SRCEXT([F])
  27. # AX_COMPILER_VENDOR
  28. # AC_LANG_POP([Fortran])
  29. #
  30. # LICENSE
  31. #
  32. # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
  33. # Copyright (c) 2008 Matteo Frigo
  34. # Copyright (c) 2018-19 John Zaitseff <J.Zaitseff@zap.org.au>
  35. #
  36. # This program is free software: you can redistribute it and/or modify it
  37. # under the terms of the GNU General Public License as published by the
  38. # Free Software Foundation, either version 3 of the License, or (at your
  39. # option) any later version.
  40. #
  41. # This program is distributed in the hope that it will be useful, but
  42. # WITHOUT ANY WARRANTY; without even the implied warranty of
  43. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
  44. # Public License for more details.
  45. #
  46. # You should have received a copy of the GNU General Public License along
  47. # with this program. If not, see <https://www.gnu.org/licenses/>.
  48. #
  49. # As a special exception, the respective Autoconf Macro's copyright owner
  50. # gives unlimited permission to copy, distribute and modify the configure
  51. # scripts that are the output of Autoconf when processing the Macro. You
  52. # need not follow the terms of the GNU General Public License when using
  53. # or distributing such scripts, even though portions of the text of the
  54. # Macro appear in them. The GNU General Public License (GPL) does govern
  55. # all other use of the material that constitutes the Autoconf Macro.
  56. #
  57. # This special exception to the GPL applies to versions of the Autoconf
  58. # Macro released by the Autoconf Archive. When you make and distribute a
  59. # modified version of the Autoconf Macro, you may extend this special
  60. # exception to the GPL to apply to your modified version as well.
  61. #serial 32
  62. AC_DEFUN([AX_COMPILER_VENDOR], [dnl
  63. AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl
  64. dnl If you modify this list of vendors, please add similar support
  65. dnl to ax_compiler_version.m4 if at all possible.
  66. dnl
  67. dnl Note: Do NOT check for GCC first since some other compilers
  68. dnl define __GNUC__ to remain compatible with it. Compilers that
  69. dnl are very slow to start (such as Intel) are listed first.
  70. vendors="
  71. intel: __ICC,__ECC,__INTEL_COMPILER
  72. ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__
  73. pathscale: __PATHCC__,__PATHSCALE__
  74. clang: __clang__
  75. cray: _CRAYC
  76. fujitsu: __FUJITSU
  77. sdcc: SDCC,__SDCC
  78. sx: _SX
  79. nvhpc: __NVCOMPILER
  80. portland: __PGI
  81. gnu: __GNUC__
  82. sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95
  83. hp: __HP_cc,__HP_aCC
  84. dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
  85. borland: __BORLANDC__,__CODEGEARC__,__TURBOC__
  86. comeau: __COMO__
  87. kai: __KCC
  88. lcc: __LCC__
  89. sgi: __sgi,sgi
  90. microsoft: _MSC_VER
  91. metrowerks: __MWERKS__
  92. watcom: __WATCOMC__
  93. tcc: __TINYC__
  94. unknown: UNKNOWN
  95. "
  96. for ventest in $vendors; do
  97. case $ventest in
  98. *:)
  99. vendor=$ventest
  100. continue
  101. ;;
  102. *)
  103. vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")"
  104. ;;
  105. esac
  106. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
  107. #if !($vencpp)
  108. thisisanerror;
  109. #endif
  110. ]])], [break])
  111. done
  112. ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
  113. ])
  114. ])dnl