blob: 8e5ced47dd2935f47fd5c15e28afe772c6cd8721 [file] [log] [blame]
Hal Canary03a7f5f2017-02-10 09:06:38 -05001#!/bin/sh
2
3# Copyright 2017 Google Inc.
4#
5# Use of this source code is governed by a BSD-style license that can be
6# found in the LICENSE file.
7
8cd "$(dirname "$0")/.."
9
10compile_header() {
11 # test each header for self-sufficiency and idempotency.
12 printf '#include "%s"\n#include "%s"\n' "$1" "$1" | \
13 c++ --std=c++11 \
14 -Iinclude/core \
15 -Iinclude/config \
16 -Iinclude/android \
17 -Iinclude/c \
18 -Iinclude/codec \
19 -Iinclude/effects \
20 -Iinclude/gpu \
21 -Iinclude/gpu/gl \
22 -Iinclude/pathops \
23 -Iinclude/ports \
24 -Iinclude/private \
25 -Iinclude/svg \
26 -Iinclude/utils \
27 -Iinclude/utils/mac \
28 -Iinclude/views \
29 -Iinclude/xml \
30 -Isrc/codec \
31 -Isrc/core \
32 -Isrc/effects \
33 -Isrc/effects/gradients \
34 -Isrc/fonts \
35 -Isrc/gpu \
36 -Isrc/image \
37 -Isrc/images \
38 -Isrc/lazy \
39 -Isrc/opts \
40 -Isrc/pathops \
41 -Isrc/ports \
42 -Isrc/sfnt \
43 -Isrc/sksl \
44 -Isrc/utils \
45 -Isrc/utils/win \
46 -Igm \
47 -Itests \
48 -Itools \
49 -Itools/debugger \
50 -Itools/flags \
51 -Itools/gpu \
52 -Itools/timer \
53 -Ithird_party/etc1 \
54 -Ithird_party/externals/jsoncpp/include \
55 -Ithird_party/externals/sfntly/cpp/src \
56 -Ithird_party/externals/zlib \
57 -Ithird_party/gif \
58 -o /dev/null -c -x c++ -
59}
60
61FAIL=0
62for header in $(git ls-files | grep '\.h$'); do
63 # The following headers don't pass this test for one reason or another.
64 case $header in
65 */osmesa_wrapper.h) continue;;
66 debugger/QT/*) continue;;
67 example/*) continue;;
68 experimental/*) continue;;
69 include/config/*) continue;;
70 include/core/SkPostConfig.h) continue;;
71 include/gpu/vk/*) continue;;
72 include/ports/SkFontMgr_android.h) continue;;
73 include/ports/SkFontMgr_fontconfig.h) continue;;
74 include/ports/SkTypeface_win.h) continue;;
75 include/private/*_impl.h) continue;;
76 include/utils/mac/SkCGUtils.h) continue;;
77 include/views/SkOSWindow_*.h) continue;;
78 src/c/sk_c_from_to.h) continue;;
79 src/codec/SkJpegDecoderMgr.h) continue;;
80 src/codec/SkJpegUtility.h) continue;;
81 src/core/*Template.h) continue;;
82 src/core/SkBitmapProcState_*.h) continue;;
83 src/core/SkFDot6Constants.h) continue;;
84 src/core/SkLinearBitmapPipeline.h) continue;;
85 src/core/SkLinearBitmapPipeline_*.h) continue;;
86 src/core/SkUnPreMultiplyPriv.h) continue;;
87 src/gpu/vk/*.h) continue;;
88 src/images/SkJPEGWriteUtility.h) continue;;
89 src/opts/*_SSE2.h) continue;;
90 src/opts/*_SSSE3.h) continue;;
91 src/opts/*_neon.h) continue;;
92 src/opts/*_sse.h) continue;;
93 src/opts/Sk4px_*.h) continue;;
94 src/ports/*) continue;;
95 src/utils/*_win.h) continue;;
96 src/utils/win/*) continue;;
97 src/views/*) continue;;
98 third_party/*) continue;;
99 tools/fiddle/*) continue;;
100 tools/viewer/*) continue;;
101 esac
102 if ! compile_header "$header"; then
103 echo "FAILURE: $header"
104 FAIL=1
105 fi
106done
107exit $FAIL