xref: /petsc/config/BuildSystem/config/utilities/featureTestMacros.py (revision 617be9a01d03d105f1188965f6c3060ca6dd54cd)
1import config.base
2
3class Configure(config.base.Configure):
4    def __init__(self, framework):
5        config.base.Configure.__init__(self, framework)
6
7    def setupDependencies(self, framework):
8        config.base.Configure.setupDependencies(self, framework)
9        self.compilers = framework.require('config.compilers', self)
10        self.functions = framework.require('config.functions', self)
11        self.headers   = framework.require('config.headers', self)
12
13    def configureFeatureTestMacros(self):
14        '''Checks if certain feature test macros are support'''
15        if self.checkCompile('#define _POSIX_C_SOURCE 200112L\n#include <sysctl.h>',''):
16            self.addDefine('_POSIX_C_SOURCE_200112L', '1')
17        if self.checkCompile('#define _BSD_SOURCE\n#include<stdlib.h>',''):
18            self.addDefine('_BSD_SOURCE', '1')
19        if self.checkCompile('#define _DEFAULT_SOURCE\n#include<stdlib.h>',''):
20            self.addDefine('_DEFAULT_SOURCE', '1')
21        if self.checkCompile('#define _GNU_SOURCE\n#include <sched.h>','cpu_set_t mset;\nCPU_ZERO(&mset)'):
22            self.addDefine('_GNU_SOURCE', '1')
23        if self.checkCompile('#define _GNU_SOURCE\n#include <stdlib.h>\n#include <dlfcn.h>','Dl_info info;\nif (dladdr(*(void **)&exit, &info) == 0) return 1;\n'):
24            self.addDefine('_GNU_SOURCE', '1')
25
26    def configure(self):
27        self.executeTest(self.configureFeatureTestMacros)
28