68 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			68 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
 |