aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--launcher/Application.cpp2
-rw-r--r--launcher/DesktopServices.cpp12
-rw-r--r--launcher/FileSystem.cpp2
-rw-r--r--launcher/UpdateController.cpp2
-rw-r--r--launcher/Version.cpp2
-rw-r--r--launcher/install_prereqs.cmake.in2
-rw-r--r--launcher/java/JavaUtils.cpp4
-rw-r--r--launcher/minecraft/MinecraftInstance.cpp4
-rw-r--r--launcher/minecraft/OpSys.cpp4
-rw-r--r--launcher/minecraft/OpSys.h7
-rw-r--r--launcher/minecraft/launch/ExtractNatives.cpp7
-rw-r--r--launcher/minecraft/launch/PrintInstanceInfo.cpp45
-rw-r--r--launcher/tools/MCEditTool.cpp2
-rw-r--r--libraries/iconfix/internal/qiconloader.cpp2
-rw-r--r--libraries/systeminfo/src/sys_unix.cpp14
16 files changed, 94 insertions, 20 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0a8c5ec..d1c6ac3b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,6 +47,9 @@ if(UNIX AND APPLE)
endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror=return-type")
+# Fix build with Qt 5.13
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_DEPRECATED_WARNINGS=Y")
+
##################################### Set Application options #####################################
######## Set URLs ########
diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index 2d0c81bb..625f99ad 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -512,7 +512,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
// Set up paths
{
// Root path is used for updates.
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
QDir foo(FS::PathCombine(binPath, ".."));
m_rootPath = foo.absolutePath();
#elif defined(Q_OS_WIN32)
diff --git a/launcher/DesktopServices.cpp b/launcher/DesktopServices.cpp
index 5368ddc8..dcc1b0ce 100644
--- a/launcher/DesktopServices.cpp
+++ b/launcher/DesktopServices.cpp
@@ -7,7 +7,7 @@
/**
* This shouldn't exist, but until QTBUG-9328 and other unreported bugs are fixed, it needs to be a thing.
*/
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
#include <unistd.h>
#include <errno.h>
@@ -83,7 +83,7 @@ bool openDirectory(const QString &path, bool ensureExists)
{
return QDesktopServices::openUrl(QUrl::fromLocalFile(dir.absolutePath()));
};
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
return IndirectOpen(f);
#else
return f();
@@ -97,7 +97,7 @@ bool openFile(const QString &path)
{
return QDesktopServices::openUrl(QUrl::fromLocalFile(path));
};
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
return IndirectOpen(f);
#else
return f();
@@ -107,7 +107,7 @@ bool openFile(const QString &path)
bool openFile(const QString &application, const QString &path, const QString &workingDirectory, qint64 *pid)
{
qDebug() << "Opening file" << path << "using" << application;
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
// FIXME: the pid here is fake. So if something depends on it, it will likely misbehave
return IndirectOpen([&]()
{
@@ -121,7 +121,7 @@ bool openFile(const QString &application, const QString &path, const QString &wo
bool run(const QString &application, const QStringList &args, const QString &workingDirectory, qint64 *pid)
{
qDebug() << "Running" << application << "with args" << args.join(' ');
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
// FIXME: the pid here is fake. So if something depends on it, it will likely misbehave
return IndirectOpen([&]()
{
@@ -139,7 +139,7 @@ bool openUrl(const QUrl &url)
{
return QDesktopServices::openUrl(url);
};
-#if defined(Q_OS_LINUX)
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
return IndirectOpen(f);
#else
return f();
diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp
index 13f05b86..6de20de6 100644
--- a/launcher/FileSystem.cpp
+++ b/launcher/FileSystem.cpp
@@ -403,7 +403,7 @@ QString getDesktopDir()
bool createShortCut(QString location, QString dest, QStringList args, QString name,
QString icon)
{
-#if defined Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
location = PathCombine(location, name + ".desktop");
QFile f(location);
diff --git a/launcher/UpdateController.cpp b/launcher/UpdateController.cpp
index 136e22fd..f9b7d349 100644
--- a/launcher/UpdateController.cpp
+++ b/launcher/UpdateController.cpp
@@ -93,7 +93,7 @@ void UpdateController::installUpdates()
qDebug() << "Installing updates.";
#ifdef Q_OS_WIN
QString finishCmd = QApplication::applicationFilePath();
-#elif defined Q_OS_LINUX
+#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
QString finishCmd = FS::PathCombine(m_root, BuildConfig.LAUNCHER_NAME);
#elif defined Q_OS_MAC
QString finishCmd = QApplication::applicationFilePath();
diff --git a/launcher/Version.cpp b/launcher/Version.cpp
index 6392a50f..b9090e29 100644
--- a/launcher/Version.cpp
+++ b/launcher/Version.cpp
@@ -78,7 +78,7 @@ void Version::parse()
// FIXME: this is bad. versions can contain a lot more separators...
QStringList parts = m_string.split('.');
- for (const auto &part : parts)
+ for (const auto& part : parts)
{
m_sections.append(Section(part));
}
diff --git a/launcher/install_prereqs.cmake.in b/launcher/install_prereqs.cmake.in
index e4408d16..f627369c 100644
--- a/launcher/install_prereqs.cmake.in
+++ b/launcher/install_prereqs.cmake.in
@@ -23,5 +23,5 @@ set(gp_cmd_paths ${gp_cmd_paths}
)
include(BundleUtilities)
-fixup_bundle("@APPS@" "${QTPLUGINS}" "@DIRS@")
+
diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp
index 6b58db37..87aee2bf 100644
--- a/launcher/java/JavaUtils.cpp
+++ b/launcher/java/JavaUtils.cpp
@@ -31,7 +31,7 @@ JavaUtils::JavaUtils()
{
}
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
static QString processLD_LIBRARY_PATH(const QString & LD_LIBRARY_PATH)
{
QDir mmcBin(QCoreApplication::applicationDirPath());
@@ -83,7 +83,7 @@ QProcessEnvironment CleanEnviroment()
qDebug() << "Env: ignoring" << key << value;
continue;
}
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
// Do not pass LD_* variables to java. They were intended for MultiMC
if(key.startsWith("LD_"))
{
diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp
index 4c16e572..bed25ead 100644
--- a/launcher/minecraft/MinecraftInstance.cpp
+++ b/launcher/minecraft/MinecraftInstance.cpp
@@ -186,7 +186,11 @@ QString MinecraftInstance::binRoot() const
QString MinecraftInstance::getNativePath() const
{
+#if defined(Q_OS_FREEBSD)
+ QDir natives_dir("/usr/local/lib/lwjgl/");
+#else
QDir natives_dir(FS::PathCombine(instanceRoot(), "natives/"));
+#endif
return natives_dir.absolutePath();
}
diff --git a/launcher/minecraft/OpSys.cpp b/launcher/minecraft/OpSys.cpp
index f6a4ed1c..093ec419 100644
--- a/launcher/minecraft/OpSys.cpp
+++ b/launcher/minecraft/OpSys.cpp
@@ -17,6 +17,8 @@
OpSys OpSys_fromString(QString name)
{
+ if (name == "freebsd")
+ return Os_FreeBSD;
if (name == "linux")
return Os_Linux;
if (name == "windows")
@@ -30,6 +32,8 @@ QString OpSys_toString(OpSys name)
{
switch (name)
{
+ case Os_FreeBSD:
+ return "freebsd";
case Os_Linux:
return "linux";
case Os_OSX:
diff --git a/launcher/minecraft/OpSys.h b/launcher/minecraft/OpSys.h
index 63c750b1..c6ed5222 100644
--- a/launcher/minecraft/OpSys.h
+++ b/launcher/minecraft/OpSys.h
@@ -18,6 +18,7 @@
enum OpSys
{
Os_Windows,
+ Os_FreeBSD,
Os_Linux,
Os_OSX,
Os_Other
@@ -28,10 +29,10 @@ QString OpSys_toString(OpSys);
#ifdef Q_OS_WIN32
#define currentSystem Os_Windows
-#else
-#ifdef Q_OS_MAC
+#elif Q_OS_MAC
#define currentSystem Os_OSX
+#elif defined Q_OS_FREEBSD
+#define currentSystem Os_FreeBSD
#else
#define currentSystem Os_Linux
-#endif
#endif \ No newline at end of file
diff --git a/launcher/minecraft/launch/ExtractNatives.cpp b/launcher/minecraft/launch/ExtractNatives.cpp
index d57499aa..8cd439b1 100644
--- a/launcher/minecraft/launch/ExtractNatives.cpp
+++ b/launcher/minecraft/launch/ExtractNatives.cpp
@@ -23,6 +23,13 @@
#include "FileSystem.h"
#include <QDir>
+#ifdef major
+ #undef major
+#endif
+#ifdef minor
+ #undef minor
+#endif
+
static QString replaceSuffix (QString target, const QString &suffix, const QString &replacement)
{
if (!target.endsWith(suffix))
diff --git a/launcher/minecraft/launch/PrintInstanceInfo.cpp b/launcher/minecraft/launch/PrintInstanceInfo.cpp
index 3da17902..e8fbcb9b 100644
--- a/launcher/minecraft/launch/PrintInstanceInfo.cpp
+++ b/launcher/minecraft/launch/PrintInstanceInfo.cpp
@@ -19,8 +19,9 @@
#include "PrintInstanceInfo.h"
#include <launch/LaunchTask.h>
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
namespace {
+#if defined(Q_OS_LINUX)
void probeProcCpuinfo(QStringList &log)
{
std::ifstream cpuin("/proc/cpuinfo");
@@ -66,7 +67,43 @@ void runLspci(QStringList &log)
}
pclose(lspci);
}
+#elif defined(Q_OS_FREEBSD)
+void runSysctlHwModel(QStringList &log)
+{
+ char buff[512];
+ FILE *hwmodel = popen("sysctl hw.model", "r");
+ while (fgets(buff, 512, hwmodel) != NULL)
+ {
+ log << QString::fromUtf8(buff);
+ break;
+ }
+ pclose(hwmodel);
+}
+void runPciconf(QStringList &log)
+{
+ char buff[512];
+ std::string strcard;
+ FILE *pciconf = popen("pciconf -lv -a vgapci0", "r");
+ while (fgets(buff, 512, pciconf) != NULL)
+ {
+ if (strncmp(buff, " vendor", 10) == 0)
+ {
+ std::string str(buff);
+ strcard.append(str.substr(str.find_first_of("'") + 1, str.find_last_not_of("'") - (str.find_first_of("'") + 2)));
+ strcard.append(" ");
+ }
+ else if (strncmp(buff, " device", 10) == 0)
+ {
+ std::string str2(buff);
+ strcard.append(str2.substr(str2.find_first_of("'") + 1, str2.find_last_not_of("'") - (str2.find_first_of("'") + 2)));
+ }
+ log << QString::fromStdString(strcard);
+ break;
+ }
+ pclose(pciconf);
+}
+#endif
void runGlxinfo(QStringList & log)
{
// FIXME: fixed size buffers...
@@ -94,10 +131,14 @@ void PrintInstanceInfo::executeTask()
auto instance = m_parent->instance();
QStringList log;
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX)
::probeProcCpuinfo(log);
::runLspci(log);
::runGlxinfo(log);
+#elif defined(Q_OS_FREEBSD)
+ ::runSysctlHwModel(log);
+ ::runPciconf(log);
+ ::runGlxinfo(log);
#endif
logLines(log, MessageLevel::Launcher);
diff --git a/launcher/tools/MCEditTool.cpp b/launcher/tools/MCEditTool.cpp
index 880327c7..21e1a3b0 100644
--- a/launcher/tools/MCEditTool.cpp
+++ b/launcher/tools/MCEditTool.cpp
@@ -52,7 +52,7 @@ QString MCEditTool::getProgramPath()
#else
const QString mceditPath = path();
QDir mceditDir(mceditPath);
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if (mceditDir.exists("mcedit.sh"))
{
return mceditDir.absoluteFilePath("mcedit.sh");
diff --git a/libraries/iconfix/internal/qiconloader.cpp b/libraries/iconfix/internal/qiconloader.cpp
index 41cf3d50..0d8466f0 100644
--- a/libraries/iconfix/internal/qiconloader.cpp
+++ b/libraries/iconfix/internal/qiconloader.cpp
@@ -320,7 +320,7 @@ Description: Make it so that the QIcon loader honors /usr/share/pixmaps
icon theme specification.
Bug: https://bugreports.qt.nokia.com/browse/QTBUG-12874
*********************************************************************/
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
/* Freedesktop standard says to look in /usr/share/pixmaps last */
if (entries.isEmpty())
{
diff --git a/libraries/systeminfo/src/sys_unix.cpp b/libraries/systeminfo/src/sys_unix.cpp
index fb96c72c..b3098522 100644
--- a/libraries/systeminfo/src/sys_unix.cpp
+++ b/libraries/systeminfo/src/sys_unix.cpp
@@ -47,6 +47,7 @@ Sys::KernelInfo Sys::getKernelInfo()
uint64_t Sys::getSystemRam()
{
std::string token;
+#ifdef Q_OS_LINUX
std::ifstream file("/proc/meminfo");
while(file >> token)
{
@@ -65,6 +66,19 @@ uint64_t Sys::getSystemRam()
// ignore rest of the line
file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
+#elif defined(Q_OS_FREEBSD)
+ char buff[512];
+ FILE *fp = popen("sysctl hw.physmem", "r");
+ if (fp != NULL)
+ {
+ while(fgets(buff, 512, fp) != NULL)
+ {
+ std::string str(buff);
+ uint64_t mem = std::stoull(str.substr(12, std::string::npos));
+ return mem * 1024ull;
+ }
+ }
+#endif
return 0; // nothing found
}