From c32eb006108c69a99c651e11a0a4160359e52145 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Jacke?= Date: Fri, 30 Oct 2020 12:55:54 +0100 Subject: [PATCH] waf: check for pragma init/fini support for constructors/destructors Signed-off-by: Bjoern Jacke Reviewed-by: Andrew Bartlett --- buildtools/wafsamba/wscript | 40 ++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index f68f46e03ec..65cc8d3cd5e 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -391,7 +391,26 @@ def configure(conf): strict=True, msg='Checking for library constructor support') - # check HAVE_DESTRUCTOR_ATTRIBUTE + # check HAVE_PRAGMA_INIT alternatively + if not conf.env.HAVE_CONSTRUCTOR_ATTRIBUTE: + conf.CHECK_CODE(''' + #pragma init (test_init) + + void test_init(void) + { + return; + } + + int main(void) { + return 0; + } + ''', + 'HAVE_PRAGMA_INIT', + addmain=False, + strict=True, + msg='Checking for pragma init support') + + # check HAVE_DESTRUCTOR_ATTRIBUTE conf.CHECK_CODE(''' void test_destructor_attribute(void) __attribute__ ((destructor)); @@ -409,6 +428,25 @@ def configure(conf): strict=True, msg='Checking for library destructor support') + # check HAVE_PRAGMA_FINI alternatively + if not conf.env.HAVE_DESTRUCTOR_ATTRIBUTE: + conf.CHECK_CODE(''' + #pragma fini (test_fini) + + void test_fini(void) + { + return; + } + + int main(void) { + return 0; + } + ''', + 'HAVE_PRAGMA_FINI', + addmain=False, + strict=True, + msg='Checking for pragma fini support') + conf.CHECK_CODE(''' void test_attribute(void) __attribute__ (()); -- 2.47.3