From c989bbc9f6afaad9e4b26501d57d7acb1297d1cb Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 20 Oct 2016 10:35:50 +0200 Subject: cmake: Check for constructor attribute Signed-off-by: Andreas Schneider Reviewed-by: Michael Adam --- ConfigureChecks.cmake | 12 ++++++++++++ config.h.cmake | 1 + src/socket_wrapper.c | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 48455ef..71b34ce 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -171,6 +171,18 @@ int main(void) { return 0; }" 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)); 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 -- cgit