diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2016-01-04 08:18:43 -0800 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2016-01-04 08:18:43 -0800 |
commit | ab23045414dbe120fa307b8c07ca6f3f73b3dbe5 (patch) | |
tree | aae0388c675f3a2bd046f0bb1ba90b93b8ef0b24 /templates | |
parent | b121d44dc657967ad97d68aed48c108b416cc57d (diff) |
Add a test that public headers compile as C99
Diffstat (limited to 'templates')
-rw-r--r-- | templates/Makefile.template | 6 | ||||
-rw-r--r-- | templates/test/core/surface/public_headers_must_be_c89.c.template | 58 |
2 files changed, 64 insertions, 0 deletions
diff --git a/templates/Makefile.template b/templates/Makefile.template index 1e9753ab68..435b4079cb 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -1858,6 +1858,12 @@ $(LIBDIR)/$(CONFIG)/lib${dep}.a\ % endfor + % if tgt.language == 'c89': + % for src in tgt.src: + $(OBJDIR)/$(CONFIG)/${os.path.splitext(src)[0]}.o: CFLAGS := <%text>$(CFLAGS)</%text> -std=c89 + % endfor + % endif + % endfor % if not has_no_sources: deps_${tgt.name}: $(${tgt.name.upper()}_OBJS:.o=.dep) diff --git a/templates/test/core/surface/public_headers_must_be_c89.c.template b/templates/test/core/surface/public_headers_must_be_c89.c.template new file mode 100644 index 0000000000..c95be95a32 --- /dev/null +++ b/templates/test/core/surface/public_headers_must_be_c89.c.template @@ -0,0 +1,58 @@ +%YAML 1.2 +--- | + /* + * + * Copyright 2016, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + <% + def is_platform_header(hdr): + for platform_identifier in ['_gcc', '_win32', '_pthread']: + if platform_identifier in hdr: + return True + return False + hdrs = set() + pfx = 'include/' + for lib in libs: + if lib.language != 'c': continue + for hdr in lib.get('public_headers', []): + if is_platform_header(hdr): continue + assert(hdr[0:len(pfx)] == pfx) + hdrs.add(hdr[len(pfx):]) + hdrs = sorted(list(hdrs)) + %>\ + % for hdr in hdrs: + #include <${hdr}> + % endfor + + int main(int argc, char **argv) { + return 0; + } |