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