aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/cpp.py
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 /mesonbuild/compilers/cpp.py
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 'mesonbuild/compilers/cpp.py')
-rw-r--r--mesonbuild/compilers/cpp.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index 85766f7..2173655 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -31,8 +31,14 @@ from .compilers import (
ArmCompiler,
ArmclangCompiler,
)
+from .c_function_attributes import CXX_FUNC_ATTRIBUTES
class CPPCompiler(CCompiler):
+
+ @classmethod
+ def attribute_check_func(cls, name):
+ return CXX_FUNC_ATTRIBUTES.get(name, super().attribute_check_func(name))
+
def __init__(self, exelist, version, is_cross, exe_wrap, **kwargs):
# If a child ObjCPP class has already set it, don't set it ourselves
if not hasattr(self, 'language'):