aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Reference-tables.md
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2017-09-29 11:52:06 -0700
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-09-07 11:52:15 -0700
commit51e9db370a0ebccaf220e171c3444a0f2c4e1723 (patch)
tree1636eec99faf01aeb6e08c0753fa4503fdbdbb38 /docs/markdown/Reference-tables.md
parent8ca463f9f1d432d059c12da42a18fd13b4604b57 (diff)
downloadmeson-51e9db370a0ebccaf220e171c3444a0f2c4e1723.zip
meson-51e9db370a0ebccaf220e171c3444a0f2c4e1723.tar.gz
meson-51e9db370a0ebccaf220e171c3444a0f2c4e1723.tar.bz2
Add method to check for C/C++ function attributes
It's fairly common on Linux and *BSD platforms to check for these attributes existence, so it makes sense to me to have this checking build into meson itself. Autotools also has a builtin for handling these, and by building them in we can short circuit cases that we know that these don't exist (MSVC). Additionally this adds support for two common MSVC __declspec attributes, dllimport and dllexport. This implements the declspec version (even though GCC has an __attribute__ version that both it and clang support), since GCC and Clang support the MSVC version as well. Thus it seems reasonable to assume that most projects will use the __declspec version over teh __attribute__ version.
Diffstat (limited to 'docs/markdown/Reference-tables.md')
-rw-r--r--docs/markdown/Reference-tables.md63
1 files changed, 63 insertions, 0 deletions
diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md
index 46bcc3d..ab79abd 100644
--- a/docs/markdown/Reference-tables.md
+++ b/docs/markdown/Reference-tables.md
@@ -99,3 +99,66 @@ These are the parameter names for passing language specific arguments to your bu
| Objective C++ | objcpp_args |
| Rust | rust_args |
| Vala | vala_args |
+
+
+## Function Attributes
+
+These are the parameters names that are supported using
+`compiler.has_function_attribute()` or
+`compiler.get_supported_function_attributes()`
+
+### GCC __attribute__
+
+These values are supported using the GCC style `__attribute__` annotations,
+which are supported by GCC, Clang, and other compilers.
+
+
+| Name |
+|----------------------|
+| alias |
+| aligned |
+| alloc_size |
+| always_inline |
+| artificial |
+| cold |
+| const |
+| constructor |
+| constructor_priority |
+| deprecated |
+| destructor |
+| error |
+| externally_visible |
+| fallthrough |
+| flatten |
+| format |
+| format_arg |
+| gnu_inline |
+| hot |
+| ifunc |
+| malloc |
+| noclone |
+| noinline |
+| nonnull |
+| noreturn |
+| nothrow |
+| optimize |
+| packed |
+| pure |
+| returns_nonnull |
+| unused |
+| used |
+| visibility |
+| warning |
+| warn_unused_result |
+| weak |
+| weakreaf |
+
+### MSVC __declspec
+
+These values are supported using the MSVC style `__declspec` annotation,
+which are supported by MSVC, GCC, Clang, and other compilers.
+
+| Name |
+|----------------------|
+| dllexport |
+| dllimport |