From: Viktor Szakats Date: Sun, 19 May 2024 14:55:45 +0000 (+0200) Subject: cmake: fix `-Wredundant-decls` in unity/mingw-w64/gcc/curldebug/DLL builds X-Git-Tag: curl-8_9_0~369 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0fd794df35f0e9ede4a816c20db7451422eb2bbc;p=thirdparty%2Fcurl.git cmake: fix `-Wredundant-decls` in unity/mingw-w64/gcc/curldebug/DLL builds It affected cmake-unity shared-curltool curldebug mingw-w64 gcc builds when building the `testdeps` target. Apply the solution already used in `lib/base64.c` and `lib/dynbuf.c` to fix it. Also update an existing GHA CI job to test the issue fixed. ``` In file included from curl/lib/version_win32.c:35, from curl/_bld/src/CMakeFiles/curl.dir/Unity/unity_0_c.c:145: curl/lib/memdebug.h:52:14: error: redundant redeclaration of 'curl_dbg_logfile' [-Werror=redundant-decls] 52 | extern FILE *curl_dbg_logfile; | ^~~~~~~~~~~~~~~~ In file included from curl/src/slist_wc.c:32, from curl/_bld/src/CMakeFiles/curl.dir/Unity/unity_0_c.c:4: curl/lib/memdebug.h:52:14: note: previous declaration of 'curl_dbg_logfile' with type 'FILE *' {aka 'struct _iobuf *'} 52 | extern FILE *curl_dbg_logfile; | ^~~~~~~~~~~~~~~~ curl/lib/memdebug.h:55:44: error: redundant redeclaration of 'curl_dbg_malloc' [-Werror=redundant-decls] 55 | CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size, | ^~~~~~~~~~~~~~~ curl/lib/memdebug.h:55:44: note: previous declaration of 'curl_dbg_malloc' with type 'void *(size_t, int, const char *)' {aka 'void *(long long unsigned int, int, const char *)'} 55 | CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size, | ^~~~~~~~~~~~~~~ [...] curl/lib/memdebug.h:110:17: error: redundant redeclaration of 'curl_dbg_fclose' [-Werror=redundant-decls] 110 | CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source); | ^~~~~~~~~~~~~~~ curl/lib/memdebug.h:110:17: note: previous declaration of 'curl_dbg_fclose' with type 'int(FILE *, int, const char *)' {aka 'int(struct _iobuf *, int, const char *)'} 110 | CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source); | ^~~~~~~~~~~~~~~ ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49840554/job/a4aoet17e9qnqx1a#L362 After: https://ci.appveyor.com/project/curlorg/curl/builds/49843735/job/hbo2uah2vj0ns523 Ref: #13689 (CI testing this PR with `DEBUGBUILD`/`CURLDEBUG`/shared-static combinations) Depends-on: #13694 Depends-on: #13800 Closes #13705 --- diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9f6201dcd3..2ad79f34a9 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -168,7 +168,7 @@ jobs: - { build: 'autotools', sys: 'mingw64', env: 'x86_64' , tflags: 'skiprun' , config: '--enable-debug --disable-threaded-resolver --enable-static=no' } # FIXME: WebSockets test results ignored due to frequent failures on native Windows: - { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: '!TFTP ~2301 ~2302' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON', type: 'Debug' } - - { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON', type: 'Release' } + - { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_CURLDEBUG=ON', type: 'Release' } - { build: 'cmake' , sys: 'clang64', env: 'clang-x86_64', tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=OFF', type: 'Release' } fail-fast: false steps: diff --git a/lib/version_win32.c b/lib/version_win32.c index e0f239e15d..da3de133dc 100644 --- a/lib/version_win32.c +++ b/lib/version_win32.c @@ -30,8 +30,10 @@ #include "version_win32.h" #include "warnless.h" -/* The last #include files should be: */ +/* The last 2 #include files should be in this order */ +#ifdef BUILDING_LIBCURL #include "curl_memory.h" +#endif #include "memdebug.h" /* This Unicode version struct works for VerifyVersionInfoW (OSVERSIONINFOEXW)