[geany/geany-plugins] cd59d3: waf: Add a check for C99 compiler support

Colomban Wendling git-noreply at xxxxx
Thu Apr 23 15:56:10 UTC 2015


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Thu, 23 Apr 2015 15:56:10 UTC
Commit:      cd59d3877ed2448e92b6c1ae18a7a2baace196b6
             https://github.com/geany/geany-plugins/commit/cd59d3877ed2448e92b6c1ae18a7a2baace196b6

Log Message:
-----------
waf: Add a check for C99 compiler support


Modified Paths:
--------------
    build/wafutils.py

Modified: build/wafutils.py
61 lines changed, 61 insertions(+), 0 deletions(-)
===================================================================
@@ -179,6 +179,67 @@ def check_cfg_cached(conf, **kw):
     return result
 
 
+def check_c99(conf):
+    key = 'c99'
+    if key in cache:
+        v = cache[key]
+        if v:
+            raise v
+        return True
+
+    # FIXME: improve some checks?
+    # TODO: look at Autoconf's C99 checks?
+    fragment = '''
+    // single-line comments
+
+    #include <stdbool.h>
+
+    struct s { int a, b; };
+
+    // inlines
+    static inline void fun_inline(struct s param) {}
+
+    int main(void) {
+        _Bool b = false;
+
+        // variable declaration in for body
+        for (int i = 0; i < 2; i++);
+
+        // compound literals
+        fun_inline((struct s) { 1, 2 });
+
+        // mixed declarations and code
+        int mixed = 0;
+
+        // named initializers
+        struct s name_inited = {
+            .a = 42,
+            .b = 64
+        };
+
+        return (b || mixed || ! name_inited.a);
+    }
+    '''
+
+    exc = None
+    # list of flags is stolen from Autoconf 2.69
+    flags = ['', '-std=gnu99', '-std=c99', '-c99', '-AC99',
+             '-D_STDC_C99=', '-qlanglvl=extc99']
+    for flag in flags:
+        try:
+            desc = ['with flag %s' % flag, 'with no flags'][not flag]
+            conf.check_cc(fragment=fragment, uselib_store='C99', cflags=flag,
+                          msg="Checking for C99 support (%s)" % desc)
+            exc = None
+            break
+        except ConfigurationError as e:
+            exc = e
+    cache[key] = exc
+    if exc:
+        raise exc
+    return True
+
+
 def get_enabled_plugins(conf):
     plugins = get_plugins()
     enabled_plugins = []



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list