79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| #pragma once
 | |
| 
 | |
| #if !defined(MIJIN_DETECT_HPP_INCLUDED)
 | |
| #define MIJIN_DETECT_HPP_INCLUDED 1
 | |
| 
 | |
| namespace mijin
 | |
| {
 | |
| 
 | |
| //
 | |
| // public defines
 | |
| //
 | |
| 
 | |
| #if !defined(__has_include)
 | |
|     #define __has_include(x) (false)
 | |
| #endif
 | |
| 
 | |
| #define MIJIN_OS_UNKNOWN 0
 | |
| #define MIJIN_OS_LINUX   1
 | |
| #define MIJIN_OS_WINDOWS 2
 | |
| #define MIJIN_OS_OSX     3
 | |
| 
 | |
| #if !defined(MIJIN_TARGET_OS)
 | |
|     #if defined(__linux__)
 | |
|         #define MIJIN_TARGET_OS MIJIN_OS_LINUX
 | |
|     #elif defined(_WIN32)
 | |
|         #define MIJIN_TARGET_OS MIJIN_OS_WINDOWS
 | |
|     #else // TODO: macos
 | |
|         #define MIJIN_TARGET_OS MIJIN_OS_UNKNOWN
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #define MIJIN_COMPILER_UNKNOWN 0
 | |
| #define MIJIN_COMPILER_GCC     1
 | |
| #define MIJIN_COMPILER_CLANG   2
 | |
| #define MIJIN_COMPILER_MSVC    3
 | |
| 
 | |
| #if !defined(MIJIN_COMPILER)
 | |
|     #if defined(__clang__)
 | |
|         #define MIJIN_COMPILER MIJIN_COMPILER_CLANG
 | |
|     #elif defined(__GNUC__)
 | |
|         #define MIJIN_COMPILER MIJIN_COMPILER_GCC
 | |
|     #elif defined(_MSC_VER)
 | |
|         #define MIJIN_COMPILER MIJIN_COMPILER_MSVC
 | |
|     #else
 | |
|         #define MIJIN_COMPILER MIJIN_COMPILER_UNKNOWN
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #define MIJIN_STDLIB_UNKNOWN 0
 | |
| #define MIJIN_STDLIB_GLIBC   1
 | |
| 
 | |
| #if !defined(MIJIN_STDLIB)
 | |
|     #if __has_include(<features.h>)
 | |
|         #include <features.h>
 | |
|     #endif
 | |
|     #if defined(__GLIBC__)
 | |
|         #define MIJIN_STDLIB MIJIN_STDLIB_GLIBC
 | |
|     #else
 | |
|         #define MIJIN_STDLIB MIJIN_STDLIB_UNKNOWN
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| //
 | |
| // public constants
 | |
| //
 | |
| 
 | |
| //
 | |
| // public types
 | |
| //
 | |
| 
 | |
| //
 | |
| // public functions
 | |
| //
 | |
| 
 | |
| } // namespace mijin
 | |
| 
 | |
| #endif // !defined(MIJIN_DETECT_HPP_INCLUDED)
 |