annotate src/opusfile-0.9/m4/attributes.m4 @ 84:08ae793730bd

Add null config files
author Chris Cannam
date Mon, 02 Mar 2020 14:03:47 +0000
parents 7aeed7906520
children
rev   line source
Chris@69 1 dnl Macros to check the presence of generic (non-typed) symbols.
Chris@69 2 dnl Copyright (c) 2006-2007 Diego Pettenò <flameeyes@gmail.com>
Chris@69 3 dnl Copyright (c) 2006-2007 xine project
Chris@69 4 dnl
Chris@69 5 dnl This program is free software; you can redistribute it and/or modify
Chris@69 6 dnl it under the terms of the GNU General Public License as published by
Chris@69 7 dnl the Free Software Foundation; either version 2, or (at your option)
Chris@69 8 dnl any later version.
Chris@69 9 dnl
Chris@69 10 dnl This program is distributed in the hope that it will be useful,
Chris@69 11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@69 12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@69 13 dnl GNU General Public License for more details.
Chris@69 14 dnl
Chris@69 15 dnl You should have received a copy of the GNU General Public License
Chris@69 16 dnl along with this program; if not, write to the Free Software
Chris@69 17 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
Chris@69 18 dnl 02110-1301, USA.
Chris@69 19 dnl
Chris@69 20 dnl As a special exception, the copyright owners of the
Chris@69 21 dnl macro gives unlimited permission to copy, distribute and modify the
Chris@69 22 dnl configure scripts that are the output of Autoconf when processing the
Chris@69 23 dnl Macro. You need not follow the terms of the GNU General Public
Chris@69 24 dnl License when using or distributing such scripts, even though portions
Chris@69 25 dnl of the text of the Macro appear in them. The GNU General Public
Chris@69 26 dnl License (GPL) does govern all other use of the material that
Chris@69 27 dnl constitutes the Autoconf Macro.
Chris@69 28 dnl
Chris@69 29 dnl This special exception to the GPL applies to versions of the
Chris@69 30 dnl Autoconf Macro released by this project. When you make and
Chris@69 31 dnl distribute a modified version of the Autoconf Macro, you may extend
Chris@69 32 dnl this special exception to the GPL to apply to your modified version as
Chris@69 33 dnl well.
Chris@69 34
Chris@69 35 dnl Check if the flag is supported by compiler
Chris@69 36 dnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
Chris@69 37
Chris@69 38 AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
Chris@69 39 AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
Chris@69 40 [ac_save_CFLAGS="$CFLAGS"
Chris@69 41 CFLAGS="$CFLAGS $1"
Chris@69 42 AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])],
Chris@69 43 [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
Chris@69 44 [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
Chris@69 45 CFLAGS="$ac_save_CFLAGS"
Chris@69 46 ])
Chris@69 47
Chris@69 48 AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
Chris@69 49 [$2], [$3])
Chris@69 50 ])
Chris@69 51
Chris@69 52 dnl Check if the flag is supported by compiler (cacheable)
Chris@69 53 dnl CC_CHECK_CFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
Chris@69 54
Chris@69 55 AC_DEFUN([CC_CHECK_CFLAGS], [
Chris@69 56 AC_CACHE_CHECK([if $CC supports $1 flag],
Chris@69 57 AS_TR_SH([cc_cv_cflags_$1]),
Chris@69 58 CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
Chris@69 59 )
Chris@69 60
Chris@69 61 AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
Chris@69 62 [$2], [$3])
Chris@69 63 ])
Chris@69 64
Chris@69 65 dnl CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
Chris@69 66 dnl Check for CFLAG and appends them to CFLAGS if supported
Chris@69 67 AC_DEFUN([CC_CHECK_CFLAG_APPEND], [
Chris@69 68 AC_CACHE_CHECK([if $CC supports $1 flag],
Chris@69 69 AS_TR_SH([cc_cv_cflags_$1]),
Chris@69 70 CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
Chris@69 71 )
Chris@69 72
Chris@69 73 AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
Chris@69 74 [CFLAGS="$CFLAGS $1"; $2], [$3])
Chris@69 75 ])
Chris@69 76
Chris@69 77 dnl CC_CHECK_CFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not])
Chris@69 78 AC_DEFUN([CC_CHECK_CFLAGS_APPEND], [
Chris@69 79 for flag in $1; do
Chris@69 80 CC_CHECK_CFLAG_APPEND($flag, [$2], [$3])
Chris@69 81 done
Chris@69 82 ])
Chris@69 83
Chris@69 84 dnl Check if the flag is supported by linker (cacheable)
Chris@69 85 dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
Chris@69 86
Chris@69 87 AC_DEFUN([CC_CHECK_LDFLAGS], [
Chris@69 88 AC_CACHE_CHECK([if $CC supports $1 flag],
Chris@69 89 AS_TR_SH([cc_cv_ldflags_$1]),
Chris@69 90 [ac_save_LDFLAGS="$LDFLAGS"
Chris@69 91 LDFLAGS="$LDFLAGS $1"
Chris@69 92 AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 1; }])],
Chris@69 93 [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
Chris@69 94 [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
Chris@69 95 LDFLAGS="$ac_save_LDFLAGS"
Chris@69 96 ])
Chris@69 97
Chris@69 98 AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
Chris@69 99 [$2], [$3])
Chris@69 100 ])
Chris@69 101
Chris@69 102 dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
Chris@69 103 dnl the current linker to avoid undefined references in a shared object.
Chris@69 104 AC_DEFUN([CC_NOUNDEFINED], [
Chris@69 105 dnl We check $host for which systems to enable this for.
Chris@69 106 AC_REQUIRE([AC_CANONICAL_HOST])
Chris@69 107
Chris@69 108 case $host in
Chris@69 109 dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
Chris@69 110 dnl are requested, as different implementations are present; to avoid problems
Chris@69 111 dnl use -Wl,-z,defs only for those platform not behaving this way.
Chris@69 112 *-freebsd* | *-openbsd*) ;;
Chris@69 113 *)
Chris@69 114 dnl First of all check for the --no-undefined variant of GNU ld. This allows
Chris@69 115 dnl for a much more readable commandline, so that people can understand what
Chris@69 116 dnl it does without going to look for what the heck -z defs does.
Chris@69 117 for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
Chris@69 118 CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
Chris@69 119 break
Chris@69 120 done
Chris@69 121 ;;
Chris@69 122 esac
Chris@69 123
Chris@69 124 AC_SUBST([LDFLAGS_NOUNDEFINED])
Chris@69 125 ])
Chris@69 126
Chris@69 127 dnl Check for a -Werror flag or equivalent. -Werror is the GCC
Chris@69 128 dnl and ICC flag that tells the compiler to treat all the warnings
Chris@69 129 dnl as fatal. We usually need this option to make sure that some
Chris@69 130 dnl constructs (like attributes) are not simply ignored.
Chris@69 131 dnl
Chris@69 132 dnl Other compilers don't support -Werror per se, but they support
Chris@69 133 dnl an equivalent flag:
Chris@69 134 dnl - Sun Studio compiler supports -errwarn=%all
Chris@69 135 AC_DEFUN([CC_CHECK_WERROR], [
Chris@69 136 AC_CACHE_CHECK(
Chris@69 137 [for $CC way to treat warnings as errors],
Chris@69 138 [cc_cv_werror],
Chris@69 139 [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
Chris@69 140 [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
Chris@69 141 ])
Chris@69 142 ])
Chris@69 143
Chris@69 144 AC_DEFUN([CC_CHECK_ATTRIBUTE], [
Chris@69 145 AC_REQUIRE([CC_CHECK_WERROR])
Chris@69 146 AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
Chris@69 147 AS_TR_SH([cc_cv_attribute_$1]),
Chris@69 148 [ac_save_CFLAGS="$CFLAGS"
Chris@69 149 CFLAGS="$CFLAGS $cc_cv_werror"
Chris@69 150 AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
Chris@69 151 [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
Chris@69 152 [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
Chris@69 153 CFLAGS="$ac_save_CFLAGS"
Chris@69 154 ])
Chris@69 155
Chris@69 156 AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
Chris@69 157 [AC_DEFINE(
Chris@69 158 AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
Chris@69 159 [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
Chris@69 160 )
Chris@69 161 $4],
Chris@69 162 [$5])
Chris@69 163 ])
Chris@69 164
Chris@69 165 AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
Chris@69 166 CC_CHECK_ATTRIBUTE(
Chris@69 167 [constructor],,
Chris@69 168 [extern void foo();
Chris@69 169 void __attribute__((constructor)) ctor() { foo(); }],
Chris@69 170 [$1], [$2])
Chris@69 171 ])
Chris@69 172
Chris@69 173 AC_DEFUN([CC_ATTRIBUTE_DESTRUCTOR], [
Chris@69 174 CC_CHECK_ATTRIBUTE(
Chris@69 175 [destructor],,
Chris@69 176 [extern void foo();
Chris@69 177 void __attribute__((destructor)) dtor() { foo(); }],
Chris@69 178 [$1], [$2])
Chris@69 179 ])
Chris@69 180
Chris@69 181 AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
Chris@69 182 CC_CHECK_ATTRIBUTE(
Chris@69 183 [format], [format(printf, n, n)],
Chris@69 184 [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
Chris@69 185 [$1], [$2])
Chris@69 186 ])
Chris@69 187
Chris@69 188 AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
Chris@69 189 CC_CHECK_ATTRIBUTE(
Chris@69 190 [format_arg], [format_arg(printf)],
Chris@69 191 [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
Chris@69 192 [$1], [$2])
Chris@69 193 ])
Chris@69 194
Chris@69 195 AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
Chris@69 196 CC_CHECK_ATTRIBUTE(
Chris@69 197 [visibility_$1], [visibility("$1")],
Chris@69 198 [void __attribute__((visibility("$1"))) $1_function() { }],
Chris@69 199 [$2], [$3])
Chris@69 200 ])
Chris@69 201
Chris@69 202 AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
Chris@69 203 CC_CHECK_ATTRIBUTE(
Chris@69 204 [nonnull], [nonnull()],
Chris@69 205 [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
Chris@69 206 [$1], [$2])
Chris@69 207 ])
Chris@69 208
Chris@69 209 AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
Chris@69 210 CC_CHECK_ATTRIBUTE(
Chris@69 211 [unused], ,
Chris@69 212 [void some_function(void *foo, __attribute__((unused)) void *bar);],
Chris@69 213 [$1], [$2])
Chris@69 214 ])
Chris@69 215
Chris@69 216 AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
Chris@69 217 CC_CHECK_ATTRIBUTE(
Chris@69 218 [sentinel], ,
Chris@69 219 [void some_function(void *foo, ...) __attribute__((sentinel));],
Chris@69 220 [$1], [$2])
Chris@69 221 ])
Chris@69 222
Chris@69 223 AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
Chris@69 224 CC_CHECK_ATTRIBUTE(
Chris@69 225 [deprecated], ,
Chris@69 226 [void some_function(void *foo, ...) __attribute__((deprecated));],
Chris@69 227 [$1], [$2])
Chris@69 228 ])
Chris@69 229
Chris@69 230 AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
Chris@69 231 CC_CHECK_ATTRIBUTE(
Chris@69 232 [alias], [weak, alias],
Chris@69 233 [void other_function(void *foo) { }
Chris@69 234 void some_function(void *foo) __attribute__((weak, alias("other_function")));],
Chris@69 235 [$1], [$2])
Chris@69 236 ])
Chris@69 237
Chris@69 238 AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
Chris@69 239 CC_CHECK_ATTRIBUTE(
Chris@69 240 [malloc], ,
Chris@69 241 [void * __attribute__((malloc)) my_alloc(int n);],
Chris@69 242 [$1], [$2])
Chris@69 243 ])
Chris@69 244
Chris@69 245 AC_DEFUN([CC_ATTRIBUTE_PACKED], [
Chris@69 246 CC_CHECK_ATTRIBUTE(
Chris@69 247 [packed], ,
Chris@69 248 [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));
Chris@69 249 char assert@<:@(sizeof(struct astructure) == (sizeof(char)+sizeof(int)+sizeof(long)+sizeof(void*)))-1@:>@;],
Chris@69 250 [$1], [$2])
Chris@69 251 ])
Chris@69 252
Chris@69 253 AC_DEFUN([CC_ATTRIBUTE_CONST], [
Chris@69 254 CC_CHECK_ATTRIBUTE(
Chris@69 255 [const], ,
Chris@69 256 [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
Chris@69 257 [$1], [$2])
Chris@69 258 ])
Chris@69 259
Chris@69 260 AC_DEFUN([CC_FLAG_VISIBILITY], [
Chris@69 261 AC_REQUIRE([CC_CHECK_WERROR])
Chris@69 262 AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
Chris@69 263 [cc_cv_flag_visibility],
Chris@69 264 [cc_flag_visibility_save_CFLAGS="$CFLAGS"
Chris@69 265 CFLAGS="$CFLAGS $cc_cv_werror"
Chris@69 266 CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
Chris@69 267 cc_cv_flag_visibility='yes',
Chris@69 268 cc_cv_flag_visibility='no')
Chris@69 269 CFLAGS="$cc_flag_visibility_save_CFLAGS"])
Chris@69 270
Chris@69 271 AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
Chris@69 272 [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
Chris@69 273 [Define this if the compiler supports the -fvisibility flag])
Chris@69 274 $1],
Chris@69 275 [$2])
Chris@69 276 ])
Chris@69 277
Chris@69 278 AC_DEFUN([CC_FUNC_EXPECT], [
Chris@69 279 AC_REQUIRE([CC_CHECK_WERROR])
Chris@69 280 AC_CACHE_CHECK([if compiler has __builtin_expect function],
Chris@69 281 [cc_cv_func_expect],
Chris@69 282 [ac_save_CFLAGS="$CFLAGS"
Chris@69 283 CFLAGS="$CFLAGS $cc_cv_werror"
Chris@69 284 AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Chris@69 285 [int some_function() {
Chris@69 286 int a = 3;
Chris@69 287 return (int)__builtin_expect(a, 3);
Chris@69 288 }])],
Chris@69 289 [cc_cv_func_expect=yes],
Chris@69 290 [cc_cv_func_expect=no])
Chris@69 291 CFLAGS="$ac_save_CFLAGS"
Chris@69 292 ])
Chris@69 293
Chris@69 294 AS_IF([test "x$cc_cv_func_expect" = "xyes"],
Chris@69 295 [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
Chris@69 296 [Define this if the compiler supports __builtin_expect() function])
Chris@69 297 $1],
Chris@69 298 [$2])
Chris@69 299 ])
Chris@69 300
Chris@69 301 AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
Chris@69 302 AC_REQUIRE([CC_CHECK_WERROR])
Chris@69 303 AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
Chris@69 304 [cc_cv_attribute_aligned],
Chris@69 305 [ac_save_CFLAGS="$CFLAGS"
Chris@69 306 CFLAGS="$CFLAGS $cc_cv_werror"
Chris@69 307 for cc_attribute_align_try in 64 32 16 8 4 2; do
Chris@69 308 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
Chris@69 309 int main() {
Chris@69 310 static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
Chris@69 311 return c;
Chris@69 312 }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
Chris@69 313 done
Chris@69 314 CFLAGS="$ac_save_CFLAGS"
Chris@69 315 ])
Chris@69 316
Chris@69 317 if test "x$cc_cv_attribute_aligned" != "x"; then
Chris@69 318 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
Chris@69 319 [Define the highest alignment supported])
Chris@69 320 fi
Chris@69 321 ])