]> git.proxmox.com Git - mirror_zfs.git/blob - config/always-compiler-options.m4
Use boot_ncpus in place of max_ncpus in taskq_create
[mirror_zfs.git] / config / always-compiler-options.m4
1 dnl #
2 dnl # Enabled -fsanitize=address if supported by gcc.
3 dnl #
4 dnl # LDFLAGS needs -fsanitize=address at all times so libraries compiled with
5 dnl # it will be linked successfully. CFLAGS will vary by binary being built.
6 dnl #
7 dnl # The ASAN_OPTIONS environment variable can be used to further control
8 dnl # the behavior of binaries and libraries build with -fsanitize=address.
9 dnl #
10 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_ASAN], [
11 AC_MSG_CHECKING([whether to build with -fsanitize=address support])
12 AC_ARG_ENABLE([asan],
13 [AS_HELP_STRING([--enable-asan],
14 [Enable -fsanitize=address support @<:@default=no@:>@])],
15 [],
16 [enable_asan=no])
17
18 AM_CONDITIONAL([ASAN_ENABLED], [test x$enable_asan = xyes])
19 AC_SUBST([ASAN_ENABLED], [$enable_asan])
20 AC_MSG_RESULT($enable_asan)
21
22 AS_IF([ test "$enable_asan" = "yes" ], [
23 AC_MSG_CHECKING([whether $CC supports -fsanitize=address])
24 saved_cflags="$CFLAGS"
25 CFLAGS="$CFLAGS -Werror -fsanitize=address"
26 AC_LINK_IFELSE([
27 AC_LANG_SOURCE([[ int main() { return 0; } ]])
28 ], [
29 ASAN_CFLAGS="-fsanitize=address"
30 ASAN_LDFLAGS="-fsanitize=address"
31 ASAN_ZFS="_with_asan"
32 AC_MSG_RESULT([yes])
33 ], [
34 AC_MSG_ERROR([$CC does not support -fsanitize=address])
35 ])
36 CFLAGS="$saved_cflags"
37 ], [
38 ASAN_CFLAGS=""
39 ASAN_LDFLAGS=""
40 ASAN_ZFS="_without_asan"
41 ])
42
43 AC_SUBST([ASAN_CFLAGS])
44 AC_SUBST([ASAN_LDFLAGS])
45 AC_SUBST([ASAN_ZFS])
46 ])
47
48 dnl #
49 dnl # Check if gcc supports -Wframe-larger-than=<size> option.
50 dnl #
51 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN], [
52 AC_MSG_CHECKING([whether $CC supports -Wframe-larger-than=<size>])
53
54 saved_flags="$CFLAGS"
55 CFLAGS="$CFLAGS -Werror -Wframe-larger-than=4096"
56
57 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
58 FRAME_LARGER_THAN="-Wframe-larger-than=4096"
59 AC_MSG_RESULT([yes])
60 ], [
61 FRAME_LARGER_THAN=""
62 AC_MSG_RESULT([no])
63 ])
64
65 CFLAGS="$saved_flags"
66 AC_SUBST([FRAME_LARGER_THAN])
67 ])
68
69 dnl #
70 dnl # Check if gcc supports -Wno-format-truncation option.
71 dnl #
72 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION], [
73 AC_MSG_CHECKING([whether $CC supports -Wno-format-truncation])
74
75 saved_flags="$CFLAGS"
76 CFLAGS="$CFLAGS -Werror -Wno-format-truncation"
77
78 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
79 NO_FORMAT_TRUNCATION=-Wno-format-truncation
80 AC_MSG_RESULT([yes])
81 ], [
82 NO_FORMAT_TRUNCATION=
83 AC_MSG_RESULT([no])
84 ])
85
86 CFLAGS="$saved_flags"
87 AC_SUBST([NO_FORMAT_TRUNCATION])
88 ])
89
90 dnl #
91 dnl # Check if gcc supports -Wno-format-truncation option.
92 dnl #
93 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_ZERO_LENGTH], [
94 AC_MSG_CHECKING([whether $CC supports -Wno-format-zero-length])
95
96 saved_flags="$CFLAGS"
97 CFLAGS="$CFLAGS -Werror -Wno-format-zero-length"
98
99 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
100 NO_FORMAT_ZERO_LENGTH=-Wno-format-zero-length
101 AC_MSG_RESULT([yes])
102 ], [
103 NO_FORMAT_ZERO_LENGTH=
104 AC_MSG_RESULT([no])
105 ])
106
107 CFLAGS="$saved_flags"
108 AC_SUBST([NO_FORMAT_ZERO_LENGTH])
109 ])
110
111
112 dnl #
113 dnl # Check if gcc supports -Wno-bool-compare option.
114 dnl #
115 dnl # We actually invoke gcc with the -Wbool-compare option
116 dnl # and infer the 'no-' version does or doesn't exist based upon
117 dnl # the results. This is required because when checking any of
118 dnl # no- prefixed options gcc always returns success.
119 dnl #
120 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE], [
121 AC_MSG_CHECKING([whether $CC supports -Wno-bool-compare])
122
123 saved_flags="$CFLAGS"
124 CFLAGS="$CFLAGS -Werror -Wbool-compare"
125
126 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
127 NO_BOOL_COMPARE=-Wno-bool-compare
128 AC_MSG_RESULT([yes])
129 ], [
130 NO_BOOL_COMPARE=
131 AC_MSG_RESULT([no])
132 ])
133
134 CFLAGS="$saved_flags"
135 AC_SUBST([NO_BOOL_COMPARE])
136 ])
137
138 dnl #
139 dnl # Check if gcc supports -Wno-unused-but-set-variable option.
140 dnl #
141 dnl # We actually invoke gcc with the -Wunused-but-set-variable option
142 dnl # and infer the 'no-' version does or doesn't exist based upon
143 dnl # the results. This is required because when checking any of
144 dnl # no- prefixed options gcc always returns success.
145 dnl #
146 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE], [
147 AC_MSG_CHECKING([whether $CC supports -Wno-unused-but-set-variable])
148
149 saved_flags="$CFLAGS"
150 CFLAGS="$CFLAGS -Werror -Wunused-but-set-variable"
151
152 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
153 NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable
154 AC_MSG_RESULT([yes])
155 ], [
156 NO_UNUSED_BUT_SET_VARIABLE=
157 AC_MSG_RESULT([no])
158 ])
159
160 CFLAGS="$saved_flags"
161 AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE])
162 ])
163
164 dnl #
165 dnl # Check if gcc supports -fno-omit-frame-pointer option.
166 dnl #
167 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER], [
168 AC_MSG_CHECKING([whether $CC supports -fno-omit-frame-pointer])
169
170 saved_flags="$CFLAGS"
171 CFLAGS="$CFLAGS -Werror -fno-omit-frame-pointer"
172
173 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
174 NO_OMIT_FRAME_POINTER=-fno-omit-frame-pointer
175 AC_MSG_RESULT([yes])
176 ], [
177 NO_OMIT_FRAME_POINTER=
178 AC_MSG_RESULT([no])
179 ])
180
181 CFLAGS="$saved_flags"
182 AC_SUBST([NO_OMIT_FRAME_POINTER])
183 ])
184
185 dnl #
186 dnl # Check if cc supports -fno-ipa-sra option.
187 dnl #
188 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_IPA_SRA], [
189 AC_MSG_CHECKING([whether $CC supports -fno-ipa-sra])
190
191 saved_flags="$CFLAGS"
192 CFLAGS="$CFLAGS -Werror -fno-ipa-sra"
193
194 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
195 NO_IPA_SRA=-fno-ipa-sra
196 AC_MSG_RESULT([yes])
197 ], [
198 NO_IPA_SRA=
199 AC_MSG_RESULT([no])
200 ])
201
202 CFLAGS="$saved_flags"
203 AC_SUBST([NO_IPA_SRA])
204 ])