From: Viktor Szakats Date: Thu, 7 Nov 2024 07:09:30 +0000 (+0100) Subject: macos: disable gcc `availability` workaround as needed X-Git-Tag: curl-8_11_1~103 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=354f3f96a133bbb15f264714f20d0b3af6b1a154;p=thirdparty%2Fcurl.git macos: disable gcc `availability` workaround as needed Homebrew gcc 14.2.0_1 fixed the issue, and the workaround is no longer needed. Not only not needed, but the workaround is breaking builds with the fixed gcc. Auto-detect the upstream fix and stop applying the local workaround if detected. Assisted-by: Bo Anderson Ref: https://github.com/Homebrew/homebrew-core/issues/194778#issuecomment-2462764619 Follow-up to e91fcbac7d86292858718a0bfebad57978761af4 #14155 Closes #15508 --- diff --git a/lib/curl_setup.h b/lib/curl_setup.h index cfab140850..f88c5f12aa 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -43,7 +43,7 @@ #include <_mingw.h> #endif -/* Workaround for Homebrew gcc 12.4.0, 13.3.0, 14.1.0 and newer (as of 14.1.0) +/* Workaround for Homebrew gcc 12.4.0, 13.3.0, 14.1.0, 14.2.0 (initial build) that started advertising the `availability` attribute, which then gets used by Apple SDK, but, in a way incompatible with gcc, resulting in misc errors inside SDK headers, e.g.: @@ -51,13 +51,16 @@ definition error: expected ',' or '}' before Followed by missing declarations. - Fix it by overriding the built-in feature-check macro used by the headers - to enable the problematic attributes. This makes the feature check fail. */ -#if defined(__APPLE__) && \ - !defined(__clang__) && \ - defined(__GNUC__) && __GNUC__ >= 12 && \ + Work it around by overriding the built-in feature-check macro used by the + headers to enable the problematic attributes. This makes the feature check + fail. Fixed in 14.2.0_1. Disable the workaround if the fix is detected. */ +#if defined(__APPLE__) && !defined(__clang__) && defined(__GNUC__) && \ defined(__has_attribute) -#define availability curl_pp_attribute_disabled +# if !defined(__has_feature) +# define availability curl_pp_attribute_disabled +# elif !__has_feature(attribute_availability) +# define availability curl_pp_attribute_disabled +# endif #endif #if defined(__APPLE__)