| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // -*- Mode: C++ -*- |
| // |
| // Copyright (C) 2016-2020 Red Hat, Inc. |
| // |
| // Author: Dodji Seketeli |
| |
| #ifndef __ABG_INTERNAL_H__ |
| #define __ABG_INTERNAL_H__ |
| #include "config.h" |
| |
| #ifdef HAS_GCC_VISIBILITY_ATTRIBUTE |
| |
| /// This macro makes a declaration be hidden at the binary level. |
| /// |
| /// On ELF systems, this means that the symbol for the declaration |
| /// (function or variable) is going to be local to the file. External |
| /// ELF files won't be able to link against the symbol. |
| #define ABG_HIDDEN __attribute__((visibility("hidden"))) |
| |
| /// This macro makes a declaration be exported at the binary level. |
| /// |
| /// On ELF systems, this means that the symbol for the declaration |
| ///(function or variable) is going to be global. External ELF files |
| ///will be able to link against the symbol. |
| #define ABG_EXPORTED __attribute__((visibility("default"))) |
| #define ABG_BEGIN_EXPORT_DECLARATIONS _Pragma("GCC visibility push(default)") |
| #define ABG_END_EXPORT_DECLARATIONS _Pragma("GCC visibility pop") |
| #else |
| #define ABG_HIDDEN |
| #define ABG_EXPORTED |
| #define ABG_BEGIN_EXPORT_DECLARATIONS |
| #define ABG_END_EXPORT_DECLARATIONS |
| #endif |
| #endif // __ABG_INTERNAL_H__ |