Skip to content

minpack compiled with LLVM flang on Ubuntu #38

minpack compiled with LLVM flang on Ubuntu

minpack compiled with LLVM flang on Ubuntu #38

name: LLVM flang on Ubuntu
run-name: minpack compiled with LLVM flang on Ubuntu
on:
push:
paths-ignore:
- "**/*.md"
- "doc/**"
pull_request:
paths-ignore:
- "**/*.md"
- "doc/**"
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
USE_DOWNLOAD: ['OFF']
CMAKE_BUILD_TYPE: ['Release', 'Debug']
BUILD_SHARED_LIBS: ['ON', 'OFF']
BUILD_STATIC_LIBS: ['ON', 'OFF']
TOOLCHAIN:
- {COMPILER_NAME: 'flang', VERSION: '21'}
- {COMPILER_NAME: 'flang', VERSION: '20'}
exclude:
- BUILD_SHARED_LIBS: 'OFF'
BUILD_STATIC_LIBS: 'OFF'
steps:
- name: Restore assets
id: restore-assets
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: assets-cache
key: minpack-assets
enableCrossOsArchive: true
- name: Checkout assets
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
if: ${{ matrix.USE_DOWNLOAD=='OFF' && steps.restore-assets.outputs.cache-hit != 'true' }}
with:
ref: assets-ci-v1
path: assets
- name: Place minpack sources in the cache directory
if: ${{ matrix.USE_DOWNLOAD=='OFF' && steps.restore-assets.outputs.cache-hit != 'true' }}
shell: pwsh
run: |
New-Item "assets-cache" -ItemType Directory | Out-Null;
foreach ($current_file in "disclaimer", "chkder.f", "dogleg.f", "dpmpar.f", "enorm.f", "fdjac1.f", "fdjac2.f", "hybrd1.f", "hybrd.f", "hybrj1.f", "hybrj.f", "lmder1.f", "lmder.f", "lmdif1.f", "lmdif.f", "lmpar.f", "lmstr1.f", "lmstr.f", "qform.f", "qrfac.f", "qrsolv.f", "r1mpyq.f", "r1updt.f", "rwupdt.f")
{
$filePath = Join-Path -Path "assets" -ChildPath $current_file;
Copy-Item -Path $filePath -Destination "assets-cache";
}
- name: Save assets
if: ${{ matrix.USE_DOWNLOAD=='OFF' && steps.restore-assets.outputs.cache-hit != 'true' }}
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: assets-cache
key: minpack-assets
enableCrossOsArchive: true
- name: Checkout repository to minpack-builder directory
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
path: minpack-builder
- name: Place minpack sources in the correct directory for minpack-builder
if: ${{ matrix.USE_DOWNLOAD=='OFF' }}
shell: pwsh
run: |
foreach ($current_file in "disclaimer", "chkder.f", "dogleg.f", "dpmpar.f", "enorm.f", "fdjac1.f", "fdjac2.f", "hybrd1.f", "hybrd.f", "hybrj1.f", "hybrj.f", "lmder1.f", "lmder.f", "lmdif1.f", "lmdif.f", "lmpar.f", "lmstr1.f", "lmstr.f", "qform.f", "qrfac.f", "qrsolv.f", "r1mpyq.f", "r1updt.f", "rwupdt.f")
{
$filePath = Join-Path -Path "assets-cache" -ChildPath $current_file;
Copy-Item -Path $filePath -Destination "minpack-builder";
}
- name: Set shell variables to build and install directories
run: |
echo "BUILDDIR=$RUNNER_TEMP/build" >> $GITHUB_ENV
echo "INSTALLDIR=$RUNNER_TEMP/install-flang" >> $GITHUB_ENV
- name: Install LLVM flang
run: |
codename=$(lsb_release -c -s)
echo "deb http://apt.llvm.org/$codename/ llvm-toolchain-$codename main" > $RUNNER_TEMP/llvm-flang.list
echo "deb-src http://apt.llvm.org/$codename/ llvm-toolchain-$codename main" >> $RUNNER_TEMP/llvm-flang.list
echo "deb http://apt.llvm.org/$codename/ llvm-toolchain-$codename-${{ matrix.TOOLCHAIN.VERSION }} main" >> $RUNNER_TEMP/llvm-flang.list
echo "deb-src http://apt.llvm.org/$codename/ llvm-toolchain-$codename-${{ matrix.TOOLCHAIN.VERSION }} main" >> $RUNNER_TEMP/llvm-flang.list
sudo mv $RUNNER_TEMP/llvm-flang.list /etc/apt/sources.list.d/
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo apt update
sudo apt install -f -y libllvm-${{ matrix.TOOLCHAIN.VERSION }}-ocaml-dev libllvm${{ matrix.TOOLCHAIN.VERSION }} llvm-${{ matrix.TOOLCHAIN.VERSION }} llvm-${{ matrix.TOOLCHAIN.VERSION }}-dev llvm-${{ matrix.TOOLCHAIN.VERSION }}-doc llvm-${{ matrix.TOOLCHAIN.VERSION }}-examples llvm-${{ matrix.TOOLCHAIN.VERSION }}-runtime clang-${{ matrix.TOOLCHAIN.VERSION }} clang-tools-${{ matrix.TOOLCHAIN.VERSION }} clang-${{ matrix.TOOLCHAIN.VERSION }}-doc libclang-common-${{ matrix.TOOLCHAIN.VERSION }}-dev libclang-${{ matrix.TOOLCHAIN.VERSION }}-dev libclang1-${{ matrix.TOOLCHAIN.VERSION }} clang-format-${{ matrix.TOOLCHAIN.VERSION }} python3-clang-${{ matrix.TOOLCHAIN.VERSION }} clangd-${{ matrix.TOOLCHAIN.VERSION }} clang-tidy-${{ matrix.TOOLCHAIN.VERSION }} libclang-rt-${{ matrix.TOOLCHAIN.VERSION }}-dev libmlir-${{ matrix.TOOLCHAIN.VERSION }}-dev mlir-${{ matrix.TOOLCHAIN.VERSION }}-tools flang-${{ matrix.TOOLCHAIN.VERSION }}
echo "FC=${{ matrix.TOOLCHAIN.COMPILER_NAME }}-${{ matrix.TOOLCHAIN.VERSION }}" >> $GITHUB_ENV
- name: Configure the build of minpack
run: cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} -DBUILD_STATIC_LIBS=${{ matrix.BUILD_STATIC_LIBS }} -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DUSE_DOWNLOAD=${{ matrix.USE_DOWNLOAD }} --install-prefix $INSTALLDIR -S minpack-builder -B $BUILDDIR
- name: Build minpack
run: cmake --build $BUILDDIR --config ${{ matrix.CMAKE_BUILD_TYPE }}
- name: Install minpack
run: cmake --install $BUILDDIR --config ${{ matrix.CMAKE_BUILD_TYPE }}