69 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace lt {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum class Platform : uint8_t
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									/** The GNU/Linux platform.
							 | 
						||
| 
								 | 
							
									 * Tested on the following distros: arch-x86_64
							 | 
						||
| 
								 | 
							
									 * @note: Named like so because `linux` is a built-in identifier.
							 | 
						||
| 
								 | 
							
									 * */
							 | 
						||
| 
								 | 
							
									gnu_linux,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * The Microsoft Windows(tm) platform.
							 | 
						||
| 
								 | 
							
									 * Tested on the following architectures: x86_64
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									windows,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * The apple's macOS platform.
							 | 
						||
| 
								 | 
							
									 * Currently not supported.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									mac,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** The compiler that was used for compiling the project. */
							 | 
						||
| 
								 | 
							
								enum class Compiler : uint8_t
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									clang,
							 | 
						||
| 
								 | 
							
									gcc,
							 | 
						||
| 
								 | 
							
									msvc,
							 | 
						||
| 
								 | 
							
									apple_clang,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace constants {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(LIGHT_PLATFORM_WINDOWS)
							 | 
						||
| 
								 | 
							
									#define lt_win(x)
							 | 
						||
| 
								 | 
							
								constexpr auto platform = Platform::windows;
							 | 
						||
| 
								 | 
							
								constexpr auto platform_name = "windows";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									#undef LIGHT_PLATFORM_WINDOWS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(LIGHT_PLATFORM_LINUX)
							 | 
						||
| 
								 | 
							
								constexpr auto platform = Platform::gnu_linux;
							 | 
						||
| 
								 | 
							
								constexpr auto platform_name = "gnu_linux";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(LIGHT_PLATFORM_MAC)
							 | 
						||
| 
								 | 
							
									#define lt_mac(x) x
							 | 
						||
| 
								 | 
							
								constexpr auto platform = Platform::mac;
							 | 
						||
| 
								 | 
							
								constexpr auto platform_name = "mac";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
									#error "Unsupported platform: Unknown"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __clang__
							 | 
						||
| 
								 | 
							
								constexpr auto compiler = Compiler::clang;
							 | 
						||
| 
								 | 
							
								constexpr auto compiler_name = "clang";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** @todo(Light): insert the full identifier, including version information and such */
							 | 
						||
| 
								 | 
							
								constexpr auto full_compiler_identifier = "clang";
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // namespace constants
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // namespace lt
							 |