Chris@87: """This module implements additional tests ala autoconf which can be useful. Chris@87: Chris@87: """ Chris@87: from __future__ import division, absolute_import, print_function Chris@87: Chris@87: Chris@87: # We put them here since they could be easily reused outside numpy.distutils Chris@87: Chris@87: def check_inline(cmd): Chris@87: """Return the inline identifier (may be empty).""" Chris@87: cmd._check_compiler() Chris@87: body = """ Chris@87: #ifndef __cplusplus Chris@87: static %(inline)s int static_func (void) Chris@87: { Chris@87: return 0; Chris@87: } Chris@87: %(inline)s int nostatic_func (void) Chris@87: { Chris@87: return 0; Chris@87: } Chris@87: #endif""" Chris@87: Chris@87: for kw in ['inline', '__inline__', '__inline']: Chris@87: st = cmd.try_compile(body % {'inline': kw}, None, None) Chris@87: if st: Chris@87: return kw Chris@87: Chris@87: return '' Chris@87: Chris@87: def check_compiler_gcc4(cmd): Chris@87: """Return True if the C compiler is GCC 4.x.""" Chris@87: cmd._check_compiler() Chris@87: body = """ Chris@87: int Chris@87: main() Chris@87: { Chris@87: #if (! defined __GNUC__) || (__GNUC__ < 4) Chris@87: #error gcc >= 4 required Chris@87: #endif Chris@87: } Chris@87: """ Chris@87: return cmd.try_compile(body, None, None)