diff --git a/build.py b/build.py index 611a275..b860e5c 100755 --- a/build.py +++ b/build.py @@ -70,6 +70,7 @@ else: # 'debug' cc_flags.append('-g') cc_flags.append('-O0') cc_defines.append('DEBUG') +cc_defines.append(f'_CIA_OS_{target.upper()}') # Generate TinyRT headers for the target platform print(f"==> Generating TinyRT header for {target}") diff --git a/include/cia-def.h b/include/cia-def.h index 89551bf..a4d2be9 100644 --- a/include/cia-def.h +++ b/include/cia-def.h @@ -6,40 +6,14 @@ #define noreturn _Noreturn #define NULL ((void *)0) -// Platform macros -#define _CIA_LINUX 1 -#define _CIA_WINDOWS 2 -#define _CIA_ANDROID 3 - -// Platform detection -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) - #define _CIA_OS _CIA_WINDOWS - #if !defined(_WIN64) - #error "32-bit windows is not supported" - #endif -#elif __APPLE__ - #error "Apple OS's not supported and will never be unless you want to write the support for it" -#elif __ANDROID__ - #define _CIA_OS _CIA_ANDROID -#elif __linux__ - #define _CIA_OS _CIA_LINUX -#else - #error "Unable to detect the OS" -#endif - -// Convenience platform checking macros -#define _CIA_OS_LINUX() (_CIA_OS == _CIA_LINUX) -#define _CIA_OS_WINDOWS() (_CIA_OS == _CIA_WINDOWS) -#define _CIA_OS_ANDROID() (_CIA_OS == _CIA_ANDROID) - // Assert commonly-accepted platform-invariant sizes static_assert(sizeof(char) == 1, "Char isn't 1 bytes long"); static_assert(sizeof(short) == 2, "Short isn't 2 bytes long"); static_assert(sizeof(int) == 4, "Int isn't 4 bytes long"); static_assert(sizeof(long long int) == 8, "Long long isn't 8 bytes long"); -#if _CIA_OS_LINUX() +#if defined(_CIA_OS_LINUX) static_assert(sizeof(long) == 8, "Long on linux isn't 8 bytes"); -#elif _CIA_OS_WINDOWS() +#elif defined(_CIA_OS_WINDOWS) static_assert(sizeof(long) == 4, "Long on windows isn't 4 bytes"); #endif @@ -50,10 +24,10 @@ typedef signed short int16_t; typedef unsigned short uint16_t; typedef signed int int32_t; typedef unsigned int uint32_t; -#if _CIA_OS_LINUX() +#if defined(_CIA_OS_LINUX) typedef signed long int64_t; typedef unsigned long uint64_t; -#elif _CIA_OS_WINDOWS() +#elif defined(_CIA_OS_WINDOWS) typedef signed long long int64_t; typedef unsigned long long uint64_t; #else