• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: C/C++ CI
2
3on:
4  push:
5    branches:
6      - master
7      - github_actions
8  pull_request:
9    branches:
10      - master
11      - github_actions
12
13env:
14  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
15  BUILD_TYPE: Release
16
17jobs:
18  build_w_mipp_ubuntu-amd64:
19    runs-on: ubuntu-latest
20
21    steps:
22    - name: check out MIPP
23      uses: actions/checkout@master
24      with:
25          repository: hayguen/MIPP
26          path: ./MIPP
27    - name: cmake configure MIPP
28      run: cmake -S MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$HOME/.local
29    - name: cmake install MIPP headers
30      run: cmake --build MIPP_build --target install && ls -alh $HOME/.local/ && ls -alh $HOME/.local/include/
31
32    - uses: actions/checkout@v2
33    - name: cmake_make_simd_float_double
34      run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_full
35    - name: cmake_make_simd_float
36      run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_DOUBLE=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_float
37    - name: cmake_make_simd_double
38      run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_FLOAT=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_double
39    - name: cmake_make_no-simd_float_double
40      run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_no-simd_full
41    - name: cmake_make_no-simd_scalar_float_double
42      run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_SCALAR_VECT=ON -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
43    - name: compress
44      run: tar zcvf pffft_w_mipp_ubuntu-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
45    - name: 'Upload Artifact'
46      uses: actions/upload-artifact@v2
47      with:
48        name: pffft_ubuntu_builds
49        path: pffft_w_mipp_ubuntu-amd64.tar.gz
50
51  build_ubuntu-amd64:
52    runs-on: ubuntu-latest
53
54    steps:
55    - uses: actions/checkout@v2
56    - name: cmake_make_simd_float_double
57      run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_full
58    - name: cmake_make_simd_float
59      run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_DOUBLE=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_float
60    - name: cmake_make_simd_double
61      run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_FLOAT=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_double
62    - name: cmake_make_no-simd_float_double
63      run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_no-simd_full
64    - name: cmake_make_no-simd_scalar_float_double
65      run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_SCALAR_VECT=ON -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
66    - name: compress
67      run: tar zcvf pffft_ubuntu-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
68    - name: 'Upload Artifact'
69      uses: actions/upload-artifact@v2
70      with:
71        name: pffft_ubuntu_builds
72        path: pffft_ubuntu-amd64.tar.gz
73
74  cross_build_win_from_linux:
75    runs-on: ubuntu-20.04
76
77    steps:
78    - name: prerequisites
79      run: sudo apt -qq update && sudo apt -yqq install gcc-mingw-w64 g++-mingw-w64
80
81    - name: check out MIPP
82      uses: actions/checkout@master
83      with:
84          repository: hayguen/MIPP
85          path: ./MIPP
86    - name: cmake configure MIPP
87      working-directory: ${{runner.workspace}}
88      run: cmake -S pffft/MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$(pwd)
89    - name: cmake install MIPP headers
90      working-directory: ${{runner.workspace}}
91      run: cmake --build MIPP_build --target install
92
93    - uses: actions/checkout@v2
94    - name: build_w32_no-simd
95      working-directory: ${{runner.workspace}}
96      run: cd $GITHUB_WORKSPACE && bash ./cross_build_mingw32.sh no-simd -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF
97    - name: build_w32_simd_full
98      working-directory: ${{runner.workspace}}
99      run: X=$(pwd) && cd $GITHUB_WORKSPACE && bash ./cross_build_mingw32.sh simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=pentium4 -DTARGET_C_ARCH=pentium4 -DMIPP_INCLUDE_DIRS=$X/include/mipp
100
101    - name: build_w64_no-simd
102      working-directory: ${{runner.workspace}}
103      run: cd $GITHUB_WORKSPACE && bash ./cross_build_mingw64.sh no-simd -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF
104    - name: build_w64_simd_full
105      working-directory: ${{runner.workspace}}
106      run: X=$(pwd) && cd $GITHUB_WORKSPACE && bash ./cross_build_mingw64.sh simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=sandybridge -DTARGET_C_ARCH=sandybridge -DMIPP_INCLUDE_DIRS=$X/include/mipp
107
108    - name: compress
109      run: tar zcvf pffft_cross-build-windows-from-linux-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt  build_w32_no-simd build_w32_simd_full build_w64_no-simd build_w64_simd_full
110    - name: 'Upload Artifact'
111      uses: actions/upload-artifact@v2
112      with:
113        name: pffft_windows_from_cross_builds
114        path: pffft_cross-build-windows-from-linux-amd64.tar.gz
115
116
117  build_win_msvc:
118    # The CMake configure and build commands are platform agnostic and should work equally
119    # well on Windows or Mac.  You can convert this to a matrix build if you need
120    # cross-platform coverage.
121    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
122    runs-on: windows-2019
123
124    steps:
125    - name: check out MIPP
126      uses: actions/checkout@master
127      with:
128          repository: hayguen/MIPP
129          path: ./MIPP
130    - name: cmake configure MIPP
131      shell: bash
132      working-directory: ${{runner.workspace}}
133      run: cmake -S pffft/MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$(pwd)
134    - name: cmake install MIPP headers
135      working-directory: ${{runner.workspace}}
136      run: cmake --build MIPP_build --target install
137
138    - uses: actions/checkout@v2
139
140    - name: Configure CMake No-SIMD
141      shell: bash
142      working-directory: ${{runner.workspace}}
143      run: cmake -S $GITHUB_WORKSPACE -B build_no-simd -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DPFFFT_USE_SIMD=OFF -DTARGET_CXX_ARCH=none -DTARGET_C_ARCH=none
144    - name: Build No-SIMD
145      shell: bash
146      working-directory: ${{runner.workspace}}
147      # Execute the build.  You can specify a specific target with "--target <NAME>"
148      run: cmake --build build_no-simd --config $BUILD_TYPE
149
150    - name: Configure CMake SSE2
151      shell: bash
152      working-directory: ${{runner.workspace}}
153      run: cmake -S $GITHUB_WORKSPACE -B build_sse2 -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=SSE2 -DTARGET_C_ARCH=SSE2 -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
154    - name: Build SSE2
155      shell: bash
156      working-directory: ${{runner.workspace}}
157      # Execute the build.  You can specify a specific target with "--target <NAME>"
158      run: cmake --build build_sse2 --config $BUILD_TYPE
159
160    - name: Configure CMake AVX
161      # Use a bash shell so we can use the same syntax for environment variable
162      # access regardless of the host operating system
163      shell: bash
164      working-directory: ${{runner.workspace}}
165      run: cmake -S $GITHUB_WORKSPACE -B build_avx -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=AVX -DTARGET_C_ARCH=AVX -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
166    - name: Build AVX
167      working-directory: ${{runner.workspace}}
168      shell: bash
169      # Execute the build.  You can specify a specific target with "--target <NAME>"
170      run: cmake --build build_avx --config $BUILD_TYPE
171
172    - name: Configure CMake AVX2
173      # Use a bash shell so we can use the same syntax for environment variable
174      # access regardless of the host operating system
175      shell: bash
176      working-directory: ${{runner.workspace}}
177      run: cmake -S $GITHUB_WORKSPACE -B build_avx2 -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=AVX2 -DTARGET_C_ARCH=AVX2 -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
178    - name: Build AVX2
179      working-directory: ${{runner.workspace}}
180      shell: bash
181      # Execute the build.  You can specify a specific target with "--target <NAME>"
182      run: cmake --build build_avx2 --config $BUILD_TYPE
183
184    - name: compress
185      working-directory: ${{runner.workspace}}
186      run: tar zcvf pffft_windows-msvc-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt  build_no-simd build_sse2 build_avx build_avx2
187    - name: 'Upload Artifact'
188      uses: actions/upload-artifact@v2
189      with:
190        name: pffft_windows_msvc_builds
191        path: ${{runner.workspace}}/pffft_windows-msvc-amd64.tar.gz
192
193
194  build_win_mingw:
195    runs-on: windows-2019
196    strategy:
197      matrix:
198        compiler: [gcc]
199        msystem: [MINGW64]
200    defaults:
201      run:
202        shell: msys2 {0}
203    steps:
204    - uses: actions/checkout@v2
205    - uses: msys2/setup-msys2@v2
206      with:
207        msystem: MINGW64
208        install: gcc cmake make
209    - name: Configure cmake
210      run: CC=gcc cmake -DMINGW=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native -S . -B build_mgw64
211    - name: Build
212      run: cmake --build build_mgw64
213
214    - name: compress
215      run: tar zcvf pffft_windows-mingw-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt  build_mgw64
216    - name: 'Upload Artifact'
217      uses: actions/upload-artifact@v2
218      with:
219        name: pffft_windows_mingw_builds
220        path: pffft_windows-mingw-amd64.tar.gz
221
222
223  build_macos11:
224    # copied from build_ubuntu-amd64 with minor renaming
225    runs-on: macos-11
226
227    steps:
228    - uses: actions/checkout@v2
229    - name: cmake_make_simd_float_double
230      run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_full
231    - name: cmake_make_simd_float
232      run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_DOUBLE=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_float
233    - name: cmake_make_simd_double
234      run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_FLOAT=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_double
235    - name: cmake_make_no-simd_float_double
236      run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_no-simd_full
237    - name: cmake_make_no-simd_scalar_float_double
238      run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_SCALAR_VECT=ON -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
239    - name: compress
240      run: tar zcvf pffft_macos-11.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
241    - name: 'Upload Artifact'
242      uses: actions/upload-artifact@v2
243      with:
244        name: pffft_macos_builds
245        path: pffft_macos-11.tar.gz
246
247  build_w_mipp_macos11:
248    # copied from build_w_mipp_ubuntu-amd64 with minor renaming
249    runs-on: macos-11
250
251    steps:
252    - name: check out MIPP
253      uses: actions/checkout@master
254      with:
255          repository: hayguen/MIPP
256          path: ./MIPP
257    - name: cmake configure MIPP
258      run: cmake -S MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$HOME/.local
259    - name: cmake install MIPP headers
260      run: cmake --build MIPP_build --target install && ls -alh $HOME/.local/ && ls -alh $HOME/.local/include/
261
262    - uses: actions/checkout@v2
263    - name: cmake_make_simd_float_double
264      run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_full
265    - name: cmake_make_simd_float
266      run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_DOUBLE=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_float
267    - name: cmake_make_simd_double
268      run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_TYPE_FLOAT=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_simd_double
269    - name: cmake_make_no-simd_float_double
270      run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native  && cmake --build build_no-simd_full
271    - name: cmake_make_no-simd_scalar_float_double
272      run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPFFFT_USE_SIMD=OFF -DPFFFT_USE_SCALAR_VECT=ON -DPFFFT_USE_BENCH_GREEN=OFF -DPFFFT_USE_BENCH_KISS=OFF -DPFFFT_USE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
273    - name: compress
274      run: tar zcvf pffft_w_mipp_macos-11.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
275    - name: 'Upload Artifact'
276      uses: actions/upload-artifact@v2
277      with:
278        name: pffft_macos_builds
279        path: pffft_w_mipp_macos-11.tar.gz
280