mhd_check_add_cc_cflag.m4 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # SYNOPSIS
  2. #
  3. # MHD_CHECK_ADD_CC_CFLAG([FLAG-TO-TEST], [VARIABLE-TO-EXTEND],
  4. # [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED])
  5. #
  6. # DESCRIPTION
  7. #
  8. # This macro checks whether the specific compiler flag is supported.
  9. # The check is performing by appending FLAG-TO-TEST to the value of
  10. # VARIABLE-TO-EXTEND (CFLAGS if not specified), then prepending result to
  11. # CFLAGS (unless VARIABLE-TO-EXTEND is CFLAGS), and then performing compile
  12. # and link test. If test succeed without warnings, then the flag is added to
  13. # VARIABLE-TO-EXTEND. Otherwise, if compile and link without test flag cannot
  14. # be done without any warning, the flag is considered to be unsuppoted.
  15. #
  16. # Example usage:
  17. #
  18. # MHD_CHECK_ADD_CC_CFLAG([-Wshadow], [additional_CFLAGS])
  19. #
  20. #
  21. # LICENSE
  22. #
  23. # Copyright (c) 2022 Karlson2k (Evgeny Grin) <k2k@narod.ru>
  24. #
  25. # Copying and distribution of this file, with or without modification, are
  26. # permitted in any medium without royalty provided the copyright notice
  27. # and this notice are preserved. This file is offered as-is, without any
  28. # warranty.
  29. #serial 1
  30. AC_DEFUN([MHD_CHECK_ADD_CC_CFLAG],[dnl
  31. _MHD_CHECK_ADD_CC_XFLAG([$1],[$2],[$3],[$4],[[CFLAGS]])dnl
  32. ])
  33. # SYNOPSIS
  34. #
  35. # _MHD_CHECK_ADD_CC_XFLAG([FLAG-TO-TEST], [VARIABLE-TO-EXTEND],
  36. # [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED],
  37. # [CFLAGS|LDFLAGS])
  38. #
  39. AC_DEFUN([_MHD_CHECK_ADD_CC_XFLAG],[dnl
  40. AC_PREREQ([2.64])dnl for AS_VAR_IF, m4_ifnblank, m4_default
  41. AC_LANG_ASSERT([C])dnl
  42. m4_ifblank([$1], [m4_fatal([First macro argument must not be empty])])dnl
  43. m4_bmatch(_mhd_norm_expd([$1]), [\s],dnl
  44. [m4_fatal([First macro argument must not contain whitespaces])])dnl
  45. m4_bmatch(_mhd_norm_expd([$2]), [\s],dnl
  46. [m4_fatal([Second macro argument must not contain whitespaces])])dnl
  47. m4_bmatch([$1], [\$], [m4_fatal([$0: First macro argument must not contain '$'])])dnl
  48. m4_bmatch([$2], [\$], [m4_fatal([$0: Second macro argument must not contain '$'])])dnl
  49. m4_bmatch(_mhd_norm_expd([$5]), [^\(CFLAGS\|LDFLAGS\)$],[],dnl
  50. [m4_fatal([$0: Fifth macro argument must be either 'CFLAGS' or 'LDFLAGS; ']_mhd_norm_expd([$5])[' is not supported])])dnl
  51. m4_ifnblank([$2],
  52. [_MHD_CHECK_CC_XFLAG([$1], [$2],
  53. [MHD_APPEND_FLAG_TO_VAR(_mhd_norm_expd([$2]),_mhd_norm_expd([$1]))
  54. $3],[$4],[$5])],
  55. [_MHD_CHECK_CC_XFLAG([$1],_mhd_norm_expd([$5]),
  56. [MHD_APPEND_FLAG_TO_VAR(_mhd_norm_expd([$5]),_mhd_norm_expd([$1]))
  57. $3],[$4],[$5])]
  58. )
  59. ])