From bce02faa5f363a3873f2351cb1525cdf290b213b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 25 Mar 2024 13:42:21 -0400 Subject: [PATCH] QProcess: build forkfd as C code forkfd_qt.cpp was originally created so we could use the Qt atomic classes back when we couldn't rely on C11. We now can, so that primary reason is gone. We only need it now to set NDEBUG, which the Qt build doesn't set by default, and _GNU_SOURCE to match forkfd.c itself (GCC and Clang define it by default in C++ mode because libstdc++ apparently needs that). Amends 993db5a12227b1e4067714ddc626d64a14474a54 and thus avoids a new Clang 18 warning about using VLAs in C++ code: forkfd_linux.c:160:50: error: variable length arrays in C++ are a Clang extension [-Werror,-Wvla-cxx-extension] Pick-to: 6.6 Change-Id: I5f663c2f9f4149af84fefffd17bed82d39be4d78 Reviewed-by: Oswald Buddenhagen Reviewed-by: Liang Qi Reviewed-by: Fabian Kosmale (cherry picked from commit 05408055d52f3fe014fef3c550820011fa8b89f7) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/CMakeLists.txt | 2 +- src/corelib/io/{forkfd_qt.cpp => forkfd_qt.c} | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) rename src/corelib/io/{forkfd_qt.cpp => forkfd_qt.c} (87%) diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index bf24eec2cfb..bbe8ba84890 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -992,7 +992,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemiterator AND WIN32 qt_internal_extend_target(Core CONDITION QT_FEATURE_process AND UNIX SOURCES ../3rdparty/forkfd/forkfd.h - io/forkfd_qt.cpp + io/forkfd_qt.c INCLUDE_DIRECTORIES ../3rdparty/forkfd ) diff --git a/src/corelib/io/forkfd_qt.cpp b/src/corelib/io/forkfd_qt.c similarity index 87% rename from src/corelib/io/forkfd_qt.cpp rename to src/corelib/io/forkfd_qt.c index 3c6d05d6a8f..7107b2c6a0c 100644 --- a/src/corelib/io/forkfd_qt.cpp +++ b/src/corelib/io/forkfd_qt.c @@ -1,6 +1,9 @@ // Copyright (C) 2016 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif #include #define FORKFD_NO_SPAWNFD