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