mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Added detection of Microsoft WSL/WSL2 Linux flavors.
Added tracing of the platform detection.
This commit is contained in:
		
							parent
							
								
									2c76c42baa
								
							
						
					
					
						commit
						33b63b35a2
					
				
					 2 changed files with 25 additions and 2 deletions
				
			
		|  | @ -6,6 +6,8 @@ | |||
| 
 | ||||
| #include <wx/stdpaths.h> | ||||
| 
 | ||||
| #include <boost/log/trivial.hpp> | ||||
| 
 | ||||
| namespace Slic3r { | ||||
| namespace GUI { | ||||
| 
 | ||||
|  | @ -15,12 +17,15 @@ 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.
 | ||||
|  | @ -29,16 +34,30 @@ void detect_platform() | |||
| 		if (f) { | ||||
| 			char buf[4096]; | ||||
| 			// Read the 1st line.
 | ||||
| 			if (::fgets(buf, 4096, f) && strstr(buf, "Chromium OS") != nullptr) | ||||
| 				s_platform_flavor = PlatformFlavor::LinuxOnChromium; | ||||
| 			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; | ||||
|  |  | |||
|  | @ -23,6 +23,10 @@ enum class PlatformFlavor | |||
| 	// For Platform::Linux
 | ||||
| 	GenericLinux, | ||||
| 	LinuxOnChromium, | ||||
| 	// Microsoft's Windows on Linux (Linux kernel simulated on NTFS kernel)
 | ||||
| 	WSL, | ||||
| 	// Microsoft's Windows on Linux, version 2 (virtual machine)
 | ||||
| 	WSL2, | ||||
| 	// For Platform::BSDUnix
 | ||||
| 	OpenBSD, | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik