1 /* 2 * Copyright 2007-2024, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _BE_BUILD_H 6 #define _BE_BUILD_H 7 8 9 #include <config/HaikuConfig.h> 10 11 12 #define B_BEOS_VERSION_4 0x0400 13 #define B_BEOS_VERSION_4_5 0x0450 14 #define B_BEOS_VERSION_5 0x0500 15 16 #define B_BEOS_VERSION B_BEOS_VERSION_5 17 #define B_BEOS_VERSION_MAUI B_BEOS_VERSION_5 18 19 /* Haiku (API) version */ 20 #define B_HAIKU_VERSION_BEOS 0x00000001 21 #define B_HAIKU_VERSION_BONE 0x00000002 22 #define B_HAIKU_VERSION_DANO 0x00000003 23 #define B_HAIKU_VERSION_1_ALPHA_1 0x00000100 24 #define B_HAIKU_VERSION_1_PRE_ALPHA_2 0x00000101 25 #define B_HAIKU_VERSION_1_ALPHA_2 0x00000200 26 #define B_HAIKU_VERSION_1_PRE_ALPHA_3 0x00000201 27 #define B_HAIKU_VERSION_1_ALPHA_3 0x00000300 28 #define B_HAIKU_VERSION_1_PRE_ALPHA_4 0x00000301 29 #define B_HAIKU_VERSION_1_ALPHA_4 0x00000400 30 #define B_HAIKU_VERSION_1_PRE_BETA_1 0x00000401 31 #define B_HAIKU_VERSION_1_BETA_1 0x00000500 32 #define B_HAIKU_VERSION_1_PRE_BETA_2 0x00000501 33 #define B_HAIKU_VERSION_1_BETA_2 0x00000600 34 #define B_HAIKU_VERSION_1_PRE_BETA_3 0x00000601 35 #define B_HAIKU_VERSION_1_BETA_3 0x00000700 36 #define B_HAIKU_VERSION_1_PRE_BETA_4 0x00000701 37 #define B_HAIKU_VERSION_1_BETA_4 0x00000800 38 #define B_HAIKU_VERSION_1_PRE_BETA_5 0x00000801 39 #define B_HAIKU_VERSION_1_BETA_5 0x00000900 40 #define B_HAIKU_VERSION_1_PRE_BETA_6 0x00000901 41 #define B_HAIKU_VERSION_1 0x00010000 42 43 #define B_HAIKU_VERSION B_HAIKU_VERSION_1_PRE_BETA_6 44 45 /* Haiku ABI */ 46 #define B_HAIKU_ABI_MAJOR 0xffff0000 47 #define B_HAIKU_ABI_GCC_2 0x00020000 48 #define B_HAIKU_ABI_GCC_4 0x00040000 49 50 #define B_HAIKU_ABI_GCC_2_ANCIENT 0x00020000 51 #define B_HAIKU_ABI_GCC_2_BEOS 0x00020001 52 #define B_HAIKU_ABI_GCC_2_HAIKU 0x00020002 53 54 #define B_HAIKU_ABI_NAME __HAIKU_ARCH_ABI 55 56 #if __GNUC__ == 2 57 # define B_HAIKU_ABI B_HAIKU_ABI_GCC_2_HAIKU 58 #elif (__GNUC__ >= 4 && __GNUC__ <= 14) || defined(__TINYC__) 59 # define B_HAIKU_ABI B_HAIKU_ABI_GCC_4 60 #else 61 # error Unsupported compiler! 62 #endif 63 64 65 #define B_HAIKU_BITS __HAIKU_ARCH_BITS 66 #define B_HAIKU_PHYSICAL_BITS __HAIKU_ARCH_PHYSICAL_BITS 67 68 #ifdef __HAIKU_ARCH_64_BIT 69 # define B_HAIKU_64_BIT 1 70 #else 71 # define B_HAIKU_32_BIT 1 72 #endif 73 74 #ifdef __HAIKU_ARCH_PHYSICAL_64_BIT 75 # define B_HAIKU_PHYSICAL_64_BIT 1 76 #else 77 # define B_HAIKU_PHYSICAL_32_BIT 1 78 #endif 79 80 #ifdef __HAIKU_BEOS_COMPATIBLE 81 # define B_HAIKU_BEOS_COMPATIBLE 1 82 #endif 83 84 85 #define _UNUSED(argument) argument 86 #define _PACKED __attribute__((packed)) 87 #define _PRINTFLIKE(_format_, _args_) \ 88 __attribute__((format(__printf__, _format_, _args_))) 89 90 #if __GNUC__ >= 4 91 # define _ALIGNED_BY_ARG(_no_) __attribute__((alloc_align(_no_))) 92 # define _EXPORT __attribute__((visibility("default"))) 93 #else 94 # define _ALIGNED_BY_ARG(_no_) 95 # define _EXPORT 96 #endif 97 #define _IMPORT 98 99 #define B_DEFINE_SYMBOL_VERSION(function, versionedSymbol) \ 100 __asm__(".symver " function "," versionedSymbol) 101 102 103 #ifdef __cplusplus 104 # define B_DEFINE_WEAK_ALIAS(name, alias_name) \ 105 extern "C" __typeof(name) alias_name __attribute__((weak, alias(#name))) 106 #else 107 # define B_DEFINE_WEAK_ALIAS(name, alias_name) \ 108 __typeof(name) alias_name __attribute__((weak, alias(#name))) 109 #endif 110 111 112 #endif /* _BE_BUILD_H */ 113