mirror of
https://github.com/FULU-Foundation/OrcaSlicer-bambulab.git
synced 2026-05-15 07:32:39 -07:00
the Chromebooks share their file system to Linux using the 9p file system, which does not support setting file ownership. Newly PrusaSlicer will detect platform and it will not panick if copy_file() cannot set file ownership after copying. It just logs the incident, and on chromebooks the loglevel for that incident is "Info", not "Error". Adjusted the full screen mode to contain menu bar. Moved Platform.cpp/hpp to libslic3r
71 lines
1.9 KiB
C++
71 lines
1.9 KiB
C++
#include "Platform.hpp"
|
|
|
|
#include <boost/log/trivial.hpp>
|
|
|
|
namespace Slic3r {
|
|
|
|
static auto s_platform = Platform::Uninitialized;
|
|
static auto s_platform_flavor = PlatformFlavor::Uninitialized;
|
|
|
|
void detect_platform()
|
|
{
|
|
#if defined(_WIN32)
|
|
BOOST_LOG_TRIVIAL(info) << "Platform: Windows";
|
|
s_platform = Platform::Windows;
|
|
s_platform_flavor = PlatformFlavor::Generic;
|
|
#elif defined(__APPLE__)
|
|
BOOST_LOG_TRIVIAL(info) << "Platform: OSX";
|
|
s_platform = Platform::OSX;
|
|
s_platform_flavor = PlatformFlavor::Generic;
|
|
#elif defined(__linux__)
|
|
BOOST_LOG_TRIVIAL(info) << "Platform: Linux";
|
|
s_platform = Platform::Linux;
|
|
s_platform_flavor = PlatformFlavor::GenericLinux;
|
|
// Test for Chromium.
|
|
{
|
|
FILE *f = ::fopen("/proc/version", "rt");
|
|
if (f) {
|
|
char buf[4096];
|
|
// Read the 1st line.
|
|
if (::fgets(buf, 4096, f)) {
|
|
if (strstr(buf, "Chromium OS") != nullptr) {
|
|
s_platform_flavor = PlatformFlavor::LinuxOnChromium;
|
|
BOOST_LOG_TRIVIAL(info) << "Platform flavor: LinuxOnChromium";
|
|
} else if (strstr(buf, "microsoft") != nullptr || strstr(buf, "Microsoft") != nullptr) {
|
|
if (boost::filesystem::exists("/run/WSL") && getenv("WSL_INTEROP") != nullptr) {
|
|
BOOST_LOG_TRIVIAL(info) << "Platform flavor: WSL2";
|
|
s_platform_flavor = PlatformFlavor::WSL2;
|
|
} else {
|
|
BOOST_LOG_TRIVIAL(info) << "Platform flavor: WSL";
|
|
s_platform_flavor = PlatformFlavor::WSL;
|
|
}
|
|
}
|
|
}
|
|
::fclose(f);
|
|
}
|
|
}
|
|
#elif defined(__OpenBSD__)
|
|
BOOST_LOG_TRIVIAL(info) << "Platform: OpenBSD";
|
|
s_platform = Platform::BSDUnix;
|
|
s_platform_flavor = PlatformFlavor::OpenBSD;
|
|
#else
|
|
// This should not happen.
|
|
BOOST_LOG_TRIVIAL(info) << "Platform: Unknown";
|
|
static_assert(false, "Unknown platform detected");
|
|
s_platform = Platform::Unknown;
|
|
s_platform_flavor = PlatformFlavor::Unknown;
|
|
#endif
|
|
}
|
|
|
|
Platform platform()
|
|
{
|
|
return s_platform;
|
|
}
|
|
|
|
PlatformFlavor platform_flavor()
|
|
{
|
|
return s_platform_flavor;
|
|
}
|
|
|
|
} // namespace Slic3r
|