name: Build Pre-compiled Libraries
on:
workflow_dispatch:
inputs:
reason:
description: 'Reason for building'
required: false
default: 'Manual library build'
jobs:
build-linux-x86_64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Fortran
uses: fortran-lang/setup-fortran@v1
with:
compiler: gcc
- name: Build library
run: |
gfortran -c -O3 -fPIC fortran/stripack.f90 -o stripack.o
mkdir -p lib/x86_64-unknown-linux-gnu
ar rcs lib/x86_64-unknown-linux-gnu/libstripack.a stripack.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: x86_64-unknown-linux-gnu
path: lib/x86_64-unknown-linux-gnu/
build-linux-aarch64:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- name: Install Fortran
uses: fortran-lang/setup-fortran@v1
with:
compiler: gcc
- name: Build library
run: |
gfortran -c -O3 -fPIC fortran/stripack.f90 -o stripack.o
mkdir -p lib/aarch64-unknown-linux-gnu
ar rcs lib/aarch64-unknown-linux-gnu/libstripack.a stripack.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: aarch-unknown-linux-gnu
path: lib/aarch64-unknown-linux-gnu/
build-macos-aarch64:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Install Fortran
uses: fortran-lang/setup-fortran@v1
with:
compiler: gcc
- name: Build library
run: |
gfortran -c -O3 -fPIC fortran/stripack.f90 -o stripack.o
mkdir -p lib/aarch64-apple-darwin
ar rcs lib/aarch64-apple-darwin/libstripack.a stripack.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: aarch64-apple-darwin
path: lib/aarch64-apple-darwin/
build-windows-gnu:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Fortran
uses: fortran-lang/setup-fortran@v1
with:
compiler: gcc
- name: Build library
run: |
gfortran -c -O3 fortran/stripack.f90 -o stripack.o
mkdir -p lib/x86_64-pc-windows-gnu
ar rcs lib/x86_64-pc-windows-gnu/libstripack.a stripack.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: x86_64-pc-windows-gnu
path: lib/x86_64-pc-windows-gnu/
commit-libs:
needs: [build-linux-x86_64, build-linux-aarch64, build-macos-aarch64, build-windows-gnu]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
merge-multiple: false
- name: Organize libraries
run: |
mkdir -p lib
cp -r artifacts/* lib/
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add lib/
git commit -m "Update pre-built libraries for ${{ github.ref_name }}" || exit 0
git push