forked from shibatch/sleef
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add CI on Github Actions for Windows
msys2 clang and llvm-mingw cross
- Loading branch information
1 parent
c972d67
commit 144af9b
Showing
2 changed files
with
278 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
|
||
name: "MSYS2 Build & Test" | ||
|
||
on: | ||
# allow direct trigger | ||
workflow_dispatch: | ||
push: | ||
pull_request: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
permissions: | ||
contents: read | ||
|
||
env: | ||
COMMON_CMAKE_FLAGS: > | ||
-DSLEEF_BUILD_DFT=ON | ||
-DSLEEF_BUILD_GNUABI_LIBS=ON | ||
-DSLEEF_BUILD_QUAD=ON | ||
-DSLEEF_BUILD_SCALAR_LIB=ON | ||
-DSLEEF_BUILD_STATIC_TEST_BINS=ON | ||
-DSLEEF_ENFORCE_TESTER=ON | ||
-DSLEEF_ENFORCE_TESTER3=ON | ||
-DSLEEF_SHOW_CONFIG=1 | ||
jobs: | ||
build-msys2: | ||
runs-on: windows-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sys: | ||
- clang64 | ||
#- clangarm64 | ||
#- mingw64 | ||
#- ucrt64 | ||
lto: [lto, nlto] | ||
#exclude: | ||
#- sys: mingw64 | ||
#lto: lto | ||
#- sys: ucrt64 | ||
#lto: lto | ||
defaults: | ||
run: | ||
shell: msys2 {0} | ||
name: build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
steps: | ||
- name: Disable autocrlf | ||
shell: pwsh | ||
run: | | ||
git config --global core.autocrlf false | ||
git config --global core.eol lf | ||
- uses: msys2/setup-msys2@v2 | ||
with: | ||
msystem: ${{ matrix.sys }} | ||
update: true | ||
install: >- | ||
git | ||
pacboy: >- | ||
cc:p | ||
cmake:p | ||
mpfr:p | ||
ninja:p | ||
openssl:p | ||
pkgconf:p | ||
- uses: actions/[email protected] | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Build msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
shell: msys2 {0} | ||
run: | | ||
EXTRA_CMAKE_FLAGS="" | ||
if [[ ${{ matrix.sys }} = "clang64" ]]; then | ||
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DSLEEF_ENFORCE_SSE2=ON -DSLEEF_ENFORCE_SSE4=ON -DSLEEF_ENFORCE_AVX=ON -DSLEEF_ENFORCE_AVX2=ON -DSLEEF_ENFORCE_AVX512F=ON -DSLEEF_ENFORCE_FMA4=ON" | ||
[[ ${{ matrix.lto }} = "lto" ]] && EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DSLEEF_ENABLE_LTO=ON" | ||
elif [[ ${{ matrix.sys }} = "clangarm64" ]]; then | ||
[[ ${{ matrix.lto }} = "lto" ]] && EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DSLEEF_ENABLE_LTO=ON" | ||
elif [[ ${{ matrix.sys }} = "mingw64" || ${{ matrix.sys }} = "ucrt64" ]]; then | ||
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DSLEEF_ENFORCE_SSE2=ON -DSLEEF_ENFORCE_SSE4=ON -DSLEEF_ENFORCE_AVX=ON -DSLEEF_ENFORCE_AVX2=ON -DSLEEF_ENFORCE_AVX512F=ON -DSLEEF_ENFORCE_FMA4=ON" | ||
fi | ||
cmake -S . -B _build-msys2-${{ matrix.sys }}-${{ matrix.lto }} -GNinja \ | ||
${COMMON_CMAKE_FLAGS} \ | ||
${EXTRA_CMAKE_FLAGS} \ | ||
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install-msys2-${{ matrix.sys }}-${{ matrix.lto }} \ | ||
-DOPENSSL_EXTRA_LIBRARIES="-lws2_32 -lcrypt32" | ||
cmake --build _build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
cmake --install _build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
- name: Upload build-msys2-${{ matrix.sys }}-${{ matrix.lto }} artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
path: | | ||
_build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
_install-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
if: always() | ||
|
||
test-msys2: | ||
runs-on: windows-latest | ||
needs: [build-msys2] | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sys: | ||
- clang64 | ||
#- clangarm64 | ||
#- mingw64 | ||
#- ucrt64 | ||
lto: [lto, nlto] | ||
#exclude: | ||
#- sys: mingw64 | ||
#lto: lto | ||
#- sys: ucrt64 | ||
#lto: lto | ||
defaults: | ||
run: | ||
shell: msys2 {0} | ||
name: test-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
steps: | ||
- name: Disable autocrlf | ||
shell: pwsh | ||
run: | | ||
git config --global core.autocrlf false | ||
git config --global core.eol lf | ||
- uses: msys2/setup-msys2@v2 | ||
with: | ||
msystem: ${{ matrix.sys }} | ||
update: true | ||
install: >- | ||
git | ||
pacboy: >- | ||
cc:p | ||
cmake:p | ||
mpfr:p | ||
ninja:p | ||
openssl:p | ||
pkgconf:p | ||
- uses: actions/[email protected] | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Print host CPU info | ||
run: | | ||
wget -qO- https://download.sysinternals.com/files/Coreinfo.zip | bsdtar -xf- | ||
./Coreinfo64.exe -accepteula | ||
- name: Download build-msys2-${{ matrix.sys }}-${{ matrix.lto }} artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
|
||
- name: Test msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
env: | ||
CTEST_OUTPUT_ON_FAILURE: "TRUE" | ||
run: | | ||
cd _build-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
ctest -j$(nproc) | ||
- name: Upload test-msys2-${{ matrix.sys }}-${{ matrix.lto }} artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: test-msys2-${{ matrix.sys }}-${{ matrix.lto }} | ||
path: | | ||
_build-msys2-${{ matrix.sys }}-${{ matrix.lto }}/Testing | ||
if: always() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
|
||
name: "LLVM-MinGW Cross Build" | ||
|
||
on: | ||
# allow direct trigger | ||
workflow_dispatch: | ||
push: | ||
pull_request: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
permissions: | ||
contents: read | ||
|
||
env: | ||
COMMON_CMAKE_FLAGS: > | ||
-DSLEEF_BUILD_DFT=ON | ||
-DSLEEF_BUILD_GNUABI_LIBS=ON | ||
-DSLEEF_BUILD_INLINE_HEADERS=ON | ||
-DSLEEF_BUILD_QUAD=ON | ||
-DSLEEF_BUILD_SCALAR_LIB=ON | ||
-DSLEEF_BUILD_STATIC_TEST_BINS=ON | ||
-DSLEEF_BUILD_TESTS=OFF | ||
-DSLEEF_SHOW_CONFIG=1 | ||
jobs: | ||
build-llvm-mingw: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
arch: [aarch64, x86_64] | ||
lto: [lto, nlto] | ||
|
||
name: build-${{ matrix.arch }}-${{ matrix.lto }} | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Install dependencies | ||
run: | | ||
sudo apt-get update -y -qq | ||
sudo apt-get install -y -qq build-essential curl ninja-build libgmp-dev libmpfr-dev debootstrap 7zip | ||
- name: Download llvm-mingw | ||
uses: robinraju/release-downloader@main | ||
with: | ||
repository: "mstorsjo/llvm-mingw" | ||
latest: true | ||
extract: false | ||
fileName: "llvm-mingw-*-ucrt-ubuntu-*-x86_64.tar.xz" | ||
|
||
- name: Install llvm-mingw | ||
run: | | ||
tar -xaf llvm-mingw-*.tar.xz && rm llvm-mingw-*.tar.xz | ||
mv llvm-mingw-* llvm-mingw | ||
echo ORIGIN_PATH="$PATH" >> $GITHUB_ENV | ||
echo PATH="$PWD/llvm-mingw/bin:$PATH" >> $GITHUB_ENV | ||
- name: Build native | ||
shell: bash -ex -o pipefail {0} | ||
run: | | ||
EXTRA_CMAKE_FLAGS="-DSLEEF_ENFORCE_SSE2=ON -DSLEEF_ENFORCE_SSE4=ON -DSLEEF_ENFORCE_AVX=ON -DSLEEF_ENFORCE_AVX2=ON -DSLEEF_ENFORCE_AVX512F=ON -DSLEEF_ENFORCE_FMA4=ON" | ||
PATH=$ORIGIN_PATH | ||
cmake -S . -B _build-native -GNinja \ | ||
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install-native \ | ||
-DCMAKE_TOOLCHAIN_FILE=$(pwd)/toolchains/native-llvm.cmake \ | ||
${COMMON_CMAKE_FLAGS} \ | ||
${EXTRA_CMAKE_FLAGS} | ||
cmake --build _build-native | ||
cmake --install _build-native | ||
- name: Build llvm-mingw-${{ matrix.arch }}-${{ matrix.lto }} | ||
shell: bash -ex -o pipefail {0} | ||
run: | | ||
EXTRA_CMAKE_FLAGS="" | ||
if [[ ${{ matrix.arch }} = "x86_64" ]]; then | ||
EXTRA_CMAKE_FLAGS="${EXTRA_CMAKE_FLAGS} -DSLEEF_ENFORCE_SSE2=ON -DSLEEF_ENFORCE_SSE4=ON -DSLEEF_ENFORCE_AVX=ON -DSLEEF_ENFORCE_AVX2=ON -DSLEEF_ENFORCE_AVX512F=ON -DSLEEF_ENFORCE_FMA4=ON" | ||
fi | ||
if [[ ${{ matrix.lto }} = "lto" ]]; then | ||
EXTRA_CMAKE_FLAGS="${EXTRA_CMAKE_FLAGS} -DSLEEF_ENABLE_LTO=ON" | ||
fi | ||
cmake -S . -B _build-${{ matrix.arch }}-${{ matrix.lto }} -GNinja \ | ||
${COMMON_CMAKE_FLAGS} \ | ||
${EXTRA_CMAKE_FLAGS} \ | ||
-DCMAKE_C_COMPILER=${{ matrix.arch }}-w64-mingw32-clang \ | ||
-DCMAKE_INSTALL_PREFIX="$(pwd)/_install-${{ matrix.arch }}-${{ matrix.lto }}" \ | ||
-DCMAKE_SYSROOT="$(pwd)/llvm-mingw/${{ matrix.arch }}-w64-mingw32" \ | ||
-DCMAKE_SYSTEM_NAME=Windows \ | ||
-DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \ | ||
-DNATIVE_BUILD_DIR="$(pwd)/_build-native" | ||
cmake --build _build-${{ matrix.arch }}-${{ matrix.lto }} | ||
cmake --install _build-${{ matrix.arch }}-${{ matrix.lto }} | ||
- name: Upload build-${{ matrix.arch }}-${{ matrix.lto }}-llvm-mingw artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: build-${{ matrix.arch }}-${{ matrix.lto }}-llvm-mingw | ||
path: | | ||
_build-${{ matrix.arch }}-${{ matrix.lto }} | ||
_install-${{ matrix.arch }}-${{ matrix.lto }} | ||
if: always() |