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)
 |