--- /dev/null
+[
+ # Mappings for libcxx's internal headers
+ { include: [ "<__fwd/fstream.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/ios.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/istream.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/ostream.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/sstream.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/streambuf.h>", private, "<iosfwd>", public ] },
+ { include: [ "<__fwd/string_view.h>", private, "<string_view>", public ] },
+
+ # Mappings for includes between public headers
+ { include: [ "<ios>", public, "<iostream>", public ] },
+ { include: [ "<streambuf>", public, "<iostream>", public ] },
+ { include: [ "<istream>", public, "<iostream>", public ] },
+ { include: [ "<ostream>", public, "<iostream>", public ] },
+ { include: [ "<iosfwd>", public, "<iostream>", public ] },
+
+ # Missing mappings in include-what-you-use's libcxx.imp
+ { include: ["@<__condition_variable/.*>", private, "<condition_variable>", public ] },
+ { include: ["@<__mutex/.*>", private, "<mutex>", public ] },
+]
--- /dev/null
+name: Stockfish
+on:
+ workflow_call:
+jobs:
+ Analyzers:
+ name: Check includes
+ runs-on: ubuntu-22.04
+ defaults:
+ run:
+ working-directory: Stockfish/src
+ shell: bash
+ steps:
+ - name: Checkout Stockfish
+ uses: actions/checkout@v3
+ with:
+ path: Stockfish
+
+ - name: Checkout include-what-you-use
+ uses: actions/checkout@v3
+ with:
+ repository: include-what-you-use/include-what-you-use
+ ref: f25caa280dc3277c4086ec345ad279a2463fea0f
+ path: include-what-you-use
+
+ - name: Download required linux packages
+ run: |
+ sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main'
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
+ sudo apt update
+ sudo apt install -y libclang-17-dev clang-17 libc++-17-dev
+
+ - name: Set up include-what-you-use
+ run: |
+ mkdir build && cd build
+ cmake -G "Unix Makefiles" -DCMAKE_PREFIX_PATH="/usr/lib/llvm-17" ..
+ sudo make install
+ working-directory: include-what-you-use
+
+ - name: Check include-what-you-use
+ run: include-what-you-use --version
+
+ - name: Check includes
+ run: >
+ make analyze
+ COMP=clang
+ CXX=include-what-you-use
+ CXXFLAGS="-stdlib=libc++ -Xiwyu --comment_style=long -Xiwyu --mapping='${{ github.workspace }}/Stockfish/.github/workflows/libcxx17.imp' -Xiwyu --error"
endif
-.PHONY: help build profile-build strip install clean net objclean profileclean \
- config-sanity \
+.PHONY: help analyze build profile-build strip install clean net \
+ objclean profileclean config-sanity \
icx-profile-use icx-profile-make \
gcc-profile-use gcc-profile-make \
clang-profile-use clang-profile-make FORCE
+analyze: net config-sanity objclean
+ $(MAKE) -k ARCH=$(ARCH) COMP=$(COMP) $(OBJS)
+
build: net config-sanity
$(MAKE) ARCH=$(ARCH) COMP=$(COMP) all