])
dnl mingw64 implements those as static inline, not functions with C linkage
-AC_LINK_IFELSE([
- AC_LANG_PROGRAM([#include <stdio.h>], [
- char *c;
- if (asprintf(&c, "%s %d", "string", 1) == -1)
- c = NULL;
- ])],[AC_DEFINE([HAVE_ASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([asprintf])])
-AC_LINK_IFELSE([
- AC_LANG_PROGRAM([#include <stdio.h>
- #include <stdarg.h>], [
- char *c;
- va_list ap;
- if (vasprintf(&c, "%s %d", ap) == -1)
- c = NULL;
- ])],[AC_DEFINE([HAVE_VASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([vasprintf])])
+VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
+VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
dnl C11 static_assert()
AC_MSG_CHECKING([for static_assert in assert.h])
AC_MSG_RESULT(${LIBEXT})
AC_DEFINE_UNQUOTED(LIBEXT, "${LIBEXT}", [Dynamic object extension])
])
+
+dnl ===========================================================================
+dnl Custom macros for checking functions with inline fallback, for mingw32/64
+
+dnl VLC_REPLACE_DECL([funcname], [include])
+AC_DEFUN([VLC_REPLACE_DECL], [
+ AS_VAR_PUSHDEF([CACHEVAR], [vlc_cv_replace_decl] AS_TR_SH([$1]))
+ AC_CACHE_VAL(CACHEVAR, [
+ AC_CHECK_DECL(
+ [$1],
+ AS_VAR_SET(CACHEVAR, [yes]),
+ AS_VAR_SET(CACHEVAR, [no]),
+ [$2]
+ )
+ ])
+ AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
+ [AC_DEFINE(AS_TR_CPP([HAVE_$1]), [1], [Define to 1 if you have $1 function])],
+ [AC_LIBOBJ([$1])])
+ AS_VAR_POPDEF([CACHEVAR])
+])