QT Creator: bump to 11.0.3 (#9543)

Based on previous patches by:
 * Sergei Reznikov <diver@gelios.net>
 * Jerome Duval <jerome.duval@gmail.com>
 * Gerasim Troeglazov <3dEyes@gmail.com>
This commit is contained in:
Niels Sascha Reedijk
2023-10-02 10:17:06 +01:00
committed by GitHub
parent ebeb80d5a1
commit c383ba9050
3 changed files with 300 additions and 512 deletions

View File

@@ -0,0 +1,286 @@
From c7c336bec585fac00600050713192297ad011f7e Mon Sep 17 00:00:00 2001
From: Niels Sascha Reedijk <niels.reedijk@gmail.com>
Date: Fri, 29 Sep 2023 16:03:27 +0000
Subject: [PATCH] Port 6.0.3 changes to 11.0.03
---
src/libs/3rdparty/libptyqt/unixptyprocess.cpp | 13 +++++++++++--
src/libs/3rdparty/sqlite/config.h | 5 +++++
src/libs/3rdparty/sqlite/sqlite3.c | 2 +-
src/libs/sqlite/createtablesqlstatementbuilder.cpp | 0
src/libs/utils/qtcassert.cpp | 2 +-
src/libs/utils/savefile.cpp | 2 +-
src/plugins/clangformat/clangformatutils.cpp | 2 +-
src/plugins/coreplugin/manhattanstyle.cpp | 8 ++++++++
src/plugins/projectexplorer/abi.cpp | 4 ++++
src/plugins/qmldesigner/CMakeLists.txt | 2 +-
.../qbs/src/lib/corelib/tools/processutils.cpp | 2 ++
src/tools/process_stub/main.cpp | 6 +++---
src/tools/qml2puppet/CMakeLists.txt | 2 +-
13 files changed, 39 insertions(+), 11 deletions(-)
create mode 100644 src/libs/sqlite/createtablesqlstatementbuilder.cpp
diff --git a/src/libs/3rdparty/libptyqt/unixptyprocess.cpp b/src/libs/3rdparty/libptyqt/unixptyprocess.cpp
index a72712c..11d8702 100644
--- a/src/libs/3rdparty/libptyqt/unixptyprocess.cpp
+++ b/src/libs/3rdparty/libptyqt/unixptyprocess.cpp
@@ -118,7 +118,10 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
return false;
}
- ttmode.c_iflag = ICRNL | IXON | IXANY | IMAXBEL | BRKINT;
+ ttmode.c_iflag = ICRNL | IXON | IXANY | BRKINT;
+#if !defined(Q_OS_HAIKU)
+ ttmode.c_iflag |= IMAXBEL;
+#endif
#if defined(IUTF8)
ttmode.c_iflag |= IUTF8;
#endif
@@ -131,16 +134,22 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
ttmode.c_cc[VEOL] = -1;
ttmode.c_cc[VEOL2] = -1;
ttmode.c_cc[VERASE] = 0x7f;
+#if !defined(Q_OS_HAIKU)
ttmode.c_cc[VWERASE] = 23;
+#endif
ttmode.c_cc[VKILL] = 21;
+#if !defined(Q_OS_HAIKU)
ttmode.c_cc[VREPRINT] = 18;
+#endif
ttmode.c_cc[VINTR] = 3;
ttmode.c_cc[VQUIT] = 0x1c;
ttmode.c_cc[VSUSP] = 26;
ttmode.c_cc[VSTART] = 17;
ttmode.c_cc[VSTOP] = 19;
+#if !defined(Q_OS_HAIKU)
ttmode.c_cc[VLNEXT] = 22;
ttmode.c_cc[VDISCARD] = 15;
+#endif
ttmode.c_cc[VMIN] = 1;
ttmode.c_cc[VTIME] = 0;
@@ -318,7 +327,7 @@ void ShellProcess::configChildProcess()
ioctl(m_handleSlave, TIOCSCTTY, 0);
tcsetpgrp(m_handleSlave, sid);
-#if !defined(Q_OS_ANDROID) && !defined(Q_OS_FREEBSD)
+#if !defined(Q_OS_ANDROID) && !defined(Q_OS_FREEBSD) && !defined(Q_OS_HAIKU)
// on Android imposible to put record to the 'utmp' file
struct utmpx utmpxInfo;
memset(&utmpxInfo, 0, sizeof(utmpxInfo));
diff --git a/src/libs/3rdparty/sqlite/config.h b/src/libs/3rdparty/sqlite/config.h
index 3672f4c..2dcb402 100644
--- a/src/libs/3rdparty/sqlite/config.h
+++ b/src/libs/3rdparty/sqlite/config.h
@@ -39,6 +39,11 @@
#define HAVE_UTIME 1
#endif
+#ifdef __HAIKU__
+#define _DEFAULT_SOURCE 1
+#define _BSD_SOURCE 1
+#endif
+
#if (_XOPEN_SOURCE >= 500) && !(_POSIX_C_SOURCE >= 200809L) || _DEFAULT_SOURCE || _BSD_SOURCE
#define HAVE_USLEEP 1
#endif
diff --git a/src/libs/3rdparty/sqlite/sqlite3.c b/src/libs/3rdparty/sqlite/sqlite3.c
index dd3b5c5..c5bec17 100644
--- a/src/libs/3rdparty/sqlite/sqlite3.c
+++ b/src/libs/3rdparty/sqlite/sqlite3.c
@@ -40863,7 +40863,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
*/
if( rc ) rc = fsync(fd);
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
/* fdatasync() on HFS+ doesn't yet flush the file size if it changed correctly
** so currently we default to the macro that redefines fdatasync to fsync
*/
diff --git a/src/libs/sqlite/createtablesqlstatementbuilder.cpp b/src/libs/sqlite/createtablesqlstatementbuilder.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/src/libs/utils/qtcassert.cpp b/src/libs/utils/qtcassert.cpp
index 78baa41..bb91104 100644
--- a/src/libs/utils/qtcassert.cpp
+++ b/src/libs/utils/qtcassert.cpp
@@ -29,7 +29,7 @@ void dumpBacktrace(int maxdepth)
const int ArraySize = 1000;
if (maxdepth < 0 || maxdepth > ArraySize)
maxdepth = ArraySize;
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_HAIKU)
void *bt[ArraySize] = {nullptr};
int size = backtrace(bt, maxdepth);
char **lines = backtrace_symbols(bt, size);
diff --git a/src/libs/utils/savefile.cpp b/src/libs/utils/savefile.cpp
index 4cf579a..0f3fb69 100644
--- a/src/libs/utils/savefile.cpp
+++ b/src/libs/utils/savefile.cpp
@@ -88,7 +88,7 @@ bool SaveFile::commit()
}
#ifdef Q_OS_WIN
FlushFileBuffers(reinterpret_cast<HANDLE>(_get_osfhandle(handle())));
-#elif _POSIX_SYNCHRONIZED_IO > 0
+#elif _POSIX_SYNCHRONIZED_IO > 0 && !defined(Q_OS_HAIKU)
fdatasync(handle());
#else
fsync(handle());
diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
index 1aae91a..458d142 100644
--- a/src/plugins/clangformat/clangformatutils.cpp
+++ b/src/plugins/clangformat/clangformatutils.cpp
@@ -121,7 +121,7 @@ clang::format::FormatStyle qtcStyle()
#if LLVM_VERSION_MAJOR >= 12
style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200, 200, true}};
#else
- style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200, 200}};
+ style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200}};
#endif
style.IncludeStyle.IncludeIsMainRegex = "(Test)?$";
style.IndentCaseLabels = false;
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index e3205da..feda199 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -234,16 +234,20 @@ int ManhattanStyle::pixelMetric(PixelMetric metric, const QStyleOption *option,
case PM_DockWidgetSeparatorExtent:
retval = 1;
break;
+#if !defined(Q_OS_HAIKU)
case PM_MenuPanelWidth:
case PM_MenuBarHMargin:
case PM_MenuBarVMargin:
+#endif
case PM_ToolBarFrameWidth:
if (panelWidget(widget))
retval = 1;
break;
case PM_ButtonShiftVertical:
case PM_ButtonShiftHorizontal:
+#if !defined(Q_OS_HAIKU)
case PM_MenuBarPanelWidth:
+#endif
case PM_ToolBarItemMargin:
case PM_ToolBarItemSpacing:
if (panelWidget(widget))
@@ -847,6 +851,7 @@ void ManhattanStyle::drawControl(
}
switch (element) {
+#if !defined(Q_OS_HAIKU)
case CE_MenuItem:
painter->save();
if (const auto mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
@@ -866,6 +871,7 @@ void ManhattanStyle::drawControl(
}
painter->restore();
break;
+#endif
case CE_MenuBarItem:
painter->save();
@@ -1009,6 +1015,7 @@ void ManhattanStyle::drawControl(
}
break;
+#if !defined(Q_OS_HAIKU)
case CE_MenuBarEmptyArea: {
if (creatorTheme()->flag(Theme::FlatMenuBar))
painter->fillRect(option->rect, StyleHelper::baseColor());
@@ -1022,6 +1029,7 @@ void ManhattanStyle::drawControl(
painter->restore();
}
break;
+#endif
case CE_ToolBar:
{
diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index 88efb96..423c11e 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -1117,6 +1117,10 @@ Abi Abi::hostAbi()
subos = WindowsMSysFlavor;
#endif
format = PEFormat;
+#elif defined (Q_OS_HAIKU)
+ os = UnknownOS;
+ subos = GenericFlavor;
+ format = UnknownFormat;
#elif defined (Q_OS_LINUX)
os = LinuxOS;
subos = GenericFlavor;
diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt
index 072e802..16a529a 100644
--- a/src/plugins/qmldesigner/CMakeLists.txt
+++ b/src/plugins/qmldesigner/CMakeLists.txt
@@ -93,7 +93,7 @@ extend_qtc_library(QmlDesignerCore
PUBLIC_DEFINES QDS_BUILD_QMLPARSER
)
extend_qtc_library(QmlDesignerCore
- CONDITION UNIX AND NOT APPLE
+ CONDITION UNIX AND NOT APPLE AND NOT HAIKU
PUBLIC_DEPENDS rt
)
diff --git a/src/shared/qbs/src/lib/corelib/tools/processutils.cpp b/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
index 02608cc..7e57db7 100644
--- a/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
+++ b/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
@@ -56,6 +56,8 @@
# include <sys/sysctl.h>
# if !defined(Q_OS_NETBSD)
# include <sys/user.h>
+#elif defined(Q_OS_HAIKU)
+// Do nothing
# endif
#else
# error Missing implementation of processNameByPid for this platform.
diff --git a/src/tools/process_stub/main.cpp b/src/tools/process_stub/main.cpp
index 3749333..6688023 100644
--- a/src/tools/process_stub/main.cpp
+++ b/src/tools/process_stub/main.cpp
@@ -50,7 +50,7 @@ std::optional<QStringList> environmentVariables;
QProcess inferiorProcess;
int inferiorId{0};
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_DARWIN) || defined(Q_OS_HAIKU)
// A memory mapped helper to retrieve the pid of the inferior process in debugMode
static int *shared_child_pid = nullptr;
#endif
@@ -250,7 +250,7 @@ void onInferiorStarted()
#ifdef Q_OS_WIN
sendThreadId(win_process_information->dwThreadId);
sendPid(inferiorId);
-#elif defined(Q_OS_DARWIN)
+#elif defined(Q_OS_DARWIN) || defined(Q_OS_HAIKU)
// In debug mode we use the poll timer to send the pid.
if (!debugMode)
sendPid(inferiorId);
@@ -279,7 +279,7 @@ void setupUnixInferior()
#ifndef Q_OS_WIN
if (debugMode) {
qCInfo(log) << "Debug mode enabled";
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_DARWIN) || defined(Q_OS_HAIKU)
// We are using raise(SIGSTOP) to stop the child process, macOS does not support ptrace(...)
inferiorProcess.setChildProcessModifier([] {
// Let the parent know our pid ...
diff --git a/src/tools/qml2puppet/CMakeLists.txt b/src/tools/qml2puppet/CMakeLists.txt
index 77bde35..0d81fba 100644
--- a/src/tools/qml2puppet/CMakeLists.txt
+++ b/src/tools/qml2puppet/CMakeLists.txt
@@ -85,7 +85,7 @@ extend_qtc_executable(qml2puppet
)
extend_qtc_executable(qml2puppet
- CONDITION UNIX AND (NOT APPLE)
+ CONDITION UNIX AND (NOT APPLE) AND (NOT HAIKU)
DEPENDS rt
)
--
2.37.3

View File

@@ -1,498 +0,0 @@
From d3b12ed3c57773cf953335e6a489e0ee0bc16c90 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 15 Jul 2017 15:42:32 +0200
Subject: apply patch from 4.1.0.
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
index 8b1221a..78d984a 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
@@ -47,7 +47,7 @@
namespace QmlDesigner {
static void prioritizeDown()
{
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_HAIKU)
nice(19);
#elif defined(Q_OS_WIN)
SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri
index 0b364d3..592133a 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri
@@ -34,7 +34,7 @@ else: RESOURCES += $$PWD/../editor3d_qt5.qrc
DISTFILES += Info.plist
-unix:!openbsd:!osx: LIBS += -lrt # posix shared memory
+unix:!openbsd:!osx:!haiku: LIBS += -lrt # posix shared memory
osx {
CONFIG -= app_bundle
diff --git a/src/libs/sqlite/sqlite-lib.pri b/src/libs/sqlite/sqlite-lib.pri
index f1248cd..f938e76 100644
--- a/src/libs/sqlite/sqlite-lib.pri
+++ b/src/libs/sqlite/sqlite-lib.pri
@@ -6,7 +6,7 @@ shared {
INCLUDEPATH += $$PWD
-unix:!bsd: LIBS += -ldl
+unix:!bsd:!haiku: LIBS += -ldl
include(../3rdparty/sqlite/sqlite.pri)
diff --git a/src/libs/utils/process_stub_unix.c b/src/libs/utils/process_stub_unix.c
index 1cb3e8a..245e901 100644
--- a/src/libs/utils/process_stub_unix.c
+++ b/src/libs/utils/process_stub_unix.c
@@ -1,3 +1,4 @@
+#if 0
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
@@ -135,8 +136,10 @@ static void sigchldHandler(int sig)
/* syntax: $0 {"run"|"debug"} <pid-socket> <continuation-msg> <workdir> <env-file> <exe> <args...> */
/* exit codes: 0 = ok, 1 = invocation error, 3 = internal error */
+#endif
int main(int argc, char *argv[])
{
+#if 0
int errNo, hadInvalidCommand = 0;
char **env = 0;
struct sockaddr_un sau;
@@ -358,5 +361,6 @@ int main(int argc, char *argv[])
}
}
assert(0);
+#endif
return 0;
}
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pro b/src/plugins/qmldesigner/qmldesignerplugin.pro
index 78fe856..bc72e8d 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.pro
+++ b/src/plugins/qmldesigner/qmldesignerplugin.pro
@@ -4,7 +4,7 @@ CONFIG += exceptions
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/components
-unix:!openbsd:!osx: LIBS += -lrt # posix shared memory
+unix:!openbsd:!osx:!haiku: LIBS += -lrt # posix shared memory
include(../../qtcreatorplugin.pri)
diff --git a/src/shared/qbs/src/lib/corelib/tools/processutils.cpp b/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
index b27592f..ca5fcd6 100644
--- a/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
+++ b/src/shared/qbs/src/lib/corelib/tools/processutils.cpp
@@ -57,6 +57,8 @@
# if !defined(Q_OS_NETBSD)
# include <sys/user.h>
# endif
+#elif defined(Q_OS_HAIKU)
+// Do nothing.
#else
# error Missing implementation of processNameByPid for this platform.
#endif
--
2.30.2
From b4777cbfd48da52d1ba478af52aba92fbe6341fd Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 15 Jul 2017 18:20:31 +0200
Subject: Fix rpath handling.
diff --git a/qtcreator.pro b/qtcreator.pro
index 5666948..f8dc86b 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -46,7 +46,7 @@ exists(src/shared/qbs/qbs.pro) {
QBS_APPS_RPATH_DIR = @loader_path/../Frameworks
} else {
QBS_PLUGINS_BUILD_DIR = $$IDE_PLUGIN_PATH
- QBS_APPS_RPATH_DIR = \$\$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
+ QBS_APPS_RPATH_DIR = $$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
}
cache(QBS_PLUGINS_BUILD_DIR)
cache(QBS_APPS_RPATH_DIR)
diff --git a/src/rpath.pri b/src/rpath.pri
index ef0a6b7..49dfaf6 100644
--- a/src/rpath.pri
+++ b/src/rpath.pri
@@ -16,4 +16,10 @@ macos {
IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
QMAKE_RPATHDIR =
+} else:haiku-* {
+ QMAKE_RPATHDIR += $ORIGIN/$$REL_PATH_TO_LIBS
+ QMAKE_RPATHDIR += $ORIGIN/$$REL_PATH_TO_PLUGINS
+ QMAKE_RPATHDIR += $ORIGIN
+ QMAKE_RPATHDIR += $ORIGIN/..
+ QMAKE_RPATHDIR += $ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
}
diff --git a/src/shared/qbs/src/app/app.pri b/src/shared/qbs/src/app/app.pri
index 5cd9cb4..818df42 100644
--- a/src/shared/qbs/src/app/app.pri
+++ b/src/shared/qbs/src/app/app.pri
@@ -7,6 +7,7 @@ DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_PROCESS_COMBINED_ARGUMENT_START
else:DESTDIR = ../../../bin
!isEmpty(QBS_APPS_RPATH_DIR) {
+ haiku: QMAKE_RPATHDIR += $ORIGIN/../lib/qtcreator
linux-*:QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${QBS_APPS_RPATH_DIR}\'
macx:QMAKE_LFLAGS += -Wl,-rpath,$${QBS_APPS_RPATH_DIR}
}
--
2.30.2
From fcc84f8696c455ab507c70f290a82747caf5f3dc Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Mon, 25 Jun 2018 16:18:26 +0300
Subject: Enable Terminal on Haiku
diff --git a/src/libs/utils/consoleprocess.cpp b/src/libs/utils/consoleprocess.cpp
index d0979ac..9f61a01 100644
--- a/src/libs/utils/consoleprocess.cpp
+++ b/src/libs/utils/consoleprocess.cpp
@@ -151,6 +151,9 @@ void ConsoleProcess::setSettings(QSettings *settings)
Q_GLOBAL_STATIC_WITH_ARGS(const QVector<TerminalCommand>, knownTerminals, (
{
+#ifdef Q_OS_HAIKU
+ {"Terminal", "", ""},
+#endif
{"x-terminal-emulator", "", "-e"},
{"xdg-terminal", "", "", true},
{"xterm", "", "-e"},
@@ -178,7 +181,11 @@ TerminalCommand ConsoleProcess::defaultTerminalEmulator()
defaultTerm = {"/usr/X11/bin/xterm", "", "-e"};
} else if (HostOsInfo::isAnyUnixHost()) {
+#ifdef Q_OS_HAIKU
+ return {"/system/apps/Terminal", "", ""};
+#else
defaultTerm = {"xterm", "", "-e"};
+#endif
const Environment env = Environment::systemEnvironment();
for (const TerminalCommand &term : *knownTerminals) {
const QString result = env.searchInPath(term.command).toString();
diff --git a/src/libs/utils/unixutils.cpp b/src/libs/utils/unixutils.cpp
index 535bfa2..035ec66 100644
--- a/src/libs/utils/unixutils.cpp
+++ b/src/libs/utils/unixutils.cpp
@@ -36,7 +36,11 @@ using namespace Utils;
QString UnixUtils::defaultFileBrowser()
{
+#ifdef Q_OS_HAIKU
+ return QLatin1String("open %d");
+#else
return QLatin1String("xdg-open %d");
+#endif
}
QString UnixUtils::fileBrowser(const QSettings *settings)
--
2.30.2
From 7cd8e150fb5f9184742d678d486366662485274c Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 28 May 2020 14:42:59 +1000
Subject: Don't using Manhattan style for QMenu and QMenuBar
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index d2043b7..a8de63c 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -144,6 +144,9 @@ MainWindow::MainWindow()
&& baseName == QLatin1String("windows")) {
baseName = QLatin1String("fusion");
}
+#ifndef __HAIKU__
+ baseName = QLatin1String("haiku");
+#endif
// if the user has specified as base style in the theme settings,
// prefer that
@@ -156,6 +159,7 @@ MainWindow::MainWindow()
}
QApplication::setStyle(new ManhattanStyle(baseName));
+
m_generalSettings->setShowShortcutsInContextMenu(
GeneralSettings::showShortcutsInContextMenu());
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index a6b9466..17f37dc 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -218,16 +218,20 @@ int ManhattanStyle::pixelMetric(PixelMetric metric, const QStyleOption *option,
case PM_DockWidgetHandleExtent:
case PM_DockWidgetSeparatorExtent:
return 1;
+#ifndef __HAIKU__
case PM_MenuPanelWidth:
case PM_MenuBarHMargin:
case PM_MenuBarVMargin:
+#endif
case PM_ToolBarFrameWidth:
if (panelWidget(widget))
retval = 1;
break;
case PM_ButtonShiftVertical:
case PM_ButtonShiftHorizontal:
+#ifndef __HAIKU__
case PM_MenuBarPanelWidth:
+#endif
case PM_ToolBarItemMargin:
case PM_ToolBarItemSpacing:
if (panelWidget(widget))
@@ -796,6 +800,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
}
switch (element) {
+#ifndef __HAIKU__
case CE_MenuItem:
painter->save();
if (const auto mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
@@ -853,7 +858,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
}
painter->restore();
break;
-
+#endif
case CE_ComboBoxLabel:
if (const auto cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
if (panelWidget(widget)) {
@@ -948,7 +953,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
painter->restore();
}
break;
-
+#ifndef __HAIKU__
case CE_MenuBarEmptyArea: {
if (creatorTheme()->flag(Theme::FlatMenuBar))
painter->fillRect(option->rect, StyleHelper::baseColor());
@@ -962,7 +967,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
painter->restore();
}
break;
-
+#endif
case CE_ToolBar:
{
QRect rect = option->rect;
--
2.30.2
From ef780df82431157d4b7269f00921e8e288c31ac0 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 28 May 2020 15:38:35 +1000
Subject: Don't validate Qt toolkit
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 61e9438..55304d5 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -520,7 +520,7 @@ Tasks BaseQtVersion::validateKit(const Kit *k)
if (!tdt.isEmpty() && !tdt.contains(dt))
result << BuildSystemTask(Task::Warning, tr("Device type is not supported by Qt version."));
}
-
+#ifndef __HAIKU__
if (ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) {
Abi targetAbi = tc->targetAbi();
Abis supportedAbis = tc->supportedAbis();
@@ -559,6 +559,7 @@ Tasks BaseQtVersion::validateKit(const Kit *k)
const QString message = tr("The kit has a Qt version, but no C++ compiler.");
result << BuildSystemTask(Task::Warning, message);
}
+#endif
return result;
}
--
2.30.2
From 9992e8e469dd6d3f78c7c5aedac0e054b9ab0a82 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 28 May 2020 17:26:06 +1000
Subject: Make unknown host abi for Haiku
diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index 62fd00b..1d9a942 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -1134,6 +1134,10 @@ Abi Abi::hostAbi()
subos = WindowsMSysFlavor;
#endif
format = PEFormat;
+#elif defined (Q_OS_HAIKU)
+ os = UnknownOS;
+ subos = GenericFlavor;
+ format = UnknownFormat;
#elif defined (Q_OS_LINUX)
os = LinuxOS;
subos = GenericFlavor;
--
2.30.2
From 21254881e0b604095c4b4152fb7ee82bcaa7f78d Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Tue, 29 Dec 2020 14:16:57 +1000
Subject: Fix build for clang 9
diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
index ff184ea..66399f7 100644
--- a/src/plugins/clangformat/clangformatutils.cpp
+++ b/src/plugins/clangformat/clangformatutils.cpp
@@ -124,7 +124,7 @@ static clang::format::FormatStyle qtcStyle()
#if LLVM_VERSION_MAJOR >= 12
style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200, 200, true}};
#else
- style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200, 200}};
+ style.IncludeStyle.IncludeCategories = {{"^<Q.*", 200}};
#endif
style.IncludeStyle.IncludeIsMainRegex = "(Test)?$";
style.IndentCaseLabels = false;
--
2.30.2
From f62281aaf92fd24f3d6b4061547e4aae1871efe7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 3 Jan 2022 11:41:36 +1000
Subject: Fix build sqlite
diff --git a/src/libs/3rdparty/sqlite/config.h b/src/libs/3rdparty/sqlite/config.h
index 345e2b0..4fe631b 100644
--- a/src/libs/3rdparty/sqlite/config.h
+++ b/src/libs/3rdparty/sqlite/config.h
@@ -35,6 +35,11 @@
#define HAVE_UTIME 1
#endif
+#ifdef __HAIKU__
+#define _DEFAULT_SOURCE 1
+#define _BSD_SOURCE 1
+#endif
+
#if (_XOPEN_SOURCE >= 500) && !(_POSIX_C_SOURCE >= 200809L) || _DEFAULT_SOURCE || _BSD_SOURCE
#define HAVE_USLEEP 1
#endif
diff --git a/src/libs/3rdparty/sqlite/sqlite3.c b/src/libs/3rdparty/sqlite/sqlite3.c
index 89faea5..030c772 100644
--- a/src/libs/3rdparty/sqlite/sqlite3.c
+++ b/src/libs/3rdparty/sqlite/sqlite3.c
@@ -37710,7 +37710,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
*/
if( rc ) rc = fsync(fd);
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
/* fdatasync() on HFS+ doesn't yet flush the file size if it changed correctly
** so currently we default to the macro that redefines fdatasync to fsync
*/
diff --git a/src/libs/sqlite/createtablesqlstatementbuilder.cpp b/src/libs/sqlite/createtablesqlstatementbuilder.cpp
new file mode 100644
index 0000000..e69de29
--
2.30.2
From 1edd4310b32ec325e85da95ce617d316555ae51e Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 3 Jan 2022 11:46:26 +1000
Subject: Use fsync
diff --git a/src/libs/utils/savefile.cpp b/src/libs/utils/savefile.cpp
index 721a872..e6cc8c1 100644
--- a/src/libs/utils/savefile.cpp
+++ b/src/libs/utils/savefile.cpp
@@ -106,7 +106,7 @@ bool SaveFile::commit()
}
#ifdef Q_OS_WIN
FlushFileBuffers(reinterpret_cast<HANDLE>(_get_osfhandle(handle())));
-#elif _POSIX_SYNCHRONIZED_IO > 0
+#elif _POSIX_SYNCHRONIZED_IO > 0 && !defined(__HAIKU__)
fdatasync(handle());
#else
fsync(handle());
--
2.30.2
From 7cdab8fe044610b85b6baa8397de5da73179e84a Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 3 Jan 2022 11:48:00 +1000
Subject: Use localtime for FileTime::toString
diff --git a/src/shared/qbs/src/lib/corelib/tools/filetime.cpp b/src/shared/qbs/src/lib/corelib/tools/filetime.cpp
index 4ccb573..ee17422 100644
--- a/src/shared/qbs/src/lib/corelib/tools/filetime.cpp
+++ b/src/shared/qbs/src/lib/corelib/tools/filetime.cpp
@@ -115,6 +115,13 @@ double FileTime::asDouble() const
QString FileTime::toString() const
{
+#ifdef __HAIKU__
+ tm* stLocal = localtime(&m_fileTime);
+ const QString result = QStringLiteral("%1.%2.%3 %4:%5:%6")
+ .arg(stLocal->tm_mday, 2, 10, QLatin1Char('0')).arg(stLocal->tm_mon, 2, 10, QLatin1Char('0')).arg(stLocal->tm_year)
+ .arg(stLocal->tm_hour, 2, 10, QLatin1Char('0')).arg(stLocal->tm_min, 2, 10, QLatin1Char('0')).arg(stLocal->tm_sec, 2, 10, QLatin1Char('0'));
+ return result;
+#else
auto const ft = reinterpret_cast<const FILETIME *>(&m_fileTime);
SYSTEMTIME stUTC, stLocal;
FileTimeToSystemTime(ft, &stUTC);
@@ -123,6 +130,7 @@ QString FileTime::toString() const
.arg(stLocal.wDay, 2, 10, QLatin1Char('0')).arg(stLocal.wMonth, 2, 10, QLatin1Char('0')).arg(stLocal.wYear)
.arg(stLocal.wHour, 2, 10, QLatin1Char('0')).arg(stLocal.wMinute, 2, 10, QLatin1Char('0')).arg(stLocal.wSecond, 2, 10, QLatin1Char('0'));
return result;
+#endif
}
#else // defined(Q_OS_WIN)
--
2.30.2
From 51da680eafbba495ba180fbe219605e79a8b9ba8 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 3 Jan 2022 11:48:53 +1000
Subject: Disable dumpBacktrace for Haiku
diff --git a/src/libs/utils/qtcassert.cpp b/src/libs/utils/qtcassert.cpp
index 560df43..d1c2a29 100644
--- a/src/libs/utils/qtcassert.cpp
+++ b/src/libs/utils/qtcassert.cpp
@@ -40,7 +40,7 @@ void dumpBacktrace(int maxdepth)
{
if (maxdepth == -1)
maxdepth = 1000;
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(__HAIKU__)
void *bt[1000] = {nullptr};
int size = backtrace(bt, sizeof(bt) / sizeof(bt[0]));
char **lines = backtrace_symbols(bt, size);
--
2.30.2

View File

@@ -4,11 +4,11 @@ development environment (IDE) for application developers to create \
applications for multiple desktop, embedded, and mobile device platforms, \
such as Android and iOS."
HOMEPAGE="https://www.qt.io/ide/"
COPYRIGHT="2021 The Qt Company Ltd"
COPYRIGHT="2023 The Qt Company Ltd"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://download.qt.io/official_releases/qtcreator/${portVersion%.*}/$portVersion/qt-creator-opensource-src-$portVersion.tar.xz"
CHECKSUM_SHA256="94ccca750150c731956ad368f69714ed5fd4c3b4cd35e5340df37920bded6f3b"
CHECKSUM_SHA256="5f501e64e836b7e3e50b98b3ebc345b201396a5fd92e49738dabb5e268d5cf1c"
SOURCE_DIR="qt-creator-opensource-src-$portVersion"
PATCHES="qt_creator-$portVersion.patchset"
ADDITIONAL_FILES="qt_creator.rdef.in"
@@ -26,7 +26,7 @@ REQUIRES="
lib:libclang_cpp$secondaryArchSuffix
lib:libexecinfo$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libLLVM_9$secondaryArchSuffix
lib:libLLVM_17$secondaryArchSuffix
lib:libQt6Concurrent$secondaryArchSuffix
lib:libQt6Core$secondaryArchSuffix
lib:libQt6Core5Compat$secondaryArchSuffix
@@ -49,11 +49,11 @@ REQUIRES="
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
qt6_tools${secondaryArchSuffix}_devel
devel:libclang$secondaryArchSuffix >= 9
devel:libclang_cpp$secondaryArchSuffix >= 9
devel:libclang$secondaryArchSuffix >= 17
devel:libclang_cpp$secondaryArchSuffix >= 17
devel:libexecinfo$secondaryArchSuffix
devel:libGL$secondaryArchSuffix
devel:libLLVM_9$secondaryArchSuffix
devel:libLLVM_17$secondaryArchSuffix
devel:libQt6Concurrent$secondaryArchSuffix
devel:libQt6Core$secondaryArchSuffix
devel:libQt6Core5Compat$secondaryArchSuffix
@@ -75,31 +75,31 @@ BUILD_REQUIRES="
"
BUILD_PREREQUIRES="
cmd:g++$secondaryArchSuffix
cmd:make
cmd:cmake
cmd:ninja
cmd:qdoc6$secondaryArchSuffix
cmd:qmake6$secondaryArchSuffix
cmd:perl
cmd:pkg_config$secondaryArchSuffix
cmd:python2
cmd:python3
cmd:which
"
BUILD()
{
qmake6
make $jobArgs
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build $jobArgs
}
INSTALL()
{
make install INSTALL_ROOT=$appsDir/QtCreator
cmake --install build --prefix $appsDir/QtCreator
# Qt port doesn't support createPlatformOpenGLContext yet
rm -rf $appsDir/QtCreator/lib/qtcreator/plugins/libQmlDesigner.so
rm -rf $appsDir/QtCreator/lib/qtcreator/plugins/libQmlProfiler.so
# Create symlink to libclang
ln -s /system/$relativeDevelopLibDir/libclang.so.9 $appsDir/QtCreator/lib/qtcreator/
ln -s /system/$relativeDevelopLibDir/libclang.so.9 $appsDir/QtCreator/libexec/qtcreator/
ln -s /system/$relativeDevelopLibDir/libclang.so.17 $appsDir/QtCreator/lib/qtcreator/
ln -s /system/$relativeDevelopLibDir/libclang.so.17 $appsDir/QtCreator/libexec/qtcreator/
local APP_SIGNATURE="application/x-vnd.qt6-qtcreator"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"