1+ name : ' Builds and test CppInterOp'
2+ description : ' This action builds and tests CppInterOp for native platforms'
3+
4+ runs :
5+ steps :
6+ - name : Build and Test/Install CppInterOp
7+ if : runner.os != 'Windows'
8+ run : |
9+ LLVM_DIR="$(pwd)/llvm-project"
10+ LLVM_BUILD_DIR="$(pwd)/llvm-project/build"
11+ cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
12+ if [[ "${cling_on}" == "ON" ]]; then
13+ CLING_DIR="$(pwd)/cling"
14+ CLING_BUILD_DIR="$(pwd)/cling/build"
15+ CPLUS_INCLUDE_PATH="${CLING_DIR}/tools/cling/include:${CLING_BUILD_DIR}/include:${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include"
16+ else
17+ CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include"
18+ fi
19+
20+ export CB_PYTHON_DIR="$PWD/cppyy-backend/python"
21+ export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend"
22+
23+ # Build CppInterOp next to cling and llvm-project.
24+ mkdir build && cd build
25+ export CPPINTEROP_BUILD_DIR=$PWD
26+ cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
27+ if [[ "${cling_on}" == "ON" ]]; then
28+ cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
29+ -DCPPINTEROP_USE_CLING=ON \
30+ -DCPPINTEROP_USE_REPL=OFF \
31+ -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \
32+ -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \
33+ -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \
34+ -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \
35+ -DBUILD_SHARED_LIBS=ON \
36+ -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \
37+ -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \
38+ -DLLVM_ENABLE_WERROR=On \
39+ ../
40+ else
41+ cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
42+ -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \
43+ -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \
44+ -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \
45+ -DBUILD_SHARED_LIBS=ON \
46+ -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \
47+ -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \
48+ -DLLVM_ENABLE_WERROR=On \
49+ ../
50+ fi
51+ docs_on=$(echo "${{ matrix.documentation }}" | tr '[:lower:]' '[:upper:]')
52+ if [[ "${docs_on}" == "ON" ]]; then
53+ cmake --build . --target doxygen-cppinterop --parallel ${{ env.ncpus }}
54+ cmake --build . --target sphinx-cppinterop --parallel ${{ env.ncpus }}
55+ else
56+ cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }}
57+ if [[ "${{ matrix.os }}" == "macos"* ]]; then
58+ valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 unittests/CppInterOp/CppInterOpTests/unittests/bin/${{ env.BUILD_TYPE }}/CppInterOpTests
59+ endif
60+ fi
61+ echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV
62+ echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV
63+ echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV
64+ echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV
65+ echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV
66+
67+ - name : Build and Test/Install CppInterOp on Windows systems
68+ if : runner.os == 'Windows'
69+ run : |
70+ $env:PWD_DIR= $PWD.Path
71+
72+ $env:LLVM_DIR="$env:PWD_DIR\llvm-project"
73+ echo "LLVM_DIR=$env:LLVM_DIR"
74+ echo "LLVM_DIR=$env:LLVM_DIR" >> $env:GITHUB_ENV
75+
76+ $env:LLVM_BUILD_DIR="$env:PWD_DIR\llvm-project\build"
77+ echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR"
78+ echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" >> $env:GITHUB_ENV
79+
80+ if ( "${{ matrix.cling }}" -imatch "On" )
81+ {
82+ $env:CLING_DIR="$env:PWD_DIR\cling"
83+ echo "CLING_DIR=$env:CLING_DIR"
84+ echo "CLING_DIR=$env:CLING_DIR" >> $env:GITHUB_ENV
85+
86+ $env:CLING_BUILD_DIR="$env:PWD_DIR\cling\build"
87+ echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR"
88+ echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" >> $env:GITHUB_ENV
89+
90+ $env:CPLUS_INCLUDE_PATH="$env:CLING_DIR\tools\cling\include;$env:CLING_BUILD_DIR\include;$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;"
91+ echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH"
92+ echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV
93+ }
94+ else
95+ {
96+ $env:CPLUS_INCLUDE_PATH="$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;"
97+ echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH"
98+ echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV
99+ }
100+
101+ $env:CB_PYTHON_DIR="$env:PWD_DIR\cppyy-backend\python"
102+ echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR"
103+ echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR" >> $env:GITHUB_ENV
104+
105+ $env:CPPINTEROP_DIR="$env:CB_PYTHON_DIR\cppyy-backend"
106+ echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR"
107+ echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR" >> $env:GITHUB_ENV
108+
109+ # Build CppInterOp next to cling and llvm-project.
110+ mkdir build
111+ cd build
112+ $env:CPPINTEROP_BUILD_DIR="$env:PWD_DIR"
113+ echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR"
114+ echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" >> $env:GITHUB_ENV
115+ if ( "${{ matrix.cling }}" -imatch "On" )
116+ {
117+ cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
118+ -DCPPINTEROP_USE_CLING=ON `
119+ -DCPPINTEROP_USE_REPL=OFF `
120+ -DCling_DIR="$env:LLVM_BUILD_DIR\tools\cling" `
121+ -DLLVM_DIR="$env:LLVM_BUILD_DIR" `
122+ -DLLVM_ENABLE_WERROR=On `
123+ -DClang_DIR="$env:LLVM_BUILD_DIR" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\
124+ }
125+ else
126+ {
127+ cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
128+ -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" `
129+ -DLLVM_ENABLE_WERROR=On `
130+ -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\
131+ cmake --build . --config ${{ env.BUILD_TYPE }} --target googletest --parallel ${{ env.ncpus }}
132+ }
133+ cmake --build . --config ${{ env.BUILD_TYPE }} --target check-cppinterop --parallel ${{ env.ncpus }}
0 commit comments