haiku/headers/os/BeBuild.h
X512 958d3f4375 BeBuild: set default visibility for _EXPORT
This is required for building shared libraries with hidden by default symbol
visiblility such as mesa.

Change-Id: I7150629aaea61d7c9b6e641d32913c5cc7c96543
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2159
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-01-30 00:32:32 +00:00

102 lines
2.7 KiB
C

/*
* Copyright 2007-2018, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BE_BUILD_H
#define _BE_BUILD_H
#include <config/HaikuConfig.h>
#define B_BEOS_VERSION_4 0x0400
#define B_BEOS_VERSION_4_5 0x0450
#define B_BEOS_VERSION_5 0x0500
#define B_BEOS_VERSION B_BEOS_VERSION_5
#define B_BEOS_VERSION_MAUI B_BEOS_VERSION_5
/* Haiku (API) version */
#define B_HAIKU_VERSION_BEOS 0x00000001
#define B_HAIKU_VERSION_BONE 0x00000002
#define B_HAIKU_VERSION_DANO 0x00000003
#define B_HAIKU_VERSION_1_ALPHA_1 0x00000100
#define B_HAIKU_VERSION_1_PRE_ALPHA_2 0x00000101
#define B_HAIKU_VERSION_1_ALPHA_2 0x00000200
#define B_HAIKU_VERSION_1_PRE_ALPHA_3 0x00000201
#define B_HAIKU_VERSION_1_ALPHA_3 0x00000300
#define B_HAIKU_VERSION_1_PRE_ALPHA_4 0x00000301
#define B_HAIKU_VERSION_1_ALPHA_4 0x00000400
#define B_HAIKU_VERSION_1_PRE_BETA_1 0x00000401
#define B_HAIKU_VERSION_1_BETA_1 0x00000500
#define B_HAIKU_VERSION_1_PRE_BETA_2 0x00000501
#define B_HAIKU_VERSION_1 0x00010000
#define B_HAIKU_VERSION B_HAIKU_VERSION_1_PRE_BETA_2
/* Haiku ABI */
#define B_HAIKU_ABI_MAJOR 0xffff0000
#define B_HAIKU_ABI_GCC_2 0x00020000
#define B_HAIKU_ABI_GCC_4 0x00040000
#define B_HAIKU_ABI_GCC_2_ANCIENT 0x00020000
#define B_HAIKU_ABI_GCC_2_BEOS 0x00020001
#define B_HAIKU_ABI_GCC_2_HAIKU 0x00020002
#define B_HAIKU_ABI_NAME __HAIKU_ARCH_ABI
#if __GNUC__ == 2
# define B_HAIKU_ABI B_HAIKU_ABI_GCC_2_HAIKU
#elif (__GNUC__ >= 4 && __GNUC__ <= 9) || defined(__TINYC__)
# define B_HAIKU_ABI B_HAIKU_ABI_GCC_4
#else
# error Unsupported compiler!
#endif
#define B_HAIKU_BITS __HAIKU_ARCH_BITS
#define B_HAIKU_PHYSICAL_BITS __HAIKU_ARCH_PHYSICAL_BITS
#ifdef __HAIKU_ARCH_64_BIT
# define B_HAIKU_64_BIT 1
#else
# define B_HAIKU_32_BIT 1
#endif
#ifdef __HAIKU_ARCH_PHYSICAL_64_BIT
# define B_HAIKU_PHYSICAL_64_BIT 1
#else
# define B_HAIKU_PHYSICAL_32_BIT 1
#endif
#ifdef __HAIKU_BEOS_COMPATIBLE
# define B_HAIKU_BEOS_COMPATIBLE 1
#endif
#define _UNUSED(argument) argument
#define _PACKED __attribute__((packed))
#define _PRINTFLIKE(_format_, _args_) \
__attribute__((format(__printf__, _format_, _args_)))
#if __GNUC__ >= 4
# define _EXPORT __attribute__((visibility("default")))
#else
# define _EXPORT
#endif
#define _IMPORT
#define B_DEFINE_SYMBOL_VERSION(function, versionedSymbol) \
__asm__(".symver " function "," versionedSymbol)
#ifdef __cplusplus
# define B_DEFINE_WEAK_ALIAS(name, alias_name) \
extern "C" __typeof(name) alias_name __attribute__((weak, alias(#name)))
#else
# define B_DEFINE_WEAK_ALIAS(name, alias_name) \
__typeof(name) alias_name __attribute__((weak, alias(#name)))
#endif
#endif /* _BE_BUILD_H */