Changes required to support FreeBSD
This commit is contained in:
parent
80beccb2c4
commit
7179e75e70
@ -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 ########
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -23,5 +23,5 @@ set(gp_cmd_paths ${gp_cmd_paths}
|
||||
)
|
||||
|
||||
include(BundleUtilities)
|
||||
fixup_bundle("@APPS@" "${QTPLUGINS}" "@DIRS@")
|
||||
|
||||
|
||||
|
@ -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_"))
|
||||
{
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
@ -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))
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user