services:
  iwyu:
    image: iwyu
    build:
      dockerfile_inline: |
        FROM ran-base
        ENV DEBIAN_FRONTEND=noninteractive
        RUN apt update && \
          apt install -y wget gnupg && \
          wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
          echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" > /etc/apt/sources.list.d/llvm.list && \
          apt update
        RUN apt install -y \
          git \
          cmake \
          build-essential \
          clang-14 \
          libclang-14-dev \
          ninja-build \
          libyaml-cpp-dev
        WORKDIR /iwyu/
        RUN git clone https://github.com/include-what-you-use/include-what-you-use.git
        RUN cd /iwyu/include-what-you-use && \
          git checkout origin/clang_14 && \
          mkdir build && cd build && \
          cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc ../ -G "Unix Makefiles" && \
          make
        RUN apt clean && rm -rf /var/lib/apt/lists/*
    volumes:
      - ../../:/code/
    command:
      bash -c "git config --global --add safe.directory /code && \
        mkdir -p iwyu-bin && cd iwyu-bin && \
        cmake \
        -DCMAKE_C_INCLUDE_WHAT_YOU_USE=/iwyu/include-what-you-use/build/bin/include-what-you-use \
        -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/iwyu/include-what-you-use/build/bin/include-what-you-use \
        /code/ \
        -GNinja && \
        cmake --build . --target $TARGET"
