From: Viktor Szakats Date: Wed, 26 Feb 2025 00:00:43 +0000 (+0100) Subject: curl.h: stop defining non-curl `__has_declspec_attribute` X-Git-Tag: curl-8_13_0~337 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dbbbf717f3a39ab8fc0c996450e699a3a8d46fe5;p=thirdparty%2Fcurl.git curl.h: stop defining non-curl `__has_declspec_attribute` Public curl headers are best not to define 3rd-party or system macros. Introduce `CURL_HAS_DECLSPEC_ATTRIBUTE` to cover this system macro and use it. Detected by test1167 after dropping the indentation: ``` test 1167...[Verify curl prefix of public symbols in header files] /usr/bin/perl -I. -I. returned 1, when expecting 0 1167: exit FAILED == Contents of files in the log/10/ dir after test 1167 === Start of file server.cmd Testnum 1167 === End of file server.cmd === Start of file stdout1167 Bad symbols in public header files: __has_declspec_attribute(x) === End of file stdout1167 ``` Ref: https://github.com/curl/curl/actions/runs/13533200900/job/37819784405?pr=16490#step:42:2087 Ref: https://clang.llvm.org/docs/LanguageExtensions.html#has-declspec-attribute Follow-up to 50482b8c0a2cf5315e66d182998c8fc4901ffb2d #3616 Ref: #16496 (fixing test1167) Closes #16491 --- diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index 640344f0e6..0b566edbc3 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -45,6 +45,7 @@ CURL_GLOBAL_DEFAULT 7.8 CURL_GLOBAL_NOTHING 7.8 CURL_GLOBAL_SSL 7.8 CURL_GLOBAL_WIN32 7.8.1 +CURL_HAS_DECLSPEC_ATTRIBUTE 8.13.0 CURL_HET_DEFAULT 7.59.0 CURL_HTTP_VERSION_1_0 7.9.1 CURL_HTTP_VERSION_1_1 7.9.1 diff --git a/include/curl/curl.h b/include/curl/curl.h index 99c57f2169..346872b39d 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -102,11 +102,6 @@ #include #endif -/* Compatibility for non-Clang compilers */ -#ifndef __has_declspec_attribute -# define __has_declspec_attribute(x) 0 -#endif - #ifdef __cplusplus extern "C" { #endif @@ -118,11 +113,17 @@ typedef void CURLSH; * libcurl external API function linkage decorations. */ +#ifdef __has_declspec_attribute +#define CURL_HAS_DECLSPEC_ATTRIBUTE(x) __has_declspec_attribute(x) +#else +#define CURL_HAS_DECLSPEC_ATTRIBUTE(x) 0 +#endif + #ifdef CURL_STATICLIB # define CURL_EXTERN #elif defined(_WIN32) || \ - (__has_declspec_attribute(dllexport) && \ - __has_declspec_attribute(dllimport)) + (CURL_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \ + CURL_HAS_DECLSPEC_ATTRIBUTE(dllimport)) # if defined(BUILDING_LIBCURL) # define CURL_EXTERN __declspec(dllexport) # else