1/* 2 * Copyright 2007-2020, 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 0x00010000 40 41#define B_HAIKU_VERSION B_HAIKU_VERSION_1_PRE_BETA_5 42 43/* Haiku ABI */ 44#define B_HAIKU_ABI_MAJOR 0xffff0000 45#define B_HAIKU_ABI_GCC_2 0x00020000 46#define B_HAIKU_ABI_GCC_4 0x00040000 47 48#define B_HAIKU_ABI_GCC_2_ANCIENT 0x00020000 49#define B_HAIKU_ABI_GCC_2_BEOS 0x00020001 50#define B_HAIKU_ABI_GCC_2_HAIKU 0x00020002 51 52#define B_HAIKU_ABI_NAME __HAIKU_ARCH_ABI 53 54#if __GNUC__ == 2 55# define B_HAIKU_ABI B_HAIKU_ABI_GCC_2_HAIKU 56#elif (__GNUC__ >= 4 && __GNUC__ <= 14) || defined(__TINYC__) 57# define B_HAIKU_ABI B_HAIKU_ABI_GCC_4 58#else 59# error Unsupported compiler! 60#endif 61 62 63#define B_HAIKU_BITS __HAIKU_ARCH_BITS 64#define B_HAIKU_PHYSICAL_BITS __HAIKU_ARCH_PHYSICAL_BITS 65 66#ifdef __HAIKU_ARCH_64_BIT 67# define B_HAIKU_64_BIT 1 68#else 69# define B_HAIKU_32_BIT 1 70#endif 71 72#ifdef __HAIKU_ARCH_PHYSICAL_64_BIT 73# define B_HAIKU_PHYSICAL_64_BIT 1 74#else 75# define B_HAIKU_PHYSICAL_32_BIT 1 76#endif 77 78#ifdef __HAIKU_BEOS_COMPATIBLE 79# define B_HAIKU_BEOS_COMPATIBLE 1 80#endif 81 82 83#define _UNUSED(argument) argument 84#define _PACKED __attribute__((packed)) 85#define _PRINTFLIKE(_format_, _args_) \ 86 __attribute__((format(__printf__, _format_, _args_))) 87 88#if __GNUC__ >= 4 89# define _ALIGNED_BY_ARG(_no_) __attribute__((alloc_align(_no_))) 90# define _EXPORT __attribute__((visibility("default"))) 91#else 92# define _ALIGNED_BY_ARG(_no_) 93# define _EXPORT 94#endif 95#define _IMPORT 96 97#define B_DEFINE_SYMBOL_VERSION(function, versionedSymbol) \ 98 __asm__(".symver " function "," versionedSymbol) 99 100 101#ifdef __cplusplus 102# define B_DEFINE_WEAK_ALIAS(name, alias_name) \ 103 extern "C" __typeof(name) alias_name __attribute__((weak, alias(#name))) 104#else 105# define B_DEFINE_WEAK_ALIAS(name, alias_name) \ 106 __typeof(name) alias_name __attribute__((weak, alias(#name))) 107#endif 108 109 110#endif /* _BE_BUILD_H */ 111