libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

mhd_check_add_cc_cflag.m4 (2587B)


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