diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..b0f1401 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,63 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + name: Build on Linux x86_64 + runs-on: ubuntu-latest + strategy: + matrix: + intrinsics: ["", ".SSE3", ".AVX", ".AVX2"] + type: ["", ".PTHREADS", ".MPI", ".HYBRID", ".QuartetMPI"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y file openmpi-bin libopenmpi-dev + + - name: Build + run: | + set -x + if [[ -f Makefile${{ matrix.intrinsics }}${{ matrix.type }}.gcc ]]; then + make -j -f Makefile${{ matrix.intrinsics }}${{ matrix.type }}.gcc all + file raxmlHPC* | grep x86-64 + fi + + build-aarch64: + name: Build on Linux aarch64 + runs-on: ubuntu-latest + strategy: + matrix: + intrinsics: ["", ".SSE3"] + type: ["", ".PTHREADS", ".MPI", ".HYBRID", ".QuartetMPI"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build + uses: uraimo/run-on-arch-action@v2 + with: + arch: aarch64 + distro: ubuntu20.04 + githubToken: ${{ github.token }} + dockerRunArgs: | + --volume "${PWD}:/raxml" + install: | + apt-get update -q -y + apt-get install -q -y make gcc file openmpi-bin libopenmpi-dev + run: | + set -x + make -j -f Makefile${{ matrix.intrinsics }}${{ matrix.type }}.gcc all + file raxmlHPC* | grep aarch64 diff --git a/Makefile.SSE3.QuartetMPI.gcc b/Makefile.SSE3.QuartetMPI.gcc index 764458d..9e3b5c2 100644 --- a/Makefile.SSE3.QuartetMPI.gcc +++ b/Makefile.SSE3.QuartetMPI.gcc @@ -3,7 +3,14 @@ CC = mpicc -CFLAGS = -D__SIM_SSE3 -msse3 -D_GNU_SOURCE -O2 -fomit-frame-pointer -funroll-loops -D_QUARTET_MPI #-Wall -pedantic -Wunused-parameter -Wredundant-decls -Wreturn-type -Wswitch-default -Wunused-value -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused -Wunused-function -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-parameter -Wunused-value -Wunused-variable -Wformat -Wformat-nonliteral -Wparentheses -Wsequence-point -Wuninitialized -Wundef -Wbad-function-cast +ARCH := $(shell uname -m) +ifeq ($(ARCH), x86_64) +ARCH_CFLAGS=-msse3 +else ifeq ($(ARCH), aarch64) +ARCH_CFLAGS= +endif + +CFLAGS = -D__SIM_SSE3 $(ARCH_CFLAGS) -D_GNU_SOURCE -O2 -fomit-frame-pointer -funroll-loops -D_QUARTET_MPI #-Wall -pedantic -Wunused-parameter -Wredundant-decls -Wreturn-type -Wswitch-default -Wunused-value -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused -Wunused-function -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-parameter -Wunused-value -Wunused-variable -Wformat -Wformat-nonliteral -Wparentheses -Wsequence-point -Wuninitialized -Wundef -Wbad-function-cast LIBRARIES = -lm