Expand CI System to Build for Mac x86-64 and Windows x86-64 #1
Workflow file for this run
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
name: Build | |
on: | |
push: | |
branches: ["master"] | |
pull_request: | |
branches: ["master"] | |
# If a Second Commit is Pushed After, and Build is Not Complete, Cancel | |
# Extremely Important with the High Computation Time and Power Required of Arm Linux Builds | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-linux-x86-64: | |
name: Linux x86-64 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
gcc-version: [10, 12] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Install dependencies | |
run: | | |
sudo apt-get update -q -y | |
sudo apt-get install -q -y gcc-${{ matrix.gcc-version }} g++-${{ matrix.gcc-version}} cmake libeigen3-dev libboost-dev | |
- name: Build | |
run: | | |
mkdir build | |
cd build | |
export CXXFLAGS="-std=c++14" # this is important to be able to build with g++ newer than v10 | |
cmake .. -DCMAKE_C_COMPILER=$(which gcc-${{ matrix.gcc-version }}) -DCMAKE_CXX_COMPILER=$(which g++-${{ matrix.gcc-version }}) | |
make -j | |
file iqtree2 | grep x86-64 | |
build-linux-aarch64: | |
name: Linux aarch64 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Build on Linux ARM64 | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: aarch64 | |
distro: ubuntu20.04 | |
githubToken: ${{ github.token }} | |
dockerRunArgs: | | |
--volume "${PWD}:/iqtree2" | |
install: | | |
apt-get update -q -y | |
apt-get install -q -y cmake gcc g++ file libeigen3-dev libboost-dev | |
run: | | |
cd /iqtree2 | |
mkdir build | |
cd build | |
cmake .. | |
make -j | |
file iqtree2 | grep aarch64 | |
build-macos-x86_64: | |
name: Mac OS x86-64 | |
runs-on: macos-13 # Mac OS 14 Does Not Support x86-64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Install dependencies | |
run: brew install make eigen boost libomp | |
- name: Build | |
run: | | |
set -x | |
mkdir build | |
cd build | |
export LDFLAGS="-L/usr/local/opt/libomp/lib" | |
export CPPFLAGS="-I/usr/local/opt/libomp/include" | |
export CXXFLAGS="-I/usr/local/opt/libomp/include" | |
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ | |
gmake -j | |
file iqtree2 | grep x86_64 | |
build-macos-arm: | |
name: Mac OS ARM64 | |
runs-on: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Install dependencies | |
run: brew install make eigen boost libomp | |
- name: Build | |
run: | | |
set -x | |
mkdir build | |
cd build | |
export LDFLAGS="-L/opt/homebrew/opt/libomp/lib" | |
export CPPFLAGS="-I/opt/homebrew/opt/libomp/include" | |
export CXXFLAGS="-I/opt/homebrew/opt/libomp/include" | |
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ | |
gmake -j | |
file iqtree2 | grep arm64 | |
build-windows-x86-64: | |
name: Windows x86-64 | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Install LLVM v14 | |
shell: cmd | |
run: choco install llvm --version=14.0.6 --allow-downgrade | |
- name: Install Boost | |
uses: MarkusJx/[email protected] | |
id: install-boost | |
with: | |
boost_version: 1.84.0 | |
platform_version: 2022 | |
toolset: mingw | |
- name: Install Eigen3 | |
shell: cmd | |
run: choco install eigen | |
- name: Compile | |
shell: cmd | |
run: | | |
if exist build rd /s /q build | |
mkdir build | |
cd build | |
-DBoost_INCLUDE_DIR=${{steps.install-boost.outputs.BOOST_ROOT}}/include\ | |
-DBoost_LIBRARY_DIRS=${{steps.install-boost.outputs.BOOST_ROOT}}/lib | |
cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS=--target=x86_64-pc-windows-gnu -DCMAKE_CXX_FLAGS=--target=x86_64-pc-windows-gnu -DCMAKE_MAKE_PROGRAM=mingw32-make .. | |
make -j | |
env: | |
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} | |
- name: Check File Arch | |
shell: bash | |
run: | | |
cd build | |
file iqtree2.exe | grep x86-64 | |