+
+dnl CURL_CPP_P
+dnl
+dnl Check if $cpp -P should be used for extract define values due to gcc 5
+dnl splitting up strings and defines between line outputs. gcc by default
+dnl (without -P) will show TEST EINVAL TEST as
+dnl
+dnl # 13 "conftest.c"
+dnl TEST
+dnl # 13 "conftest.c" 3 4
+dnl 22
+dnl # 13 "conftest.c"
+dnl TEST
+
+AC_DEFUN([CURL_CPP_P], [
+ AC_MSG_CHECKING([if cpp -P is needed])
+ AC_EGREP_CPP([TEST.*TEST], [
+ #include <errno.h>
+TEST EINVAL TEST
+ ], [cpp=no], [cpp=yes])
+ AC_MSG_RESULT([$cpp])
+
+ dnl we need cpp -P so check if it works then
+ if test "x$cpp" = "xyes"; then
+ AC_MSG_CHECKING([if cpp -P works])
+ OLDCPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -P"
+ AC_EGREP_CPP([TEST.*TEST], [
+ #include <errno.h>
+TEST EINVAL TEST
+ ], [cpp_p=yes], [cpp_p=no])
+ AC_MSG_RESULT([$cpp_p])
+
+ if test "x$cpp_p" = "xno"; then
+ AC_MSG_WARN([failed to figure out cpp -P alternative])
+ # without -P
+ CPPPFLAG=""
+ else
+ # with -P
+ CPPPFLAG="-P"
+ fi
+ dnl restore CPPFLAGS
+ CPPFLAGS=$OLDCPPFLAGS
+ else
+ # without -P
+ CPPPFLAG=""
+ fi
+])
+
+
+dnl CURL_MAC_CFLAGS
+dnl
+dnl Check if -mmacosx-version-min, -miphoneos-version-min or any
+dnl similar are set manually, otherwise do. And set
+dnl -Werror=partial-availability.
+dnl
+
+AC_DEFUN([CURL_MAC_CFLAGS], [
+
+ tst_cflags="no"
+ case $host_os in
+ darwin*)
+ tst_cflags="yes"
+ ;;
+ esac
+
+ AC_MSG_CHECKING([for good-to-use Mac CFLAGS])
+ AC_MSG_RESULT([$tst_cflags]);
+
+ if test "$tst_cflags" = "yes"; then
+ AC_MSG_CHECKING([for *version-min in CFLAGS])
+ min=""
+ if test -z "$(echo $CFLAGS | grep m.*os.*-version-min)"; then
+ min="-mmacosx-version-min=10.8"
+ CFLAGS="$CFLAGS $min"
+ fi
+ if test -z "$min"; then
+ AC_MSG_RESULT([set by user])
+ else
+ AC_MSG_RESULT([$min set])
+ fi
+
+ old_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Werror=partial-availability"
+ AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ CFLAGS=$old_CFLAGS])
+ fi
+
+])
+
+
+dnl CURL_SUPPORTS_BUILTIN_AVAILABLE
+dnl
+dnl Check to see if the compiler supports __builtin_available. This built-in
+dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at
+dnl the time this macro was written, the function was not yet documented. Its
+dnl purpose is to return true if the code is running under a certain OS version
+dnl or later.
+
+AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [
+ AC_MSG_CHECKING([to see if the compiler supports __builtin_available()])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#include <stdlib.h>
+ ]],[[
+ if (__builtin_available(macOS 10.8, iOS 5.0, *)) {}
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1,
+ [Define to 1 if you have the __builtin_available function.])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+])