ax_compiler_version.m4 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # ===========================================================================
  2. # https://github.com/BrianAker/ddm4/
  3. # ===========================================================================
  4. #
  5. # SYNOPSIS
  6. #
  7. # AX_COMPILER_VERSION()
  8. #
  9. # DESCRIPTION
  10. #
  11. # Capture version of C/C++ compiler
  12. #
  13. # LICENSE
  14. #
  15. # Copyright (C) 2012 Brian Aker
  16. # All rights reserved.
  17. #
  18. # Redistribution and use in source and binary forms, with or without
  19. # modification, are permitted provided that the following conditions are
  20. # met:
  21. #
  22. # * Redistributions of source code must retain the above copyright
  23. # notice, this list of conditions and the following disclaimer.
  24. #
  25. # * Redistributions in binary form must reproduce the above
  26. # copyright notice, this list of conditions and the following disclaimer
  27. # in the documentation and/or other materials provided with the
  28. # distribution.
  29. #
  30. # * The names of its contributors may not be used to endorse or
  31. # promote products derived from this software without specific prior
  32. # written permission.
  33. #
  34. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  35. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  36. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  37. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  38. # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  39. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  40. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  41. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  42. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  43. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  44. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  45. #serial 5
  46. AC_DEFUN([_C_COMPILER_VERSION],
  47. [AC_MSG_CHECKING([C Compiler version])
  48. AS_CASE(["$ax_cv_c_compiler_vendor"],
  49. [sun],[ax_c_compiler_version=`$CC -V 2>&1 | sed 1q`],
  50. [intel],[ax_c_compiler_version=`$CC --version 2>&1 | sed 1q`],
  51. [clang],[ax_c_compiler_version=`$CC --version 2>&1 | sed 1q`],
  52. [gnu],[ax_c_compiler_version=`$CC --version | sed 1q`],
  53. [mingw],[ax_c_compiler_version=`$CC --version | sed 1q`],
  54. [ax_c_compiler_version="unknown: $ax_cv_c_compiler_vendor"])
  55. AC_MSG_RESULT(["$ax_c_compiler_version"])
  56. AC_SUBST([CC_VERSION_VENDOR],["$ax_cv_c_compiler_vendor"])
  57. AC_SUBST([CC_VERSION],["$ax_c_compiler_version"])
  58. ])
  59. AC_DEFUN([_CXX_COMPILER_VERSION],
  60. [AC_MSG_CHECKING([C++ Compiler version])
  61. AS_CASE(["$ax_cv_c_compiler_vendor"],
  62. [sun],[ax_cxx_compiler_version=`$CXX -V 2>&1 | sed 1q`],
  63. [intel],[ax_cxx_compiler_version=`$CXX --version 2>&1 | sed 1q`],
  64. [clang],[ax_cxx_compiler_version=`$CXX --version 2>&1 | sed 1q`],
  65. [gnu],[ax_cxx_compiler_version=`$CXX --version | sed 1q`],
  66. [mingw],[ax_cxx_compiler_version=`$CXX --version | sed 1q`],
  67. [ax_cxx_compiler_version="unknown: $ax_cv_c_compiler_vendor"])
  68. AC_MSG_RESULT(["$ax_cxx_compiler_version"])
  69. AC_SUBST([CXX_VERSION_VENDOR],["$ax_cv_c_compiler_vendor"])
  70. AC_SUBST([CXX_VERSION],["$ax_cxx_compiler_version"])
  71. ])
  72. AC_DEFUN([AX_COMPILER_VERSION],
  73. [AC_REQUIRE([AX_COMPILER_VENDOR])
  74. AC_MSG_CHECKING([MINGW])
  75. AC_CHECK_DECL([__MINGW32__],
  76. [MINGW=yes
  77. ax_c_compiler_version_vendor=mingw],
  78. [MINGW=no])
  79. AC_MSG_RESULT([$MINGW])
  80. AC_REQUIRE([_C_COMPILER_VERSION])
  81. AC_REQUIRE([_CXX_COMPILER_VERSION])
  82. AS_IF([test "x$GCC" = xyes],
  83. [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  84. #if !defined(__GNUC__) || (__GNUC__ < 4) || ((__GNUC__ >= 4) && (__GNUC_MINOR__ < 7))
  85. # error GCC is Too Old!
  86. #endif
  87. ]])],
  88. [ac_c_gcc_recent=yes],
  89. [ac_c_gcc_recent=no])
  90. ])
  91. ])