aboutsummaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2014-02-26 17:55:00 +0000
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2014-02-26 17:55:00 +0000
commit10885877079c17e5108037df03f7c22ef8e68b89 (patch)
tree86bfd0a876a7246c8593f6cff03bbfa63ed62e27 /m4
parent756e2da3811719b8142813a48e3da4a0e2ffcb9e (diff)
downloadlibmicrohttpd-10885877079c17e5108037df03f7c22ef8e68b89.tar.gz
libmicrohttpd-10885877079c17e5108037df03f7c22ef8e68b89.zip
Correctly check compiler flags with autoconf archive macros, add compiler flag before other compiler checks
Diffstat (limited to 'm4')
-rw-r--r--m4/ax_append_compile_flags.m465
-rw-r--r--m4/ax_append_flag.m469
-rw-r--r--m4/ax_check_compile_flag.m474
-rw-r--r--m4/ax_require_defined.m437
4 files changed, 245 insertions, 0 deletions
diff --git a/m4/ax_append_compile_flags.m4 b/m4/ax_append_compile_flags.m4
new file mode 100644
index 00000000..dc7b8660
--- /dev/null
+++ b/m4/ax_append_compile_flags.m4
@@ -0,0 +1,65 @@
1# ===========================================================================
2# http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
3# ===========================================================================
4#
5# SYNOPSIS
6#
7# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
8#
9# DESCRIPTION
10#
11# For every FLAG1, FLAG2 it is checked whether the compiler works with the
12# flag. If it does, the flag is added FLAGS-VARIABLE
13#
14# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
15# CFLAGS) is used. During the check the flag is always added to the
16# current language's flags.
17#
18# If EXTRA-FLAGS is defined, it is added to the current language's default
19# flags (e.g. CFLAGS) when the check is done. The check is thus made with
20# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
21# force the compiler to issue an error when a bad flag is given.
22#
23# NOTE: This macro depends on the AX_APPEND_FLAG and
24# AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
25# AX_APPEND_LINK_FLAGS.
26#
27# LICENSE
28#
29# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
30#
31# This program is free software: you can redistribute it and/or modify it
32# under the terms of the GNU General Public License as published by the
33# Free Software Foundation, either version 3 of the License, or (at your
34# option) any later version.
35#
36# This program is distributed in the hope that it will be useful, but
37# WITHOUT ANY WARRANTY; without even the implied warranty of
38# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
39# Public License for more details.
40#
41# You should have received a copy of the GNU General Public License along
42# with this program. If not, see <http://www.gnu.org/licenses/>.
43#
44# As a special exception, the respective Autoconf Macro's copyright owner
45# gives unlimited permission to copy, distribute and modify the configure
46# scripts that are the output of Autoconf when processing the Macro. You
47# need not follow the terms of the GNU General Public License when using
48# or distributing such scripts, even though portions of the text of the
49# Macro appear in them. The GNU General Public License (GPL) does govern
50# all other use of the material that constitutes the Autoconf Macro.
51#
52# This special exception to the GPL applies to versions of the Autoconf
53# Macro released by the Autoconf Archive. When you make and distribute a
54# modified version of the Autoconf Macro, you may extend this special
55# exception to the GPL to apply to your modified version as well.
56
57#serial 4
58
59AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
60[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
61AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
62for flag in $1; do
63 AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3])
64done
65])dnl AX_APPEND_COMPILE_FLAGS
diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4
new file mode 100644
index 00000000..1d38b76f
--- /dev/null
+++ b/m4/ax_append_flag.m4
@@ -0,0 +1,69 @@
1# ===========================================================================
2# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
3# ===========================================================================
4#
5# SYNOPSIS
6#
7# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
8#
9# DESCRIPTION
10#
11# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
12# added in between.
13#
14# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
15# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
16# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
17# FLAG.
18#
19# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
20#
21# LICENSE
22#
23# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
24# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
25#
26# This program is free software: you can redistribute it and/or modify it
27# under the terms of the GNU General Public License as published by the
28# Free Software Foundation, either version 3 of the License, or (at your
29# option) any later version.
30#
31# This program is distributed in the hope that it will be useful, but
32# WITHOUT ANY WARRANTY; without even the implied warranty of
33# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
34# Public License for more details.
35#
36# You should have received a copy of the GNU General Public License along
37# with this program. If not, see <http://www.gnu.org/licenses/>.
38#
39# As a special exception, the respective Autoconf Macro's copyright owner
40# gives unlimited permission to copy, distribute and modify the configure
41# scripts that are the output of Autoconf when processing the Macro. You
42# need not follow the terms of the GNU General Public License when using
43# or distributing such scripts, even though portions of the text of the
44# Macro appear in them. The GNU General Public License (GPL) does govern
45# all other use of the material that constitutes the Autoconf Macro.
46#
47# This special exception to the GPL applies to versions of the Autoconf
48# Macro released by the Autoconf Archive. When you make and distribute a
49# modified version of the Autoconf Macro, you may extend this special
50# exception to the GPL to apply to your modified version as well.
51
52#serial 2
53
54AC_DEFUN([AX_APPEND_FLAG],
55[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
56AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl
57AS_VAR_SET_IF(FLAGS,
58 [case " AS_VAR_GET(FLAGS) " in
59 *" $1 "*)
60 AC_RUN_LOG([: FLAGS already contains $1])
61 ;;
62 *)
63 AC_RUN_LOG([: FLAGS="$FLAGS $1"])
64 AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"])
65 ;;
66 esac],
67 [AS_VAR_SET(FLAGS,["$1"])])
68AS_VAR_POPDEF([FLAGS])dnl
69])dnl AX_APPEND_FLAG
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
new file mode 100644
index 00000000..51df0c09
--- /dev/null
+++ b/m4/ax_check_compile_flag.m4
@@ -0,0 +1,74 @@
1# ===========================================================================
2# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
3# ===========================================================================
4#
5# SYNOPSIS
6#
7# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
8#
9# DESCRIPTION
10#
11# Check whether the given FLAG works with the current language's compiler
12# or gives an error. (Warnings, however, are ignored)
13#
14# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
15# success/failure.
16#
17# If EXTRA-FLAGS is defined, it is added to the current language's default
18# flags (e.g. CFLAGS) when the check is done. The check is thus made with
19# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
20# force the compiler to issue an error when a bad flag is given.
21#
22# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
23#
24# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
25# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
26#
27# LICENSE
28#
29# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
30# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
31#
32# This program is free software: you can redistribute it and/or modify it
33# under the terms of the GNU General Public License as published by the
34# Free Software Foundation, either version 3 of the License, or (at your
35# option) any later version.
36#
37# This program is distributed in the hope that it will be useful, but
38# WITHOUT ANY WARRANTY; without even the implied warranty of
39# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
40# Public License for more details.
41#
42# You should have received a copy of the GNU General Public License along
43# with this program. If not, see <http://www.gnu.org/licenses/>.
44#
45# As a special exception, the respective Autoconf Macro's copyright owner
46# gives unlimited permission to copy, distribute and modify the configure
47# scripts that are the output of Autoconf when processing the Macro. You
48# need not follow the terms of the GNU General Public License when using
49# or distributing such scripts, even though portions of the text of the
50# Macro appear in them. The GNU General Public License (GPL) does govern
51# all other use of the material that constitutes the Autoconf Macro.
52#
53# This special exception to the GPL applies to versions of the Autoconf
54# Macro released by the Autoconf Archive. When you make and distribute a
55# modified version of the Autoconf Macro, you may extend this special
56# exception to the GPL to apply to your modified version as well.
57
58#serial 3
59
60AC_DEFUN([AX_CHECK_COMPILE_FLAG],
61[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
62AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
63AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
64 ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
65 _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
66 AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
67 [AS_VAR_SET(CACHEVAR,[yes])],
68 [AS_VAR_SET(CACHEVAR,[no])])
69 _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
70AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
71 [m4_default([$2], :)],
72 [m4_default([$3], :)])
73AS_VAR_POPDEF([CACHEVAR])dnl
74])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4
new file mode 100644
index 00000000..cae11112
--- /dev/null
+++ b/m4/ax_require_defined.m4
@@ -0,0 +1,37 @@
1# ===========================================================================
2# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
3# ===========================================================================
4#
5# SYNOPSIS
6#
7# AX_REQUIRE_DEFINED(MACRO)
8#
9# DESCRIPTION
10#
11# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
12# been defined and thus are available for use. This avoids random issues
13# where a macro isn't expanded. Instead the configure script emits a
14# non-fatal:
15#
16# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
17#
18# It's like AC_REQUIRE except it doesn't expand the required macro.
19#
20# Here's an example:
21#
22# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
23#
24# LICENSE
25#
26# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
27#
28# Copying and distribution of this file, with or without modification, are
29# permitted in any medium without royalty provided the copyright notice
30# and this notice are preserved. This file is offered as-is, without any
31# warranty.
32
33#serial 1
34
35AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
36 m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
37])dnl AX_REQUIRE_DEFINED