summaryrefslogtreecommitdiffstats
path: root/.github/workflows/intel-cmake.yml
blob: 47f16a54c52f56a0f5ca28fbcccfc3fedf203718 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
name: hdf5 dev CMake icx CI

# Controls when the action will run. Triggers the workflow on a call
on:
  workflow_call:
    inputs:
      build_mode:
        description: "release vs. debug build"
        required: true
        type: string

permissions:
  contents: read

jobs:
  # Linux (Ubuntu) w/ gcc + CMake
  #
  Intel_oneapi_linux:
    name: "ubuntu-oneapi ${{ inputs.build_mode }}"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4.1.1

      # Only CMake need ninja-build, but we just install it unilaterally
      # libssl, etc. are needed for the ros3 VFD
      - name: Install Linux Dependencies
        run: |
           sudo apt update
           sudo apt-get install ninja-build doxygen graphviz
           sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev

      - name: add oneAPI to env
        uses: fortran-lang/setup-fortran@v1
        id: setup-fortran
        with:
          compiler: intel
          version: '2023.2'

      - name: CMake Configure with oneapi
        shell: bash
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          mkdir "${{ runner.workspace }}/build"
          cd "${{ runner.workspace }}/build"
          cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja \
          -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
          -DLIBAEC_USE_LOCALCONTENT=OFF \
          -DZLIB_USE_LOCALCONTENT=OFF \
          $GITHUB_WORKSPACE

      # BUILD
      - name: CMake Build
        shell: bash
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
        working-directory: ${{ runner.workspace }}/build

      # RUN TESTS
      - name: CMake Run Tests
        shell: bash
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
        working-directory: ${{ runner.workspace }}/build

  Intel_oneapi_windows:
    name: "windows-oneapi ${{ inputs.build_mode }}"
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4.1.1

      - name: Install Dependencies (Windows)
        run: choco install ninja

      - name: add oneAPI to env
        uses: fortran-lang/setup-fortran@v1
        id: setup-fortran
        with:
          compiler: intel
          version: '2023.2'

      - name: CMake Configure with oneapi
        shell: pwsh
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          mkdir "${{ runner.workspace }}/build"
          Set-Location -Path "${{ runner.workspace }}\\build"
          cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} -DHDF5_BUILD_FORTRAN=ON -DLIBAEC_USE_LOCALCONTENT=OFF -DZLIB_USE_LOCALCONTENT=OFF ${{ github.workspace }}

      # BUILD
      - name: CMake Build
        shell: pwsh
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
        working-directory: ${{ runner.workspace }}/build

      # RUN TESTS
      - name: CMake Run Tests
        shell: pwsh
        env:
          FC: ${{ steps.setup-fortran.outputs.fc }}
          CC: ${{ steps.setup-fortran.outputs.cc }}
          CXX: ${{ steps.setup-fortran.outputs.cxx }}
        run: |
          ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -E tfloatsattrs
        working-directory: ${{ runner.workspace }}/build