1#
2#    Copyright 2014-2016 Nest Labs Inc. All Rights Reserved.
3#
4#    Licensed under the Apache License, Version 2.0 (the "License");
5#    you may not use this file except in compliance with the License.
6#    You may obtain a copy of the License at
7#
8#    http://www.apache.org/licenses/LICENSE-2.0
9#
10#    Unless required by applicable law or agreed to in writing, software
11#    distributed under the License is distributed on an "AS IS" BASIS,
12#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13#    See the License for the specific language governing permissions and
14#    limitations under the License.
15#
16
17#
18# _AX_CHECK_COMPILER_OPTION_WITH_VAR(language, variable, option)
19#
20#   language - The autoconf language (C, C++, Objective C, Objective C++,
21#              etc.).
22#   variable - The variable to add the checked compiler option to.
23#   option   - The compiler flag to check.
24#
25# Add, if supported, the specified compiler flag for the compiler selected
26# for the specified language to the provided variable.
27# ----------------------------------------------------------------------------
28AC_DEFUN([_AX_CHECK_COMPILER_OPTION_WITH_VAR],
29[
30    AC_LANG_PUSH($1)
31    AC_MSG_CHECKING([whether the _AC_LANG compiler understands $3])
32    SAVE_[]_AC_LANG_PREFIX[]FLAGS=${_AC_LANG_PREFIX[]FLAGS}
33    SAVE_$2=${$2}
34    _AC_LANG_PREFIX[]FLAGS=$3
35    AC_TRY_COMPILE(,[;],AC_MSG_RESULT([yes]); _AC_LANG_PREFIX[]FLAGS="${SAVE_[]_AC_LANG_PREFIX[]FLAGS}"; $2="${SAVE_$2} $3",AC_MSG_RESULT([no]); _AC_LANG_PREFIX[]FLAGS=${SAVE_[]_AC_LANG_PREFIX[]FLAGS}; $2=${SAVE_$2});
36    unset SAVE_[]_AC_LANG_PREFIX[]FLAGS
37    unset SAVE_$2
38    AC_LANG_POP($1)
39])
40
41#
42# _AX_CHECK_COMPILER_OPTION(language, option)
43#
44#   language - The autoconf language (C, C++, Objective C, Objective C++,
45#              etc.).
46#   option   - The compiler flag to check.
47#
48# Add, if supported, the specified compiler flag for the compiler selected
49# for the specified language.
50# ----------------------------------------------------------------------------
51AC_DEFUN([_AX_CHECK_COMPILER_OPTION],
52[
53    AC_LANG_PUSH($1)
54    AC_MSG_CHECKING([whether the _AC_LANG compiler understands $2])
55    SAVE_[]_AC_LANG_PREFIX[]FLAGS=${_AC_LANG_PREFIX[]FLAGS}
56    _AC_LANG_PREFIX[]FLAGS=$2
57    AC_TRY_COMPILE(,[;],AC_MSG_RESULT([yes]); _AC_LANG_PREFIX[]FLAGS="${SAVE_[]_AC_LANG_PREFIX[]FLAGS} $2",AC_MSG_RESULT([no]); _AC_LANG_PREFIX[]FLAGS=${SAVE_[]_AC_LANG_PREFIX[]FLAGS});
58    unset SAVE_[]_AC_LANG_PREFIX[]FLAGS
59    AC_LANG_POP($1)
60])
61
62#
63# AX_CHECK_COMPILER_OPTION(language, [variable,] option)
64#
65#   language - The autoconf language (C, C++, Objective C, Objective C++,
66#              etc.).
67#   variable - If supplied, the variable to add the checked compiler option
68#              to.
69#   option   - The compiler flag to check.
70#
71# Add, if supported, the specified compiler flag for the compiler selected
72# for the specified language, optionally saving it to the specified variable.
73# ----------------------------------------------------------------------------
74AC_DEFUN([AX_CHECK_COMPILER_OPTION],
75[
76    ifelse($#,
77        3,
78        [_AX_CHECK_COMPILER_OPTION_WITH_VAR($1, $2, $3)],
79        [_AX_CHECK_COMPILER_OPTION($1, $2)])
80])
81
82#
83# AX_CHECK_COMPILER_OPTIONS(language, [variable,] option ...)
84#
85#   language - The autoconf language (C, C++, Objective C, Objective C++,
86#              etc.).
87#   variable - If supplied, the variable to add the checked compiler option
88#              to.
89#   options  - The compiler flags to check.
90#
91# Add, if supported, the specified compiler flags for the compiler selected
92# for the specified language, optionally saving it to the specified variable.
93# ----------------------------------------------------------------------------
94AC_DEFUN([AX_CHECK_COMPILER_OPTIONS],
95[
96    ifelse($#,
97        3,
98        [
99            for ax_compiler_option in [$3]; do
100                _AX_CHECK_COMPILER_OPTION_WITH_VAR([$1], [$2], $ax_compiler_option)
101            done
102	],
103        [
104            for ax_compiler_option in [$2]; do
105                _AX_CHECK_COMPILER_OPTION([$1], $ax_compiler_option)
106            done
107	])
108])
109