#!/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
