From 83a4c3c3c53c6ab171ee786ba7c9f509d73f36fd Mon Sep 17 00:00:00 2001 From: Björn Jacke Date: Fri, 30 Oct 2020 15:31:42 +0100 Subject: configure: check for pragma init/fini for constructors/destructors Signed-off-by: Bjoern Jacke Reviewed-by: Andreas Schneider --- ConfigureChecks.cmake | 26 ++++++++++++++++++++++++++ config.h.cmake | 2 ++ 2 files changed, 28 insertions(+) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 4a2f55e..3c8e615 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -216,6 +216,32 @@ int main(void) { return 0; }" HAVE_DESTRUCTOR_ATTRIBUTE) +check_c_source_compiles(" +#pragma init (test_constructor) +void test_constructor(void); + +void test_constructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_INIT) + +check_c_source_compiles(" +#pragma fini (test_destructor) +void test_destructor(void); + +void test_destructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_FINI) + check_c_source_compiles(" #define FALL_THROUGH __attribute__((fallthrough)) diff --git a/config.h.cmake b/config.h.cmake index d3ceb23..38166d2 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -66,6 +66,8 @@ #cmakedefine HAVE_GCC_THREAD_LOCAL_STORAGE 1 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1 +#cmakedefine HAVE_PRAGMA_INIT 1 +#cmakedefine HAVE_PRAGMA_FINI 1 #cmakedefine HAVE_FALLTHROUGH_ATTRIBUTE 1 #cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1 #cmakedefine HAVE_SOCKADDR_STORAGE 1 -- cgit