#!/bin/sh # Copyright 2017 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. cd "$(dirname "$0")/.." compile_header() { # test each header for self-sufficiency and idempotency. printf '#include "%s"\n#include "%s"\n' "$1" "$1" | \ c++ --std=c++11 \ -Iinclude/core \ -Iinclude/config \ -Iinclude/android \ -Iinclude/c \ -Iinclude/codec \ -Iinclude/effects \ -Iinclude/gpu \ -Iinclude/gpu/gl \ -Iinclude/pathops \ -Iinclude/ports \ -Iinclude/private \ -Iinclude/svg \ -Iinclude/utils \ -Iinclude/utils/mac \ -Iinclude/views \ -Iinclude/xml \ -Isrc/codec \ -Isrc/core \ -Isrc/effects \ -Isrc/effects/gradients \ -Isrc/fonts \ -Isrc/gpu \ -Isrc/image \ -Isrc/images \ -Isrc/lazy \ -Isrc/opts \ -Isrc/pathops \ -Isrc/ports \ -Isrc/sfnt \ -Isrc/sksl \ -Isrc/utils \ -Isrc/utils/win \ -Igm \ -Itests \ -Itools \ -Itools/debugger \ -Itools/flags \ -Itools/gpu \ -Itools/timer \ -Ithird_party/etc1 \ -Ithird_party/externals/jsoncpp/include \ -Ithird_party/externals/sfntly/cpp/src \ -Ithird_party/externals/zlib \ -Ithird_party/gif \ -o /dev/null -c -x c++ - } FAIL=0 for header in $(git ls-files | grep '\.h$'); do # The following headers don't pass this test for one reason or another. case $header in */osmesa_wrapper.h) continue;; debugger/QT/*) continue;; example/*) continue;; experimental/*) continue;; include/config/*) continue;; include/core/SkPostConfig.h) continue;; include/gpu/vk/*) continue;; include/ports/SkFontMgr_android.h) continue;; include/ports/SkFontMgr_fontconfig.h) continue;; include/ports/SkTypeface_win.h) continue;; include/private/*_impl.h) continue;; include/utils/mac/SkCGUtils.h) continue;; include/views/SkOSWindow_*.h) continue;; src/c/sk_c_from_to.h) continue;; src/codec/SkJpegDecoderMgr.h) continue;; src/codec/SkJpegUtility.h) continue;; src/core/*Template.h) continue;; src/core/SkBitmapProcState_*.h) continue;; src/core/SkFDot6Constants.h) continue;; src/core/SkLinearBitmapPipeline.h) continue;; src/core/SkLinearBitmapPipeline_*.h) continue;; src/core/SkUnPreMultiplyPriv.h) continue;; src/gpu/vk/*.h) continue;; src/images/SkJPEGWriteUtility.h) continue;; src/opts/*_SSE2.h) continue;; src/opts/*_SSSE3.h) continue;; src/opts/*_neon.h) continue;; src/opts/*_sse.h) continue;; src/opts/Sk4px_*.h) continue;; src/ports/*) continue;; src/utils/*_win.h) continue;; src/utils/win/*) continue;; src/views/*) continue;; third_party/*) continue;; tools/fiddle/*) continue;; tools/viewer/*) continue;; esac if ! compile_header "$header"; then echo "FAILURE: $header" FAIL=1 fi done exit $FAIL