diff --git a/.github/actions/Build_and_Test_CppInterOp/action.yml b/.github/actions/Build_and_Test_CppInterOp/action.yml new file mode 100644 index 000000000..ee3ef0652 --- /dev/null +++ b/.github/actions/Build_and_Test_CppInterOp/action.yml @@ -0,0 +1,137 @@ +name: 'Builds and test CppInterOp' +description: 'This action builds and tests CppInterOp for native platforms' + +runs: + using: composite + steps: + - name: Build and Test/Install CppInterOp + if: runner.os != 'Windows' + shell: bash + run: | + LLVM_DIR="$(pwd)/llvm-project" + LLVM_BUILD_DIR="$(pwd)/llvm-project/build" + cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') + if [[ "${cling_on}" == "ON" ]]; then + CLING_DIR="$(pwd)/cling" + CLING_BUILD_DIR="$(pwd)/cling/build" + 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" + else + CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" + fi + + export CB_PYTHON_DIR="$PWD/cppyy-backend/python" + export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend" + + # Build CppInterOp next to cling and llvm-project. + mkdir build && cd build + export CPPINTEROP_BUILD_DIR=$PWD + cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') + if [[ "${cling_on}" == "ON" ]]; then + cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + -DCPPINTEROP_USE_CLING=ON \ + -DCPPINTEROP_USE_REPL=OFF \ + -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ + -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ + -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ + -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ + -DBUILD_SHARED_LIBS=ON \ + -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ + -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ + -DLLVM_ENABLE_WERROR=On \ + ../ + else + cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ + -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ + -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ + -DBUILD_SHARED_LIBS=ON \ + -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ + -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ + -DLLVM_ENABLE_WERROR=On \ + ../ + fi + docs_on=$(echo "${{ matrix.documentation }}" | tr '[:lower:]' '[:upper:]') + if [[ "${docs_on}" == "ON" ]]; then + cmake --build . --target doxygen-cppinterop --parallel ${{ env.ncpus }} + cmake --build . --target sphinx-cppinterop --parallel ${{ env.ncpus }} + else + cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }} + os="${{ matrix.os }}" + if [[ "${os}" != "macos"* ]]; then + valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 unittests/CppInterOp/CppInterOpTests/unittests/bin/${{ env.BUILD_TYPE }}/CppInterOpTests + fi + fi + echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV + echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV + echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV + echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV + echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + + - name: Build and Test/Install CppInterOp on Windows systems + if: runner.os == 'Windows' + shell: powershell + run: | + $env:PWD_DIR= $PWD.Path + + $env:LLVM_DIR="$env:PWD_DIR\llvm-project" + echo "LLVM_DIR=$env:LLVM_DIR" + echo "LLVM_DIR=$env:LLVM_DIR" >> $env:GITHUB_ENV + + $env:LLVM_BUILD_DIR="$env:PWD_DIR\llvm-project\build" + echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" + echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" >> $env:GITHUB_ENV + + if ( "${{ matrix.cling }}" -imatch "On" ) + { + $env:CLING_DIR="$env:PWD_DIR\cling" + echo "CLING_DIR=$env:CLING_DIR" + echo "CLING_DIR=$env:CLING_DIR" >> $env:GITHUB_ENV + + $env:CLING_BUILD_DIR="$env:PWD_DIR\cling\build" + echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" + echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" >> $env:GITHUB_ENV + + $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;" + echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" + echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV + } + else + { + $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;" + echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" + echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV + } + + $env:CB_PYTHON_DIR="$env:PWD_DIR\cppyy-backend\python" + echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR" + echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR" >> $env:GITHUB_ENV + + $env:CPPINTEROP_DIR="$env:CB_PYTHON_DIR\cppyy-backend" + echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR" + echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR" >> $env:GITHUB_ENV + + # Build CppInterOp next to cling and llvm-project. + mkdir build + cd build + $env:CPPINTEROP_BUILD_DIR="$env:PWD_DIR" + echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" + echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" >> $env:GITHUB_ENV + if ( "${{ matrix.cling }}" -imatch "On" ) + { + cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` + -DCPPINTEROP_USE_CLING=ON ` + -DCPPINTEROP_USE_REPL=OFF ` + -DCling_DIR="$env:LLVM_BUILD_DIR\tools\cling" ` + -DLLVM_DIR="$env:LLVM_BUILD_DIR" ` + -DLLVM_ENABLE_WERROR=On ` + -DClang_DIR="$env:LLVM_BUILD_DIR" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\ + } + else + { + cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` + -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` + -DLLVM_ENABLE_WERROR=On ` + -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\ + cmake --build . --config ${{ env.BUILD_TYPE }} --target googletest --parallel ${{ env.ncpus }} + } + cmake --build . --config ${{ env.BUILD_TYPE }} --target check-cppinterop --parallel ${{ env.ncpus }} diff --git a/.github/workflows/MacOS-arm.yml b/.github/workflows/MacOS-arm.yml index 399960839..ec8b3a7d9 100644 --- a/.github/workflows/MacOS-arm.yml +++ b/.github/workflows/MacOS-arm.yml @@ -374,59 +374,7 @@ jobs: ${{ matrix.cling=='On' && 'cling' || '' }} key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} - - name: Build and Test/Install CppInterOp - run: | - LLVM_DIR="$(pwd)/llvm-project" - LLVM_BUILD_DIR="$(pwd)/llvm-project/build" - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - CLING_DIR="$(pwd)/cling" - CLING_BUILD_DIR="$(pwd)/cling/build" - 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" - else - CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" - fi - - export CB_PYTHON_DIR="$PWD/cppyy-backend/python" - export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend" - - # Build CppInterOp next to cling and llvm-project. - mkdir build && cd build - export CPPINTEROP_BUILD_DIR=$PWD - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_USE_CLING=ON \ - -DCPPINTEROP_USE_REPL=OFF \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - else - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - fi - cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }} - cd .. - # We need CB_PYTHON_DIR later - echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV - # We need CPPINTEROP_DIR, LLVM_BUILD_DIR and CPLUS_INCLUDE_PATH later - echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV - echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV - echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV - echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + - uses: ./.github/actions/Build_and_Test_CppInterOp - name: Build and Install cppyy-backend if: ${{ matrix.cppyy == 'On' }} diff --git a/.github/workflows/MacOS.yml b/.github/workflows/MacOS.yml index 5fa241556..e246b4a87 100644 --- a/.github/workflows/MacOS.yml +++ b/.github/workflows/MacOS.yml @@ -343,59 +343,7 @@ jobs: ${{ matrix.cling=='On' && 'cling' || '' }} key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} - - name: Build and Test/Install CppInterOp - run: | - LLVM_DIR="$(pwd)/llvm-project" - LLVM_BUILD_DIR="$(pwd)/llvm-project/build" - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - CLING_DIR="$(pwd)/cling" - CLING_BUILD_DIR="$(pwd)/cling/build" - 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" - else - CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" - fi - - export CB_PYTHON_DIR="$PWD/cppyy-backend/python" - export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend" - - # Build CppInterOp next to cling and llvm-project. - mkdir build && cd build - export CPPINTEROP_BUILD_DIR=$PWD - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_USE_CLING=ON \ - -DCPPINTEROP_USE_REPL=OFF \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - else - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - fi - cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }} - cd .. - # We need CB_PYTHON_DIR later - echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV - # We need CPPINTEROP_DIR, LLVM_BUILD_DIR and CPLUS_INCLUDE_PATH later - echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV - echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV - echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV - echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + - uses: ./.github/actions/Build_and_Test_CppInterOp - name: Build and Install cppyy-backend if: ${{ matrix.cppyy == 'On' }} diff --git a/.github/workflows/Ubuntu-arm.yml b/.github/workflows/Ubuntu-arm.yml index 37358eb94..1843161c6 100644 --- a/.github/workflows/Ubuntu-arm.yml +++ b/.github/workflows/Ubuntu-arm.yml @@ -427,66 +427,7 @@ jobs: echo "CODE_COVERAGE=1" >> $GITHUB_ENV echo "BUILD_TYPE=Debug" >> $GITHUB_ENV - - name: Build and Test/Install CppInterOp - run: | - LLVM_DIR="$(pwd)/llvm-project" - LLVM_BUILD_DIR="$(pwd)/llvm-project/build" - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - CLING_DIR="$(pwd)/cling" - CLING_BUILD_DIR="$(pwd)/cling/build" - 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" - else - CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" - fi - - export CB_PYTHON_DIR="$PWD/cppyy-backend/python" - export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend" - - # Build CppInterOp next to cling and llvm-project. - mkdir build && cd build - export CPPINTEROP_BUILD_DIR=$PWD - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_USE_CLING=ON \ - -DCPPINTEROP_USE_REPL=OFF \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - else - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - fi - docs_on=$(echo "${{ matrix.documentation }}" | tr '[:lower:]' '[:upper:]') - if [[ "${docs_on}" == "ON" ]]; then - cmake --build . --target doxygen-cppinterop --parallel ${{ env.ncpus }} - cmake --build . --target sphinx-cppinterop --parallel ${{ env.ncpus }} - else - cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }} - valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 unittests/CppInterOp/CppInterOpTests/unittests/bin/${{ env.BUILD_TYPE }}/CppInterOpTests - fi - cd .. - # We need CB_PYTHON_DIR later - echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV - # We need CPPINTEROP_DIR, LLVM_BUILD_DIR and CPLUS_INCLUDE_PATH later - echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV - echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV - echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV - echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + - uses: ./.github/actions/Build_and_Test_CppInterOp - name: Prepare code coverage report if: ${{ success() && (matrix.coverage == true) }} diff --git a/.github/workflows/Ubuntu.yml b/.github/workflows/Ubuntu.yml index c6074bd94..d5e774d12 100644 --- a/.github/workflows/Ubuntu.yml +++ b/.github/workflows/Ubuntu.yml @@ -435,66 +435,7 @@ jobs: echo "CODE_COVERAGE=1" >> $GITHUB_ENV echo "BUILD_TYPE=Debug" >> $GITHUB_ENV - - name: Build and Test/Install CppInterOp - run: | - LLVM_DIR="$(pwd)/llvm-project" - LLVM_BUILD_DIR="$(pwd)/llvm-project/build" - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - CLING_DIR="$(pwd)/cling" - CLING_BUILD_DIR="$(pwd)/cling/build" - 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" - else - CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" - fi - - export CB_PYTHON_DIR="$PWD/cppyy-backend/python" - export CPPINTEROP_DIR="$CB_PYTHON_DIR/cppyy_backend" - - # Build CppInterOp next to cling and llvm-project. - mkdir build && cd build - export CPPINTEROP_BUILD_DIR=$PWD - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_USE_CLING=ON \ - -DCPPINTEROP_USE_REPL=OFF \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - else - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_INCLUDE_DOCS=${{ matrix.documentation }} \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DBUILD_SHARED_LIBS=ON \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \ - -DLLVM_ENABLE_WERROR=On \ - ../ - fi - docs_on=$(echo "${{ matrix.documentation }}" | tr '[:lower:]' '[:upper:]') - if [[ "${docs_on}" == "ON" ]]; then - cmake --build . --target doxygen-cppinterop --parallel ${{ env.ncpus }} - cmake --build . --target sphinx-cppinterop --parallel ${{ env.ncpus }} - else - cmake --build . --target check-cppinterop --parallel ${{ env.ncpus }} - valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 unittests/CppInterOp/CppInterOpTests/unittests/bin/${{ env.BUILD_TYPE }}/CppInterOpTests - fi - cd .. - # We need CB_PYTHON_DIR later - echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV - # We need CPPINTEROP_DIR, LLVM_BUILD_DIR and CPLUS_INCLUDE_PATH later - echo "CPPINTEROP_BUILD_DIR=$CPPINTEROP_BUILD_DIR" >> $GITHUB_ENV - echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV - echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV - echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + - uses: ./.github/actions/Build_and_Test_CppInterOp - name: Prepare code coverage report if: ${{ success() && (matrix.coverage == true) }} diff --git a/.github/workflows/Windows.yml b/.github/workflows/Windows.yml index ebc464b58..976885cb9 100644 --- a/.github/workflows/Windows.yml +++ b/.github/workflows/Windows.yml @@ -306,73 +306,7 @@ jobs: ${{ matrix.cling=='On' && 'cling' || '' }} key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} - - name: Build and Test/Install CppInterOp on Windows systems - run: | - #until https://github.com/compiler-research/CppInterOp/issues/188 is solved - $env:PWD_DIR= $PWD.Path - - $env:LLVM_DIR="$env:PWD_DIR\llvm-project" - echo "LLVM_DIR=$env:LLVM_DIR" - echo "LLVM_DIR=$env:LLVM_DIR" >> $env:GITHUB_ENV - - $env:LLVM_BUILD_DIR="$env:PWD_DIR\llvm-project\build" - echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" - echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" >> $env:GITHUB_ENV - - if ( "${{ matrix.cling }}" -imatch "On" ) - { - $env:CLING_DIR="$env:PWD_DIR\cling" - echo "CLING_DIR=$env:CLING_DIR" - echo "CLING_DIR=$env:CLING_DIR" >> $env:GITHUB_ENV - - $env:CLING_BUILD_DIR="$env:PWD_DIR\cling\build" - echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" - echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" >> $env:GITHUB_ENV - - $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;" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV - } - else - { - $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;" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV - } - - $env:CB_PYTHON_DIR="$env:PWD_DIR\cppyy-backend\python" - echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR" - echo "CB_PYTHON_DIR=$env:CB_PYTHON_DIR" >> $env:GITHUB_ENV - - $env:CPPINTEROP_DIR="$env:CB_PYTHON_DIR\cppyy-backend" - echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR" - echo "CPPINTEROP_DIR=$env:CPPINTEROP_DIR" >> $env:GITHUB_ENV - - # Build CppInterOp next to cling and llvm-project. - mkdir build - cd build - $env:CPPINTEROP_BUILD_DIR="$env:PWD_DIR" - echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" - echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" >> $env:GITHUB_ENV - if ( "${{ matrix.cling }}" -imatch "On" ) - { - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` - -DCPPINTEROP_USE_CLING=ON ` - -DCPPINTEROP_USE_REPL=OFF ` - -DCling_DIR="$env:LLVM_BUILD_DIR\tools\cling" ` - -DLLVM_DIR="$env:LLVM_BUILD_DIR" ` - -DLLVM_ENABLE_WERROR=On ` - -DClang_DIR="$env:LLVM_BUILD_DIR" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\ - } - else - { - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` - -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` - -DLLVM_ENABLE_WERROR=On ` - -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} -DCMAKE_INSTALL_PREFIX="$env:CPPINTEROP_DIR" ..\ - cmake --build . --config ${{ env.BUILD_TYPE }} --target googletest --parallel ${{ env.ncpus }} - } - cmake --build . --config ${{ env.BUILD_TYPE }} --target check-cppinterop --parallel ${{ env.ncpus }} + - uses: ./.github/actions/Build_and_Test_CppInterOp - name: Setup tmate session if: ${{ failure() && runner.debug }}