rstdlib

Generic Base Layer for writing C Programs
git clone anongit@rnpnr.xyz:rstdlib.git
Log | Files | Refs | Feed | README | LICENSE

rstd_compiler.h (1337B)


      1 ///////////////////////////////////
      2 // NOTE: Compiler Context Cracking
      3 #ifndef RSTD_COMPILER_H
      4 #define RSTD_COMPILER_H
      5 
      6 #if defined(__linux__)
      7   #define OS_LINUX   1
      8 #elif defined(__APPLE__)
      9   #define OS_MACOS   1
     10 #elif defined(_WIN32)
     11   #define OS_WINDOWS 1
     12 #else
     13   #error Unsupported Operating System
     14 #endif
     15 
     16 #if   defined(__clang__)
     17   #define COMPILER_CLANG 1
     18 #elif defined(_MSC_VER)
     19   #define COMPILER_MSVC  1
     20 #elif defined(__GNUC__)
     21   #define COMPILER_GCC   1
     22 #else
     23   #error Unsupported Compiler
     24 #endif
     25 
     26 #if COMPILER_MSVC
     27   #if defined(_M_AMD64)
     28     #define ARCH_X64   1
     29   #elif defined(_M_ARM64)
     30     #define ARCH_ARM64 1
     31   #else
     32     #error Unsupported Architecture
     33   #endif
     34 #else
     35   #if defined(__x86_64__)
     36     #define ARCH_X64   1
     37   #elif defined(__aarch64__)
     38     #define ARCH_ARM64 1
     39   #else
     40     #error Unsupported Architecture
     41   #endif
     42 #endif
     43 
     44 #if !defined(OS_WINDOWS)
     45   #define OS_WINDOWS 0
     46 #endif
     47 #if !defined(OS_LINUX)
     48   #define OS_LINUX   0
     49 #endif
     50 #if !defined(OS_MACOS)
     51   #define OS_MACOS   0
     52 #endif
     53 #if !defined(COMPILER_CLANG)
     54   #define COMPILER_CLANG 0
     55 #endif
     56 #if !defined(COMPILER_MSVC)
     57   #define COMPILER_MSVC  0
     58 #endif
     59 #if !defined(COMPILER_GCC)
     60   #define COMPILER_GCC   0
     61 #endif
     62 #if !defined(ARCH_X64)
     63   #define ARCH_X64   0
     64 #endif
     65 #if !defined(ARCH_ARM64)
     66   #define ARCH_ARM64 0
     67 #endif
     68 
     69 #endif /* RSTD_COMPILER_H */