diff options
author | Andreas Schneider <asn@samba.org> | 2016-10-20 10:35:50 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2016-10-20 11:21:59 +0200 |
commit | c989bbc9f6afaad9e4b26501d57d7acb1297d1cb (patch) | |
tree | e49594f2e76f19831d4b96826942963989d5383b | |
parent | f5cddcd300b779131662519d56ae90fcebe459e1 (diff) | |
download | socket_wrapper-c989bbc9f6afaad9e4b26501d57d7acb1297d1cb.tar.gz socket_wrapper-c989bbc9f6afaad9e4b26501d57d7acb1297d1cb.tar.xz socket_wrapper-c989bbc9f6afaad9e4b26501d57d7acb1297d1cb.zip |
cmake: Check for constructor attribute
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | ConfigureChecks.cmake | 12 | ||||
-rw-r--r-- | config.h.cmake | 1 | ||||
-rw-r--r-- | src/socket_wrapper.c | 6 |
3 files changed, 19 insertions, 0 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 48455ef..71b34ce 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -172,6 +172,18 @@ int main(void) { }" HAVE_SOCKADDR_STORAGE) check_c_source_compiles(" +void test_constructor_attribute(void) __attribute__ ((constructor)); + +void test_constructor_attribute(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_CONSTRUCTOR_ATTRIBUTE) + +check_c_source_compiles(" void test_destructor_attribute(void) __attribute__ ((destructor)); void test_destructor_attribute(void) diff --git a/config.h.cmake b/config.h.cmake index a9b8ce8..6786b8a 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -58,6 +58,7 @@ /**************************** OPTIONS ****************************/ #cmakedefine HAVE_GCC_THREAD_LOCAL_STORAGE 1 +#cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1 #cmakedefine HAVE_SOCKADDR_STORAGE 1 diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index e205a36..18c1626 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -95,6 +95,12 @@ enum swrap_dbglvl_e { #define PRINTF_ATTRIBUTE(a,b) #endif /* HAVE_FUNCTION_ATTRIBUTE_FORMAT */ +#ifdef HAVE_CONSTRUCTOR_ATTRIBUTE +#define CONSTRUCTOR_ATTRIBUTE __attribute__ ((constructor)) +#else +#define CONSTRUCTOR_ATTRIBUTE +#endif /* HAVE_CONSTRUCTOR_ATTRIBUTE */ + #ifdef HAVE_DESTRUCTOR_ATTRIBUTE #define DESTRUCTOR_ATTRIBUTE __attribute__ ((destructor)) #else |