diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2017-09-29 11:52:06 -0700 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-09-07 11:52:15 -0700 |
commit | 51e9db370a0ebccaf220e171c3444a0f2c4e1723 (patch) | |
tree | 1636eec99faf01aeb6e08c0753fa4503fdbdbb38 /mesonbuild/compilers/cpp.py | |
parent | 8ca463f9f1d432d059c12da42a18fd13b4604b57 (diff) | |
download | meson-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.py | 6 |
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'): |