From 5da4a802399bcba6a67712013c8c6bdc7159f771 Mon Sep 17 00:00:00 2001 From: Karim Pinter Date: Tue, 1 Oct 2024 17:26:58 +0300 Subject: [PATCH] Add VxWorks 24.03 build support Adds mkspec to Qt Version setup data so the vxworks plugin can recongise if the Qt is built for VxWorks. Adds toolchain file loading for vxworks cmake. Task-number: QTBUG-128631 Task-number: QTBUG-128630 Task-number: QTBUG-128627 Task-number: QTBUG-128626 Change-Id: Ia07d133ac56414451c92100bf85f4e7f51515910 Reviewed-by: Cristian Adam --- .../cmakeprojectmanager/cmakebuildconfiguration.cpp | 9 ++++++++- src/plugins/qtsupport/baseqtversion.cpp | 1 + src/plugins/qtsupport/qtversionfactory.h | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index d50fcdcedb2..cccc08d4b59 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -103,6 +103,8 @@ const char CMAKE_CXX_FLAGS[] = "CMAKE_CXX_FLAGS"; const char CMAKE_CXX_FLAGS_DEBUG[] = "CMAKE_CXX_FLAGS_DEBUG"; const char CMAKE_CXX_FLAGS_RELWITHDEBINFO[] = "CMAKE_CXX_FLAGS_RELWITHDEBINFO"; +const char VXWORKS_DEVICE_TYPE[] = "VxWorks.Device.Type"; + namespace Internal { class CMakeBuildSettingsWidget : public NamedWidget @@ -1132,6 +1134,11 @@ static bool isWebAssembly(const Kit *k) return DeviceTypeKitAspect::deviceTypeId(k) == WebAssembly::Constants::WEBASSEMBLY_DEVICE_TYPE; } +static bool isVxWorks(const Kit *k) +{ + return DeviceTypeKitAspect::deviceTypeId(k) == VXWORKS_DEVICE_TYPE; +} + static bool isQnx(const Kit *k) { return DeviceTypeKitAspect::deviceTypeId(k) == Qnx::Constants::QNX_QNX_OS_TYPE; @@ -1556,7 +1563,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) } } - if (isWebAssembly(k) || isQnx(k) || isWindowsARM64(k)) { + if (isWebAssembly(k) || isQnx(k) || isWindowsARM64(k) || isVxWorks(k)) { if (qt && qt->qtVersion().majorVersion() >= 6) cmd.addArg(CMAKE_QT6_TOOLCHAIN_FILE_ARG); } diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 1f3bfe2d404..8102cef7c60 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -2372,6 +2372,7 @@ QtVersion *QtVersionFactory::createQtVersionFromQMakePath setup.config = evaluator.values("CONFIG"); setup.platforms = evaluator.values("QMAKE_PLATFORM"); // It's a list in general. setup.isQnx = !evaluator.value("QNX_CPUDIR").isEmpty(); + setup.mkspec = mkspec.fileName(); for (QtVersionFactory *factory : factories) { if (!factory->m_restrictionChecker || factory->m_restrictionChecker(setup)) { diff --git a/src/plugins/qtsupport/qtversionfactory.h b/src/plugins/qtsupport/qtversionfactory.h index 2832fe55fbc..d370d146131 100644 --- a/src/plugins/qtsupport/qtversionfactory.h +++ b/src/plugins/qtsupport/qtversionfactory.h @@ -38,7 +38,8 @@ protected: { QStringList platforms; QStringList config; - bool isQnx = false; // eeks... + bool isQnx = false; // eeks + QString mkspec; }; void setQtVersionCreator(const std::function &creator);